本文是关于2022年NIPS论文《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》的简要技术介绍。论文提出使用思维链提示(Chain-of-thought Prompting)可以有效促进大语言模型的逐步推理能力,进而获得更加准确的效果,尤其对于需要逐步推理的任务。
有关本专栏的更多内容,请参考大语言模型文献调研专栏目录
目录
Chain-of-thought(以下简称CoT)是通过提示词的调整来改变大语言模型的输出结构的方法,这种方法低成本而高效,无需对大模型进行任何训练和微调,只需要在提问时给出少量的推理样例,让大模型模仿推理过程,可以获得让模型输出更多中间计算过程。论文在数学推理、常识推理和符号推理三个基准上验证了CoT的性能。
关于CoT,有一些需要读者关注的问题:
- CoT是怎么实现的?
- CoT在哪些情况下有效?
- CoT为什么会有效?
接下来我们根据这篇论文来理解关于CoT的一些技术知识。
1. 论文的基本信息
1.1 论文资源
论文:https://arxiv.org/pdf/2201.11903.pdf
论文引用:
@article{wei2022chain,
title={Chain-of-thought prompting elicits reasoning in large language models},
author={Wei, Jason and Wang, Xuezhi and Schuurmans, Dale and Bosma, Maarten and Xia, Fei and Chi, Ed and Le, Quoc V and Zhou, Denny and others},
journal={Advances in neural information processing systems},
volume={35},
pages={24824--24837},
year={2022}
}
1.2 CoT的动机和方法
经过大量数据训练过的大语言模型天然的具备一定程度推理能力,为了解锁并使用这个能力,有研究者使用格式化的推理数据对大模型进行微调,然而数据的构建是一个成本高昂的问题;还有研究者使用小样本学习的方式,将输入大模型的提示语句中增加了一部分输入-输出示例,虽然不需要针对每个任务构建一个训练集,但是在一些需要推理的任务中性能欠佳。论文提出的CoT综合了上述方法的优点,通过小样本提示促使模型进行逐步推理,获得中间结果。
CoT有以下几个值得关注的属性:
- 让模型将复杂问题分解成多步
- 为研究者和用户提供模型推理过程的窗口,便于检查中间过程并了解模型运行机制
- 原则上模型CoT可以应用于任何推理任务中
- 只有当语言模型足够大时,才能通过CoT进行推理
2. 数学推理
2.1 实验设置
基准。作者在GSM8K、SVAMP、ASDiv、AQuA和MAWPS五个数学问题数据集上对CoT进行测试。
标准提示。作者考虑标准的小样本提示,将样例问答的输入-输出对以文本形式给到大语言模型,然后针对新问题进行测试。
思维链提示。作者手工地构造了8组小样本样例,每个样例都包含思维链提示,对于上述每个基准数据,都采用这些样例进行提示。
语言模型。作者在选择语言模型时,关注了不同的系列,每个系列又根据参数量做了选择。语言模型的类型主要包括:
- GPT3(0.35B,1.3B,6.7B,175B)
- LaMDA(0.422B,2B,8B,68B,137B)
- PaLM(8B,62B,540B)
- UL2 20B
- Codex
2.2 实验结果
对于CoT的实验结果和结论,有以下要点:
- 单个图片比较,在参数量较小的模型中,CoT的作用不大,随着参数量的增大,CoT的作用越来越明显
- 横向比较,对于越需要复杂推理的任务,CoT的作用越明显
- GPT-3 175B和PaLM 540B加入CoT后可以取得比有监督学习更好的SOTA效果
2.3 消融实验
对于消融实验,作者比较了其他三种类型的提示方式:
只有方程。该参考实验主要用于验证CoT是否是通过输出数学等式实现推理的,因此要求模型在输出计算结果之前,输出获得这个计算结果所涉及到的推理公式。然而实验结果表明,这种方式并不能让模型获得更准确的结果,说明在没有自然语言推理步骤的情况下,直接将推理过程转换成公式是困难的。
只有计算变量。CoT有效的另一个可能原因是,它鼓励模型进行了更多的计算。因此作者设计了该实验,要求模型输出时通过一串点来表示一个变量,例如3用“…”表示,效果也和标准提示差别不大,这表明变量计算也不是CoT成功的关键。
结果之后进行CoT。CoT成功的另一个可能原因是CoT让模型更好利用预训练时的相关知识,因此作者将提示的答案和推理过程倒置,结果让然与基线模型类似,这表明CoT中的序列推理要比知识本身更有帮助。
2.4 CoT的鲁棒性
既然CoT有效,那么就有一个关键的问题,如果用户把提示样例换掉,还可以获得这么好的效果吗?作者在此做了一个实验来验证CoT的鲁棒性。让另外两个人写一些小样本推理样例,发现CoT的有效性和语言风格关系不大。作者也从GSM8K训练集中随机的选择一些样本作为CoT的小样本,也是有效的。这说明了CoT的鲁棒性。
4. 常识推理
基准。对于常识推理任务,作者选了CSQA、StrategyQA、BIG-bench effort中的Date Understanding和Sport Understanding,以及SayCan数据集进行测试。
提示。作者从训练集中随机选出一些样本作为CoT的样例,对于没有训练集的数据集,作者将验证集进行拆分,对前10个样本进行标注。
结果。结论和上一个小结类似:
- 增大模型参数量可以使得CoT取得更好的效果;
- PaLM540B加入CoT在StrategyQA上可以比SOTA更好;
- 这些结果证明了CoT在推理上的有效性。
5. 符号推理
两个任务。作者选了两个任务来验证CoT在符号推理任务上的性能。
- 最后字母拼接。该任务需要模型将多个单词的最后字母拼接起来,例如Amy Brown拼接成“yn”;
- 翻转硬币。这个任务给出硬币的初始状态,给出各种翻转或不翻转的一系列动作,让模型判断最终状态;
实验结果。PaLM 540B加入CoT后可以取得100%的准确率,但是小模型仍然性能较差。
6. 讨论
6.1 论文小结
整体来看,论文有以下要点需要关注:
- CoT通过少量样本提示让模型进行逐步推理并给出中间步骤,低成本而高效地解决复杂问题;
- CoT在小模型中作用不明显,但是随着模型参数量增大,CoT的作用更加明显,相比于其他类型的提示,CoT可以更好的挖掘参数量较大的模型的推理能力;
- CoT在数学推理、常识推理以及符号推理等任务中表现出色。
6.2 CoT的局限性
CoT也有一些局限性:
- CoT的内部原理并不清晰,本文并不能回答CoT是否真的让模型进行“推理”
- 如果想做模型微调,CoT的标注成本是很高的
- 其实没有一个标准来评价哪一条推理路径是正确的
- CoT在参数量足够大的模型中作用明显,但是小模型作用一般,因此对于实际部署时,CoT存在局限
7. 有一些重要的问题
这一部分是包含在补充材料中的,作者试着回答了人们比较关心的一些问题。
7.1 为什么增大模型参数量可以提升CoT性能?
答案是多方面的,作者试着从误差分析的角度来解答。作者从PaLM 62B中人工选了45个错误样例,包括20个理解错误,18个步骤错误和7个其他错误。当模型参数量提高到540B时,这些错误都被大幅度的修正,这说明了大参数量的模型具备更强大的理解和推理能力。此外,还有几点需要留意:
- 小模型在很简单的符号映射任务也存在失误;
- 小模型似乎有较弱的数值计算能力;
- 小模型通常无法生成可解析的结果,要么重复胡嗲要么逻辑上没有给出答案;
7.2 提示工程充当了什么作用?
作者通过以下方式验证了CoT提示工程的敏感程度。
- 不同的标注者。上文中已经介绍过,不同标注者有不同的标注风格,即使如此,CoT还是可以给出高于基线的性能;
- 没有机器学习背景的标注者。GSM8K提供了思维链,这些思维链是由没有大众工作者标注的,但是实验证明了其有效性,因此标注者的背景不会影响CoT的作用。
- 不同的提示案例。实验表明,采用不同的提示案例集合并不会影响CoT的有效性。
- 提示案例的顺序。实验表明,调换不同的提示案例的顺序对CoT的性能影响不大,除了硬币任务。
- 提示案例的个数。作者发现更多提示案例并不能引起进一步的效果提升。
- 不同的语言模型。各个语言模型都得益于CoT。
即使如此,提示工程仍然重要,可以进一步提高模型的性能。
7.3 思维链提示可以提升我所关心的任务性能吗
当任务满足以下三个条件时,CoT可以受益:
- 任务需要进行推理或者有挑战性
- 参数量足够的大语言模型
- 尺度曲线过于平缓
7.4 对于算术数据集,为什么只用方程是不够的?
对于一些算术推理任务,模型难以将任务本身翻译成算法方程,模型更擅长用自然语言的方式进行逐步的分解,而非转换成方程式,比如:
8. 附录:论文的思维导图(大图,请在新标签页打开查阅)
有关本专栏的更多内容,请参考大语言模型文献调研专栏目录
笔者自知才疏学浅,难免疏漏与谬误,若有高见,请不吝赐教,笔者将不胜感激!
softargmax
2024年3月28日