语言模型的自洽性思维链推理技术

news2024/9/23 13:21:52

论文标题:Self-Consistency Improves Chain of Thought Reasoning in Language Models

论文链接:https://arxiv.org/abs/2203.11171

论文来源:ICLR 2023

一、概述

尽管语言模型在一系列NLP任务中展现出了显著的成功,但它们在推理能力方面仍然面临一些限制,这种限制不能仅仅通过增加模型规模来克服。为了解决这些问题,Wei等人(2022)提出了思维链提示(chain-of-thought prompting),即提示语言模型生成一系列模拟人在解决任务时可能使用的推理过程的短句。例如,给出问题“If there are 3  cars in the parking lot and 2 more cars arrive, how many cars are in the parking lot?”时,不直接回答“5”,而是提示语言模型以完整的思维链回答:“There are 3 cars in the parking lot already. 2 more arrive. Now there are 3 + 2 = 5 cars. The answer is 5.”。实验结果显示思维链提示显著提高了模型在各种多步推理任务中的性能。

在本文中,我们引入了一种新的解码策略,称为自洽性(self-consistency),以替代思维链提示中使用的贪婪解码(greedy decoding)策略,这进一步显著提高了语言模型的推理性能。自洽性利用了一个直觉,即对于复杂的推理任务,通常可以通过多个推理路径达到正确的答案。对一个问题需要进行更多的深思熟虑和分析,可以得到答案的推理路径的多样性就越大。

下图用一个例子说明了自洽性方法。我们首先用思维链提示语言模型,然后我们不是贪婪地解码最优推理路径,而是提出了一种“采样和边际化”(sample-and-marginalize)解码程序:我们首先从语言模型的Decoder中采样,生成一套多样的推理路径;每个推理路径可能会导致不同的最终答案,因此我们通过边际化采样的推理路径来确定最优答案,找出在最终答案集合中最一致(consistent)的答案。这种方法类似于人类的经验,即如果多种不同的思考方式都能得出相同的答案,人们对最终答案的正确性就会更有信心。与其他解码方法相比,自洽性避免了贪婪解码中困扰的重复性(repetitiveness)和局部最优性(local-optimality),同时减轻了单一采样生成的随机性。

5c39428a07d9d407a52d02dbe1ddb538.jpeg
自洽思维链

自洽性思维链比之前那些要么训练额外的verifier,要么在给定额外人类标注以提高生成质量的情况下训练一个re-ranker的方法要简单得多。相反,自洽性完全是无监督的,可以直接与预训练的语言模型一起使用,无需额外的人类标注,也避免了任何额外的训练,辅助模型或微调。自洽性也不同于典型的集成(ensemble)方法,其中训练多个模型并聚合每个模型的输出,它更像是一个作用在单一语言模型之上的“自我集成”。

我们在广泛的算术和常识推理任务上评估了自洽性思维链,这些任务涵盖了四种不同规模的语言模型:UL2-20B、GPT-3-175B、LaMDA-137B和PaLM-540B。在所有四种语言模型上,自洽性在所有任务上都显著提高了思维链提示的效果。在额外的实验中,我们展示了自洽性可以在一些添加思维链可能会降低与标准提示相比的性能的NLP任务上鲁棒地提升性能。我们还展示了自洽性显著优于sample-and-rank,beam search以及基于集成的方法,并且对采样策略和不完美的提示具有鲁棒性。

二、方法

人类的一个显著特点是思考方式各异。很自然地,我们会假设在需要深思熟虑的任务中,可能有几种方法来解决问题。我们提出,这样的过程可以通过从语言模型的Decoder中进行抽样在语言模型中进行模拟。例如,如上图所示,一个模型可以针对数学问题生成几个可能的回答,所有的回答都能得出同样正确的答案(输出1和3)。由于语言模型并不是完美的推理者,模型也可能产生一个不正确的推理路径,或者在推理步骤中出现错误(例如,在输出2中),但是这样的解决方案不太可能得出相同的答案。也就是说,我们假设,即使正确推理过程是多样的(diverse),它们在最终答案上的一致性也往往大于错误的过程。

我们利用这个直觉,提出了以下的自洽性方法。首先,用一组手工编写的思维链示例提示语言模型。接下来,我们从语言模型的Decoder中抽取一组候选输出,生成一组多样的候选推理路径。自洽性与大多数现有的抽样算法兼容,包括温度抽样、top-k抽样,以及核采样。最后,我们通过边际化出采样的推理路径并聚合答案,选择在生成答案中最一致的答案。

更详细地说,假设生成的答案来自一个固定的答案集合,,其中索引的是从Decoder采样的个候选输出。给定一个提示和一个问题,自洽性引入了一个额外的隐变量,这是一个代表第个输出中推理路径的token序列,然后将的生成耦合在一起,其中,即,推理路径是可选的,只用于到达最终答案。例如,考虑上图中的输出3:前几句“She eats 3 for breakfast ... So  she has 9 eggs * $2 =$18.”构成了,而最后一句中的答案18,“The answer is $18”,即是。在从模型的Decoder中采样多个后,自洽性对进行边际化(边际化的意思就是说不管推理路径了,只看最终答案),并且在上应用多数投票,即将作为最终答案,或者我们定义为在最终答案集中最“一致”的答案。

在下表中,我们使用不同的答案聚合策略显示了一组推理任务的测试准确率。除了多数投票外,在聚合答案时,还可以通过为每个赋予权重。注意,要计算,我们可以给定(prompt,question)条件下生成的未归一化概率,也可以通过输出长度来归一化条件概率,也就是:

❝ ❞

其中,是在前一个token的条件下生成中第个token的对数概率,是中的总token数。下表中显示了,“unweighted sum”,即,直接对进行多数投票,得出的准确率与使用“normalized weighted sum”进行聚合的准确率非常相似。我们仔细查看了模型的输出概率,发现这是因为对于每个,归一化的条件概率彼此非常接近,即,语言模型认为这些生成是“同样可能的”。此外,当聚合答案时,下表中的结果显示,“normalized weighted sum”(即上面的等式)比对应的“unnormalized weighted sum”产生的准确率要高得多。为了完整起见,我们还在下表中报告了采取“weighted avg”的结果,即,每个得分为其weighted sum除以,这导致了性能大大降低。

4551a1133c7531b75e468f074207d0c3.jpeg
聚合策略

自洽性探索了在开放式文本生成和固定答案的最优文本生成之间的一个有趣的空间。推理任务通常有固定的答案,这就是为什么研究者们通常考虑贪婪解码方法。然而,我们发现,即使期望的答案是固定的,在推理过程中引入多样性也可以带来很大的益处;因此,我们利用常用于开放式文本生成的采样来实现这个目标。需要注意的是,自洽性只能应用于最终答案来自固定答案集的问题,但原则上,如果可以在多个生成之间定义一种一致性的合适的度量,比如,两个答案是否一致或者相互矛盾,那么这种方法就可以扩展到开放式文本生成问题。

三、实验

  1. 主要结果

9419122a9927c9bd7952108f284b33b9.jpeg
实验
cbb5d606a27eed62e891217db5ddff2a.jpeg
实验
06ae8efe7e403d4a4e45cfcb7b4f1318.jpeg
实验
b8c75266ce5e874f117299a59ec5e867.jpeg
实验
  1. 思维链会造成性能下降的实验

9d976cd233052952fb422cf38696c1ab.jpeg
实验
  1. 与其他先用方法的对比

0d1934423286c9aa4155f8ce40538506.jpeg
实验
070a169e0470cd8ace0dd3189fb89f3b.jpeg
实验
e12565a12081106c24ac6aa87aebc2e0.jpeg
实验
  1. 其他研究

1c61f959b726066d1caaa9ae31601e39.jpeg
实验
65cc4751ba0b63159aa168008727507c.jpeg
实验
3615e11b12df28160ff64ca782cf702d.jpeg
实验

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/758892.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

django使用channels实现webSocket启动失败

问题描述 使用channels启动ASGI结果却是普通启动,如下: Watching for file changes with StatReloader Performing system checks...System check identified no issues (0 silenced). July 15, 2023 - 18:23:49 Django version 4.2, using settings s…

chatGPT 和AlphaGo下围棋,谁赢?垂域大模型有戏么?

这边来的少,但发个文章通报下近况,长期做AI产研、投融资工作后,后续主要在企业数字化与大模型结合的方向上,后续进展还是请关注:琢磨事。 上一篇提到最终大模型的格局很可能是有一个偏通用大模型,比如chatG…

Linux系统编程——文件(ioctl 函数)

文章目录 概念用户空间 ioctl驱动程序 ioctlioctl 在用户与驱动之间的协议——命令码实例分析ioctl-test.hioctl-test-driver.cioctl-test.c 概念 ioctl 是设备驱动程序中设备控制接口函数,一个字符设备驱动通常会实现设备打开、关闭、读、写等功能,在一…

GitOps自问自答

GitOps自提出以来受到很多关注,被认为是云原生最佳实践之一。这篇文章回答了关于GitOps的常见问题,帮助感兴趣的相关人员更好理解这一实践。原文: GitOps[1] 自从Weaveworks在2017年提出GitOps以来,已经在Twitter和KubeCon上引发了不少争议。…

Qt实现思维导图功能6『鹰眼视图』

前文链接:Qt实现思维导图功能5『纵向分布模式』 百度网盘体验地址: 链接:https://pan.baidu.com/s/1xotlkSPfG7E_37y_XPfDng 提取码:5li7效果图 1、动态演示效果: 思维导图-鹰眼视图 2、静态展示图片: 新…

Econ3107-econ5116-小组作业知识点精讲

对本文有疑问可以加微信 Tutor_0914联系。也可以访问我的个人辅导网站 : tutoryou 基本概念 option期权 期权(Option),是一种选择权,指是一种能在未来某特定时间以特定价格买入或卖出一定数量的某种特定商品的权利…

Linux 知识学习总结

常用命名 du 作用:显示指定目录或文件所占磁盘空间大小。 示例: du -h 以K,M,G为单位自动适配显示 lxlx-virtual-machine:~/test/video$ du -h 1.2G du -m 指定以1MB为单位显示 lxlx-virtual-machine:~/test/video$ du -m 12…

Python潮流周刊#11:如何使用 Golang 运行 Python 代码?

你好,我是猫哥。这里每周分享优质的 Python 及通用技术内容,大部分为英文,已在小标题注明。(标题取自其中一则分享,不代表全部内容都是该主题,特此声明。) 本周刊精心筛选国内外的 250 信息源&a…

​注意力机制中的掩码详解

注意力机制的掩码允许我们发送不同长度的批次数据一次性的发送到transformer中。在代码中是通过将所有序列填充到相同的长度,然后使用“attention_mask”张量来识别哪些令牌是填充的来做到这一点,本文将详细介绍这个掩码的原理和机制。 我们先介绍下如果…

(简单)设计哈希集合 Java

为了实现哈希集合这一数据结构,有以下几个关键问题需要解决: 哈希函数:能够将集合中任意可能的元素映射到一个固定范围的整数值,并将该元素存储到整数值对应的地址上冲突处理:由于不同元素可能映射到相同的整数值&…

SpringBoot读取配置的方式

读取配置的几种方式 Spring Boot提供了多种方式来读取配置,下面是其中几种常用的方式: 使用application.properties或application.yml文件:在Spring Boot项目的classpath根目录下,可以创建一个名为application.properties或appli…

oc基本控件3

UIButton // // ViewController.m // OcDemoTest // // Created by Mac on 2023/7/14. //#import "ViewController.h"interface ViewController ()endimplementation ViewController- (void)viewDidLoad {[super viewDidLoad];// 1 创建按钮对象UIButton *button…

涂鸦智能打造专业家庭智能生活助手,实现人机交互升级

近年来,智能家居设备的品类不断拓展,同时,人们对AI与智能家居的联动愈发憧憬。自然语言交互是未来人机交互的主要趋势之一,其关键在于使AI具备主动理解信息的能力,让用户的交互更轻松。如何将智能场景的交互变得更“善…

MySQL-DDL-表结构操作-创建-案例

案例 根据页面原型/需求创建表(设计合理的数据类型、长度、约束) 具体操作 在idea中使用可视化图形界面创建 具体操作如下: 在该界面中进行属性的创建,进行属性名称、数据类型、约束、描述等信息的填写最终运行结果如下&…

800V高压电驱动系统盘点

2023年上海车展共有23家厂商的63个电驱动产品,经过梳理,本次展出的800V高压电驱动共有13款,可以说电驱动全面进入高压化。800V电驱动是一个系统性的话题,对于电机而言,挑战的方向主要围绕高速、高压、散热,…

替换空格

替换空格 请实现一个函数&#xff0c;把字符串 s 中的每个空格替换成"%20"。 题目给的测试用例里有以下限制&#xff1a; 0 < s.length < 14。 split() 把字符串分割为子字符串数组 例如&#xff1a; var txt"ABCD EFGH IJKL MNOP QRSTU VWXYZ"; v…

微信小程序下拉选择

微信小程序中下拉框选择一般的交互方式有以下两种 直接下拉选择点击选择框后&#xff0c;弹出浮层进行选择 下边分别介绍两种方式的实现。在微信小程序中&#xff0c;这两种实现都需要修改三个文件 js 文件&#xff1a;下拉选择逻辑的具体实现 wxml 文件&#xff1a;下拉组件…

C#正则表达式校验某个字符串是否是合格的email

C#正则表达式校验某个字符串是否是合格的email 可以借助正则表达式校验某个字符串是否是合规的电子邮箱。对于邮箱的正则表达式有严格的模式&#xff0c;如&#xff1a;^[a-zA-Z0-9_&*-](?:\\.[a-zA-Z0-9_&*-])*(?:[a-zA-Z0-9-]\\.)[a-zA-Z]{2,7}$ 对应的C#实现如下…

TCP编程流程和粘包

目录 1、TCP编程流程 2、粘包 1、TCP编程流程 socket() 是创建套接字&#xff0c;返回值为监听套接字描述符&#xff0c;有了套接字才能通过网络进行数据的传输。创建套接字的参数要指定服务类型&#xff0c;TCP协议使用的是流式服务&#xff08;SOCK_STREAM&#xff09;。 b…

用Matlab听音乐 - 动态频谱

文章目录 高帧率版本效果: 定时器版本music_play主函数&#xff1a;定时器回调函数&#xff1a;效果: 高帧率版本 由于matlab这款科学计算软件本身庞大略显笨重&#xff0c;执行代码的速度受当前系统影响&#xff0c;很难做到严格定时仿真&#xff08;造成音画不同步&#xff…