大模型解析:Chain-of-Thought 提示激发推理机制探析

文章目录

Abstract

本文通过Chain of Thoughts(CoT,即推理中间过程),提升大型语言模型(LLM)推理能力。

在三个LLM上证明了CoT能够显著提升算术、常识、符号推理能力。

Introduction

本文要探究如何提升大型语言模型执行少样本提示推理的能力。

已有研究提供了两个思路:① 算术推理任务能够通过
生成中间推理过程的自然语言
得到提升;② 基于LLM的
提示学习
在少样本推理任务中表现出色。

本文结合了这两个思路:使用
LLM生成中间推理过程
执行推理任务。

本文提出的
prompt exemplar
是一个三元组:<input, chain-of-thought, output>。其中chain-of-thought就是推理过程的中间步骤。

Chain-of-thought prompting

本文证明,只要推理链被包含在exemplar中,足够大的语言模型是可以生成chain-of-thought的。

下图(左)为standard prompting,exemplary为<input, output>;

下图(右)为本文prompt的例子,exemplary为<input, chain-of-thought, output>,高亮部分为chain-of-thought。

下文通过算术、常识、符号推理三个实证分析解释推理链的作用。

Arithmetic Reasoning

experimental setup

dataset(math word problem)
GSM8K, SVAMP, ASDiv, AQuA, MAWPS
baseline
standard prompting

chain-of-thought
:作者人工构建了用于求解math word problem的exemplar,共8个few-shot样例(原文Table20)

LLM
:基于5个LLM(GPT-3, LaMDA, PaLM, UL2 20B, Codex)分别对standard prompting和chain-of-thought进行实验。

result

(1)chain-of-thought对大规模模型有帮助,但小规模模型会产生通顺但不合逻辑的推理链,从而使得效果差于standard prompting;

(2)问题越复杂,chain-of-thought提升效果越好;

(3)一些数据集的结果是state-of-the-art的。

(4)随机抽取最终答案正确的样本进行人工检验,推理链几乎都是正确的;对于最终答案错误的样本,推理链大多也只有一些小细节错误。

ablation study

这一部分对推理链进行了三种变式,检验chain-of-thought成功的原因。

(1)
Equation only
:prompt只包含数学公式,没有自然语言。

对于复杂问题效果差,简单问题(只有一步或两步)效果好。说明了自然语言表述的必要性。

(2)
Variable only
:prompt只包含一个dot序列(…),与最终答案的计算所需的字符数相等。

表现与baseline(standard prompting)相同。同样说明了自然语言表述的必要性。

(3)
Reasoning after answer
:将推理过程放在answer之后,检验推理链是不是通过帮助模型在预训练中提取相关的信息得到最终答案。

表现与baseline(standard prompting)相同,说明推理链和答案的顺序很重要,答案是基于推理链得出的。

Commonsense Reasoning

experimental setup

dataset
CSQA, StrategyQA, Date, Sports, SayCan
prompt
同上

Result

与math problem类似,效果有提升,且随着模型规模增大和问题复杂度增加。提升越来越明显。

Symbolic Reasoning

experimental setup

task
:Last letter concatenate and coin flip

其余设置同上。

result

与前两个任务类似。

Limitation

(1)尽管推理链显示了推理过程,但事实上并不能证明神经网络本身是否存在推理过程;

(2)本文没有对LLM进行微调,这样的few-shot标注对于微调来说不可行;

(3)不能保证推理路径的正确性。

Appendix

  1. chain-of-thought的适用范围:①问题具有挑战性且具有多步骤推理;②需要应用大规模语言模型;③scaling curve相对平滑。
  2. full prompt examples
  3. full experimental results
  4. other details
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
chain-of-thought代码是一种用来构建和理解思维链条的程序代码。思维链条是指思考过程中的逻辑思维的一系列连接。这种代码的作用是帮助我们在程序中整理和管理思维的流程,使其更加清晰和易于理解。 chain-of-thought代码的实现可以使用各种编程语言,例如Python或Java等。它通常包含以下几个关键元素: 1. 节点:节点是思维链条的基本单元,代表了一个关键的思考点或一个执行的步骤。每个节点都有一个唯一的标识符和相关的属性。 2. 连接:连接用于建立节点之间的联系,表示它们之间的逻辑关系。例如,节点A可能需要在节点B之前执行,这时可以通过连接来表达这一关系。 3. 流程:流程是思维链条中节点和连接的组合,描述了整个思考过程。可以通过定义和组织节点和连接的方式来构建和管理流程。 4. 输入和输出:节点可以接收输入参数,并且会产生输出结果。输入和输出数据可以在节点之间通过连接进行传递,从而形成输入输出链条。 通过使用chain-of-thought代码,我们可以更加系统地组织和管理我们的思维过程。它可以帮助我们跟踪和追溯思考中的每个步骤,清晰地展示了我们的思维逻辑。这对于团队合作和项目管理非常有帮助,在多人协作的环境中,大家可以共享和理解彼此的思考过程。 总而言之,chain-of-thought代码是一种用来构建和理解思维链条的程序代码。它通过定义节点、连接、流程以及输入输出来描述和管理思考过程,从而帮助我们更加清晰地表达和理解思维的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值