Chain-of-Thought(CoT)是一种改进的Prompt技术,目的在于提升大模型LLMs在复杂推理任务上的表现,如算术推理(arithmetic reasoning)、常识推理(commonsense reasoning)、符号推理(symbolic reasoning)。
起源
:CoT技术的概念是在Google的论文“Chain-of-Thought Prompting Elicits Reasoning in Large Language Models”中被首次提出。
现状
:随着大语言模型(LLM)的发展,CoT技术已成为提高LLM在复杂推理任务中性能的重要手段。通过特定的提示(prompt)或训练策略,可以引导模型生成详细的推理过程,从而提高模型的准确性和可解释性。
定义
:CoT技术指的是一种推理过程,其中模型在生成最终答案之前,先逐步推导出一系列的中间步骤或子目标。这些中间步骤构成了一个“思维链”,最终引导模型得到正确的结果。
核心思想
:模仿人类的推理过程,即人们往往在解决问题时不是直接得出答案,而是通过一系列的思考、分析和推理步骤。
特点与优势
拓展技术自动思维链(Auto-CoT)
:这是一种更高级别的CoT技术,通过简单的提示,促使模型自我思考,自动展示从设置方程到解方程的整个推理过程。这种技术可以在保证每个思维链正确性的同时,实现更精简的提示词设计。
思路
ICL的思路是在新测试样本中加入示例(demonstration)来重构prompt。与ICL(In-Context Learning)有所不同,CoT对每个demonstration,会使用中间推理过程(intermediate reasoning steps)来重新构造demonstration,使模型在对新样本预测时,先生成中间推理的思维链,再生成结果,目的是提升LLM在新样本中的表现。
一般来说CoT会分为两种:基于人工示例标注的Few-shot CoT和无人工示例标注的Zero-shot CoT。下面将逐一介绍。
假设基于ICL的测试样本输入表示为$<input, demonstrations>$,那么加入Few-shot CoT的测试样本输入,可表示为$<input, CoT>$。
我们知道了加入CoT的示例后,能提升LLM的表现。那么我们应该如何构造或使用CoT?
《Self-Consistency Improves Chain of Thought Reasoning in Language Models》
论文基于一个思想:一个复杂的推理任务,其可以有多种推理路径(即解题思路),最终都能够得到正确的答案。故Self-Consistency在解码过程中,抛弃了greedy decoding的策略,而是使用采样的方式,选择生成不同的推理路径,每个路径对应一个最终答案。
具体做法为:
实验表明,对于同一问题生成更多的推理链以供投票往往能取得更好的效果。当推理链数量足够多时,这种方法效果能够胜过使用greedy decoding的CoT方法。
《On the advance of making language models better reasoners》
论文在Self-Consistency的基础上,进一步做了优化。
实验结果显示,本论文的方法相对基于Greedy Decode和Self-Consistency能得到更优的效果。
《Complexity-based prompting for multi-step reasoning》
面对这么多可选的CoT,简单的CoT示例和复杂的CoT示例,对新的样本推理结果会不会产生影响?答案是Yes。
论文探讨了一个问题,在包含简单推理路径的demonstrations和复杂推理路径的demonstrations下,哪个效果会表现较好?(这里的简单和复杂是指 推理链/推理步骤的长度)
本论文继承了Self-Consistency的思想,具体方法:
实验结果表明,本论文的方法效果优于以下方法: (1)人工构建Cot、(2)random Cot、(2)Complex CoT(数据集中最长的多个思维链作为demonstrations)。
《Automatic chain of thought prompting in large language models》
上面提到的方法是基于人工构造CoT,那我们能否让模型自己来生成CoT?本论文就提供了这样一种自动生成CoT的思路。
本论文提到的Manual-CoT,可以等同于Few-shot CoT来理解。
由于Zero-Shot-CoT方法存在不稳定性,而Manual-CoT方法需要大量人工成本投入。作者提出了一种基于Auto-CoT的方法,自动构建包含问题和推理链的说明样例(demonstrations)。
整个过程分了两个阶段:
1.question cluster: 目的是将数据集中的question划分到不同簇中。
2.demostration sampling: 目的是从每个簇中选取一个代表性的question,基于LLMs,使用Zero-Shot-CoT生成推理链。
对于每一个簇$i$里的每一个问题$q{(i)}_j$,使用Zero-Shot-CoT的方法,将$[Q:q_j,A:[P]]$(其中$[P]$表示"Let's think step by step")输入到LLMs,LLMs生成该问题的推理链$r{(i)}_j$和答案$a_j$;
若问题$q{(i)}_j$不超过60个tokens,且推理链$r_j$不超过5个推理步骤,则将问题+推理链+答案,加入到demostrations列表中:$[Q:q{(i)}_j,A:r_j。a^{(i)}_j]$;
遍历完所有簇,将得到k个demostrations,将其拼接上测试question,构造成新的Prompt,输入LLMs便可得到生成结果。
值得一提的是,Auto-CoT在多个开源推理任务的数据集上,效果与Manual-CoT相当,甚至某些任务表现得更好。
《Chain of thought prompting elicits reasoning in large language models》
尽管CoT是ICL的一种特殊形式,但是与ICL有所不同的是,CoT中demonstrations的排序对其在新测试样本中的生成结果影响较小,论文对demonstrations进行重排序,在多数推理任务上仅导致小于2%的性能变化。(demonstrations顺序对ICL影响较大)
COT(Chain-of-Thought)的增强策略主要包括以下几种:
结合验证和细化:
问题分解:
利用外部知识:
投票排序:
提高效率:
偏差增强一致性训练(BCT):
Zero-shot-COT:
与Few-shot CoT不同,Zero-shot CoT并不需要人为构造demonstrations,只需要在prompt中加入一个特定的指令,即可驱动LLMs以思维链的方式生成结果。
当然这种不需要人工构造demonstrations的方式,效果相对Few-shot CoT会表现稍微差一点点。但是相对Zero-shot和Few-shot的方法而言,Zero-shot CoT在复杂任务推理上却能带来巨大的效果提升。
《Large language models are zero-shot reasoners》
论文首先提出了Zero-shot CoT的方法,整个流程包含两部分:
值得一提的是,论文同时发现了,当模型LLM变得越来越大,对于使用Zero-shot的结果带来的增益不大,但是对使用Zero-shot CoT的结果带来的增益较大。
《Scaling Instruction-Finetuned Language Models》
既然在上一篇论文中,已经发现了LLM存在Zero-shot CoT的能力,那如果事先对LLM进行基于CoT的instruction tuning,那模型使用Zero-shot CoT方式在对unseen样本进行预测时,效果会不会更好?本论文给出了肯定的答案。
论文探索了以下可能影响LLM在unseen task上表现的因素:
论文微调数据集包含了1836种指令任务,473个数据集和146种任务类型构成,数据集中包含了9个人工标注的CoT数据集。同时保留一个没出现过的held-out数据集作为模型评估数据集。
使用的模型是PaLM,而经过instruction tuning的模型,称为FlanPaLM(Finetuned Language PaLM)。
得到了以下结论:
对于大模型LLM涌现的CoT能力,业界目前的共识是:当模型参数超过100B后,在复杂推理任务中使用CoT是能带来增益的;而当模型小于这个尺寸,CoT并不会带来效果增益。
还记得在Pretrain+Fine-tuning时代下,对于复杂数学推理任务,如MultiArith、GSM8K下,效果还是不太理想,而短短几年时间,LLM+CoT的模式已经大大提升了该领域的解决能力。随着LLM的继续发展,未来必定会发现更多LLM隐藏的能力和使用方法,让我们拭目以待。
Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
Large language models are zero-shot reasoners
Scaling Instruction-Finetuned Language Models
Self-Consistency Improves Chain of Thought Reasoning in Language Models
On the advance of making language models better reasoners
Chain of thought prompting elicits reasoning in large language models
Complexity-based prompting for multi-step reasoning
Chain of thought prompting elicits reasoning in large language models
更多优质内容请关注公号:汀丶人工智能;会提供一些相关的资源和优质文章,免费获取阅读。