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。
从摘要想到的一些QA:
- 这种step by step看着是以一种自然语言的形式进行组织,有没有一种更加逻辑化/规则化的组织方式?形式化语言进行描述?
- 对于一个问题,推理链路可能是不同的,但是都能得到正确答案,如果进行推理链路的定义还是说是一个ensemble的方式?
- 一步错步步错的问题如何解决?
- 模型涌现的原因?
1 引言
NLP 领域最近因语言模型而发生了革命性的变化。扩大语言模型的规模已被证明可以带来一系列好处,例如提高性能和采样效率(sample efficiency)。然而,事实证明,仅扩大模型大小不足以在算术、常识和符号推理等具有挑战性的任务上实现高性能。
这项工作受到两个想法的启发,来探讨了大语言模型的推理能力如何可以通过简单的方法来进行解锁。
- 生成最终答案所需要的理由(rationale),能够对数学推理有增益。
- 大型语言模型提供了令人兴奋的通过提示进行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。
A prompting only approach很重要,因为它不需要大型训练数据集,并且单个checkpoint可以执行许多任务而不失通用性。这项工作强调了大语言模型如何通过一些带有有关任务的自然语言数据的示例来学习(自动学习隐藏在大型训练数据集中输入输出的patterns)。
2 Chain-of-Thought Prompting
在解决复杂的推理任务(例如多步骤数学题)时,请考虑自己的思维过程,通常我们是将问题分解为中间步骤并在给出最终答案之前解决每个步骤:“Jane 给了她妈妈 2 朵花后,她有 10 朵……” 。 。那么当她给她爸爸 3 朵后,她将得到 7 …所以答案是7。”本文的目标是赋予语言模型生成类似思维链的能力——一系列连贯的中间推理步骤,从而得出问题的最终答案。我们将证明如果在小样本提示的范例中提供了思想链推理的演示,那么大语言模型就可以生成思想链。
图 1 提供一个示例,用于展示大模型产生用于解决数学应用题的一系列思路,否则该模型可能会出错。在这种情况下,思维链路可以被resemble为一个完整的解决方案,但是我们依旧倾向于把它称之为思维链路,因为它模拟了达到最终答案所需要的一步接一步的思考过程。
对于促进大模型的推理能力,CoT拥有如下的吸引人的性质:
- 首先,思想链原则上允许模型将多步骤问题分解为中间步骤,这意味着可以将额外的计算分配给需要更多推理步骤的问题。
- 其次,思想链提供了模型行为的可解释窗口,表明模型如何得出特定答案,并提供调试推理路径出错位置的机会(充分刻画模型用于支持最终答案的中间计算过程,依旧是一个开放性的问题)。
- 思想链推理可用于数学解题、常识推理和符号操作等任务,并且可能适用于(至少原则上)人类可以通过语言解决的任何任务。
- 最后,只需将思维链序列的示例包含到少样本提示的示例中,就可以在足够大的现成语言模型中轻松引发思维链推理。
3 算术推理 (Arithmetic Reasoning)
我们首先考虑图 1 中形式的数学解题,它衡量语言模型的算术推理能力。虽然算术推理对人类来说很简单,但语言模型经常难以完成算术推理任务。引人注目的是,与 540B 参数大语言模型一起使用时的思想链提示在多项任务上的表现与特定于任务的微调模型相当,甚至在具有挑战性的 GSM8K 基准上实现了SOTA。
3.1 实验设置
在多个大语言模型以及多个benchmarks上进行了CoT prompting的探索:
数据集 GSM8K, SVAMP, ASDiv, AQuA, MAWPS
标准Prompting : 参见图1
思维链路Prompting:
大语言模型 : 我们评估了五个大型语言模型。第一个是 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 结果
有三个关键要点。首先,图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的鲁棒性
- 不同的标注人
- 精细的标注
- 不同的样例
4 常识推理 (Commonsense Reasoning)
5 符号推理 (Symbolic Reasoning)
附录
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的标注,保持鲁棒性,依旧有比较多的探索空间