CoT: 思路链提示促进大语言模型的多步推理

CoT

    • 总览
    • 摘要
    • 1 引言
    • 2 Chain-of-Thought Prompting
    • 3 算术推理 (Arithmetic Reasoning)
      • 3.1 实验设置
      • 3.2 结果
      • 3.3 消融实验
      • 3.4 CoT的鲁棒性
    • 4 常识推理 (Commonsense Reasoning)
    • 5 符号推理 (Symbolic Reasoning)
    • 附录
      • A.1 为什么增加模型的规模,能提升CoT的能力?
      • A.2 提示词工作的作用是什么?

总览

题目: Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
机构:Google Brain, NeurIPS 2022
论文: https://arxiv.org/pdf/2201.11903.pdf
任务: 设计CoT prompting,促进大模型推理能力(特别是多步推理),更具体地,它隶属于一种离散提示学习,即在大模型下的上下文学习(即不进行训练,将例子添加到当前样本输入的前面,让模型一次输入这些文本进行输出完成任务)
特点: 思维链路的开山之作
前置相关工作:GPT,PaLM,Language models are few-shot learners

摘要

我们探索如何生成一条思想链(一系列中间推理步骤)来显著提高大语言模型执行复杂推理的能力。特别是,我们展示了这种推理能力如何通过一种称为思维链提示(chain-of- thought prompting)的简单方法在足够大的语言模型中自然出现,其中提供了一些思维链演示作为提示的范例。

对三种大语言模型的实验表明,思维链提示可以提高一系列算术、常识和符号推理任务的表现。经验收益可能是惊人的。例如,仅用八个思维链示例来提示 PaLM 540B,即可在数学解题的 GSM8K 基准上达到SOTA,甚至超过带有验证器的微调 GPT-3。

BLIP model

从摘要想到的一些QA:

  1. 这种step by step看着是以一种自然语言的形式进行组织,有没有一种更加逻辑化/规则化的组织方式?形式化语言进行描述?
  2. 对于一个问题,推理链路可能是不同的,但是都能得到正确答案,如果进行推理链路的定义还是说是一个ensemble的方式?
  3. 一步错步步错的问题如何解决?
  4. 模型涌现的原因?

1 引言

NLP 领域最近因语言模型而发生了革命性的变化。扩大语言模型的规模已被证明可以带来一系列好处,例如提高性能和采样效率(sample efficiency)。然而,事实证明,仅扩大模型大小不足以在算术、常识和符号推理等具有挑战性的任务上实现高性能

这项工作受到两个想法的启发,来探讨了大语言模型的推理能力如何可以通过简单的方法来进行解锁。

  1. 生成最终答案所需要的理由(rationale),能够对数学推理有增益。
  2. 大型语言模型提供了令人兴奋的通过提示进行in-context few-shot learning的前景。

然而,上述两种想法都有关键的局限性。对于理由增强(rationale augmented)训练和微调方法来说,创建大量高质量理由的成本很高,这比普通机器学习中使用的简单输入输出对要复杂得多。对于 Brown 等人 Language Models are Few-Shot Learners使用的传统少样本提示方法。,它在需要推理能力的任务上表现不佳,并且通常不会随着语言模型规模的增加而得到实质性改善 (Rae et al., 2021 Scaling Language Models: Methods, Analysis & Insights from Training Gophe)。在本文中,我们将这两种想法的优点结合起来,避免了它们的局限性。具体来说,我们探索语言模型在推理任务中执行few-shot prompting的能力,给出由三元组组成的提示:⟨输入、思维链、输出⟩。思维链是一系列导致最终输出的中间自然语言推理步骤,我们将这种方法称为思维链提示。图 1 给出了一个示例。

我们对算术、常识和符号推理基准进行了实证评估,表明思维链提示优于标准提示,有时甚至达到了惊人的程度。图 2 展示了这样一个结果:在数学解题的 GSM8K 基准上,PaLM 540B 的思维链提示大大优于标准提示,并实现了SOTA。

BLIP model

A prompting only approach很重要,因为它不需要大型训练数据集,并且单个checkpoint可以执行许多任务而不失通用性。这项工作强调了大语言模型如何通过一些带有有关任务的自然语言数据的示例来学习(自动学习隐藏在大型训练数据集中输入输出的patterns)。

2 Chain-of-Thought Prompting

在解决复杂的推理任务(例如多步骤数学题)时,请考虑自己的思维过程,通常我们是将问题分解为中间步骤并在给出最终答案之前解决每个步骤:“Jane 给了她妈妈 2 朵花后,她有 10 朵……” 。 。那么当她给她爸爸 3 朵后,她将得到 7 …所以答案是7。”本文的目标是赋予语言模型生成类似思维链的能力——一系列连贯的中间推理步骤,从而得出问题的最终答案。我们将证明如果在小样本提示的范例中提供了思想链推理的演示,那么大语言模型就可以生成思想链。

图 1 提供一个示例,用于展示大模型产生用于解决数学应用题的一系列思路,否则该模型可能会出错。在这种情况下,思维链路可以被resemble为一个完整的解决方案,但是我们依旧倾向于把它称之为思维链路,因为它模拟了达到最终答案所需要的一步接一步的思考过程。

对于促进大模型的推理能力,CoT拥有如下的吸引人的性质:

  1. 首先,思想链原则上允许模型将多步骤问题分解为中间步骤,这意味着可以将额外的计算分配给需要更多推理步骤的问题。
  2. 其次,思想链提供了模型行为的可解释窗口,表明模型如何得出特定答案,并提供调试推理路径出错位置的机会(充分刻画模型用于支持最终答案的中间计算过程,依旧是一个开放性的问题)。
  3. 思想链推理可用于数学解题、常识推理和符号操作等任务,并且可能适用于(至少原则上)人类可以通过语言解决的任何任务。
  4. 最后,只需将思维链序列的示例包含到少样本提示的示例中,就可以在足够大的现成语言模型中轻松引发思维链推理。

3 算术推理 (Arithmetic Reasoning)

我们首先考虑图 1 中形式的数学解题,它衡量语言模型的算术推理能力。虽然算术推理对人类来说很简单,但语言模型经常难以完成算术推理任务。引人注目的是,与 540B 参数大语言模型一起使用时的思想链提示在多项任务上的表现与特定于任务的微调模型相当,甚至在具有挑战性的 GSM8K 基准上实现了SOTA。

3.1 实验设置

在多个大语言模型以及多个benchmarks上进行了CoT prompting的探索:
数据集 GSM8K, SVAMP, ASDiv, AQuA, MAWPS
标准Prompting : 参见图1
思维链路Prompting

BLIP model BLIP model

大语言模型 : 我们评估了五个大型语言模型。第一个是 GPT-3 ,我们使用 text-ada-001、text-babbage-001、text-curie-001 和 text-davinci-002,它们大概对应于 InstructGPT 模型350M、1.3B、6.7B 和 175B 参数的模型。第二个是LaMDA,它有 422M、2B、8B、68B 和 137B 参数的模型。第三个是PaLM,有8B、62B、540B参数的模型。第四个是 UL2 20B,第五个是 Codex OpenAI API 中的 code-davinci-002。我们通过贪婪解码从模型中进行采样(尽管后续工作表明,可以通过在许多采样代中采用大多数最终答案来改进思想链提示(Wang 等人,2022a))。对于 LaMDA,我们报告了五个随机种子的平均结果,其中每个种子都有不同的随机洗牌顺序的样本。由于 LaMDA 实验并未显示不同种子之间存在较大差异,为了节省计算量,我们报告所有其他模型的单个示例顺序的结果。

3.2 结果

BLIP model

有三个关键要点。首先,图4表明,思维链提示是模型规模的一种涌现能力(Wei et al., 2022b)。也就是说,思想链提示不会对小型模型的性能产生积极影响,并且仅在与 ~100B 参数的模型一起使用时才会产生性能增益。我们定性地发现,较小规模的模型会产生流畅但不合逻辑的思维链,导致表现低于标准提示。

其次,对于更复杂的问题,思维链提示可以带来更大的性能提升。例如,对于 GSM8K(基线性能最低的数据集),最大的 GPT 和 PaLM 模型的性能提高了一倍多。另一方面,对于 SingleOp(MAWPS 最简单的子集)来说,只需要一步即可解决,性能改进要么是负的,要么非常小(参见附录表 3)。

第三,通过 GPT-3 175B 和 PaLM 540B 进行的思想链提示优于现有有监督的技术。图 4 显示了 PaLM 540B 如何使用思想链提示在 GSM8K、SVAMP 和 MAWPS 上实现新的技术水平(但请注意,标准提示已经超过了 SVAMP 的先前最佳状态)。在另外两个数据集 AQuA 和 ASDiv 上,具有思维链提示的 PaLM 与现有技术的差距在 2% 以内(附录表 2)。

为了更好地理解为什么思考链提示有效,我们手动检查模型LaMDA 137B 在GSM8K产生的思想链。我们随机选择了50个模型预测出正确答案的样例,发现除了两个误打误撞预测正确之外,其余的cases全部给出了符合逻辑的解释。此外,我们也随机验证了50个给出错误答案的cases,我们发现46%的cases其CoT过程几乎是正确的,但是由于一些微小的错误(比如计算错误,符号映射错误,某步骤的推理过程缺失)造成推理过程错误,其余54%的CoT过程错误,主要是在语义理解以及一致性理解上存在比较大的问题。为了更好地理解为什么模型规模会造成能力的涌现,我们也在PaLM 62B上进行了类似的实验,我们发现将 PaLM 扩展到 540B 修复了 62B 模型中的很大一部分推理步骤缺失和语义理解错误的cases。

3.3 消融实验

使用思维链提示所观察到的好处自然引发了一个问题:是否可以通过其他类型的提示来实现相同的性能改进。图 5 显示了具有下述三种思路变化的消融研究。

仅等式。思维链提示可能有帮助的一个原因是它会产生要评估的等式,因此我们测试了一种变体,其中提示模型在给出答案之前仅输出等式。图5显示,仅等式提示对GSM8K没有太大帮助,这意味着GSM8K中问题的语义太具有挑战性,无法在没有思维链中的自然语言推理步骤的情况下直接翻译成等式。然而,对于一步或两步问题的数据集,我们发现仅提示方程确实可以提高性能,因为可以很容易地从问题中推导出等式(参见附录表 6)。
仅变量计算:
CoT过程在answer之后: 是否有可能CoT仅仅是能够让模型接触到预训练相关的一些知识。因此,设置了一个CoT after answer的实验,发现CoT的确是能激发推理,而非单纯的激发知识。

3.4 CoT的鲁棒性

  • 不同的标注人
  • 精细的标注
  • 不同的样例
BLIP model

4 常识推理 (Commonsense Reasoning)

BLIP model

5 符号推理 (Symbolic Reasoning)

BLIP model

附录

A.1 为什么增加模型的规模,能提升CoT的能力?

文中是通过失败案例分析,从语义理解,推理步骤缺失,幻觉,重复输出,符号映射错误等维度,去对比不同规模的模型表现。(Future work could more thoroughly investigate what properties of pretraining data, model architecture, and optimization objective causally enable such reasoning capabilities.)

A.2 提示词工作的作用是什么?

比较分析了如下的一些维度:

  • 不同的标注人员
  • 标注人员是否有机器学习背景
  • 不同的样例
  • 样例的顺序
  • 样例的数量
  • 不同的语言模型

如何进行CoT的标注,保持鲁棒性,依旧有比较多的探索空间

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“Java与Redis的默契舞曲:优雅地连接与存储数据“

文章目录 引言1. Java连接上Redis2. Java对Redis进行存储数据2.1 存储set类型数据2.2 存储hash类型数据2.3 存储list类型数据 总结 引言 在现代软件开发中,数据存储和处理是至关重要的一环。Java作为一门强大的编程语言,与Redis这个高性能的内存数据库相…

pytorch笔记 GRUCELL

1 介绍 GRU的一个单元 2 基本使用方法 torch.nn.GRUCell(input_size, hidden_size, biasTrue, deviceNone, dtypeNone) 输入:(batch,input_size) 输出和隐藏层:(batch,hidden_size&#xf…

vue3+element Plus实现弹框的拖拽、可点击底层页面功能

1、template部分 <el-dialog:modal"false"v-model"dialogVisible"title""width"30%"draggable:close-on-click-modal"false"class"message-dialog"> </el-dialog> 必须加的属性 modal:是否去掉遮罩层…

Redis原理到常用语法基础图文讲解

在初期&#xff0c;已经讲述了Redis安装问题。现在正式进入Redis的入门阶段 系统架构的演进 传统单机架构 一台机器运行应用程序、数据库服务器 现在大部分公司的产品都是这种单机架构。因为现在计算机硬件发展速度很快&#xff0c;哪怕只有一台主机&#xff0c;性能也很高…

Ubuntu 20.04源码安装git 2.35.1

《如何在 Ubuntu 20.04 上从源代码安装 Git [快速入门]》和《如何在 Ubuntu 20.04 上安装 Git》是我参考的博客。 https://git-scm.com/是git官网。 lsb_release -r看到操作系统版本是20.04。 uname -r看到内核版本是5.4.0-156-generic。 sudo apt update更新一下源。 完…

携程AI布局:三重创新引领旅游行业智能化升级

2023年10月24日&#xff0c;携程全球合作伙伴峰会在新加坡召开&#xff0c;携程集团联合创始人、董事局主席梁建章做了名为《旅游业是独一无二的最好的行业》的演讲&#xff0c;梁建章在演讲中宣布了携程生成式 AI、内容榜单、ESG 低碳酒店标准三重创新的战略方向。这些创新将为…

Technology strategy Pattern 学习笔记3-Creating the Strategy-Industry context

Creating the Strategy-Industry context 1 SWOT 1.1 create steps 1.与内部各方沟通 了解企业的人、流程和技术&#xff0c;包括与其它企业的不同了解哪些创新可以做竞争者及市场信息企业可以支撑的类似业务 按SWOT四象限分类&#xff0c;先做列表后放入象限 1.2 四象限…

SSH远程管理服务

一、SSH概述 熟悉Linux的人那肯定都对SSH不陌生。ssh是一种用于安全访问远程服务器的协议&#xff0c;远程管理工具。它之所以集万千宠爱为一身&#xff0c;就是因为它的安全性。那么它到底是怎么样来保证安全的呢&#xff1f;到底是如何工作的呢&#xff1f; 1、加密算法&am…

JAVA智慧工地管理系统源码基于微服务

智慧工地是将互联网的理念和科技引入施工现场&#xff0c;从施工现场源头抓起&#xff0c;大程度的收集人员、安全、环境、质量等关键业务数据。通过结合物联网、大数据、互联网、云计算等技术建立云端大数据管理平台&#xff0c;形成端云大数据的体系与模式&#xff0c;这就是…

嵌入式中利用VS Code 远程开发原理

VS Code几乎是所有的程序员必备的工具之一&#xff0c;据说全球一般的开发者都使用过VS Code这款工具。 今天分享一篇 VS Code 实现远程办公相关的文章。 1、概 述 通常&#xff0c;我们都是每天到工作的办公室进行办公&#xff0c;但是&#xff0c;如果下班回家&#x…

【Java】三种方案实现 Redis 分布式锁

序言 setnx、Redisson、RedLock 都可以实现分布式锁&#xff0c;从易到难得排序为&#xff1a;setnx < Redisson < RedLock。一般情况下&#xff0c;直接使用 Redisson 就可以啦&#xff0c;有很多逻辑框架的作者都已经考虑到了。 方案一&#xff1a;setnx 1.1、简单实…

鸿运主动安全云平台任意文件下载漏洞复习

简介 深圳市强鸿电子有限公司鸿运主动安全监控云平台网页存在任意文件下载漏洞&#xff0c;攻击者可通过此漏洞下载网站配置文件等获得登录账号密码 漏洞复现 FOFA语法&#xff1a;body"./open/webApi.html" 获取网站数据库配置文件 POC&#xff1a;/808gps/Mobile…

MP4视频文件损坏怎么修复?

3-2 作为摄影师&#xff0c;或者在平时有拍摄工作的事情的&#xff0c;比如搞婚庆、搞航拍什么的&#xff0c;有一定的概率会遇到损坏的视频文件&#xff0c;比如相机突然断电、无人机炸机等&#xff0c;有可能会导致保存的MP4文件损坏。 这种文件使用播放器播放的话&#xf…

python 命令行界面的用户交互

背景 说一千&#xff0c;道一万&#xff0c;程序是为用户服务的&#xff0c;所以在程序运行过程&#xff0c;与用户交互以获取用户的信息输入和决策确认&#xff0c;是无法避免的编程需要考虑和解决的需求。 一个简单的demo 如下的程序中&#xff0c;程序需要生成一个新的 i…

【漏洞复现】Apache_HTTPD_多后缀解析漏洞

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞复现1、基础环境2、漏洞验证 1.3、深度利用GetShell 1.4、修复建议 1.1、漏洞描述 Apache HTTPD 支持一个文件拥有多个后缀&#xff0c;并为不同后缀执…

Windows ObjectType Hook 之 OpenProcedure

1、背景 Object Type Hook 是基于 Object Type的一种深入的 Hook&#xff0c;比起常用的 SSDT Hook 更为深入。 有关 Object Type 的分析见文章 《Windows驱动开发学习记录-ObjectType Hook之ObjectType结构相关分析》。 这里进行的 Hook 为 其中之一的 OpenProcedure。文章分两…

LangChain+LLM实战---ChatGPT的即时插件套件制作

英文原文&#xff1a;Instant Plugins for ChatGPT: Introducing the Wolfram ChatGPT Plugin Kit 在一分钟内构建一个新插件 几周前&#xff0c;我们与OpenAI合作发布了Wolfram插件&#xff0c;使ChatGPT可以使用Wolfram语言和Wolfram|Alpha作为工具&#xff0c;在ChatGPT内部…

插值表达式 {{}}

前言 持续学习总结输出中&#xff0c;今天分享的是插值表达式 {{}} Vue插值表达式是一种Vue的模板语法&#xff0c;我们可以在模板中动态地用插值表达式渲染出Vue提供的数据绑定到视图中。插值表达式使用双大括号{{ }}将表达式包裹起来。 1.作用&#xff1a; 利用表达式进行…

Python基础入门例程43-NP43 判断布尔值(条件语句)

最近的博文&#xff1a; Python基础入门例程42-NP42 公式计算器&#xff08;运算符&#xff09;-CSDN博客 Python基础入门例程41-NP41 二进制位运算&#xff08;运算符&#xff09;-CSDN博客 Python基础入门例程40-NP40 俱乐部的成员&#xff08;运算符&#xff09;-CSDN博客…

SurfaceFlinger的硬件Vsync深入分析-千里马android framework车机手机系统开发

背景&#xff1a; 学过或者你看过surfaceflinger相关文章同学都知道&#xff0c;vsync其实都是由surfaceflinger软件层面进行模拟的&#xff0c;但是软件模拟有可能会有误差或偏差&#xff0c;这个时候就需要有个硬件vsync帮忙校准。 故才会在surfaceflinger的systrace出现如下…