研究背景&动机
背景:扩大模型规模已被证实具有提升模型性能和模型效率的功效,但是LLM对于完成推理、算术任务仍有较大不足。
动机:从之前的应用和研究中得知,可以用生成自然语言解释、使用神经符号等形式语言的方法来提高大模型的算术推理能力,当时采用了从头预训练和微调模型的方法,耗费的成本较多;而且大模型具有根据少量文本提示进行上下文少样本学习的能力,使用少量输入输出示例即可提高LLM的推理性能,而不必对单独的检查点进行微调。
主要贡献
贡献了一种通过上下文提示提升LLM推理能力的方法,并进行了不同大小模型在算数推理、常识推理和符号推理上的能力,以及其他相关研究。
研究细节
思维链
结合上述两种方式,用形式化自然语言撰写少量输入输出示例作为上下文提示,启发LLM进行泛化,从而提高LLM推理性能。
思维链(Chain of Thought,CoT)的最初形式是(输入,思维链,输出)。思维链可以被解释成一种解决方案,类似于人类在思考问题时逐步思考问题的过程,也就是链式思维。
CoT有诸多特性:
- CoT推理原则上适用于所有用人类语言完成的任务。
- CoT允许LLM把多步骤问题分解为中间步骤,这意味着可以让LLM把额外的计算分配给需要更多推理步骤的问题。(为什么?LLM本身并不能知道要分配额外的计算,会不会只是因为CoT的出现增大了问题的文本量,所以LLM自动分配了更多算力?)
- 只要在少样本实例中包含CoT,就可以在较大的模型中把它激发出来。
对比实验
对比:
标准提示vs思维链提示
标准提示:标准少样本提示方法
思维链提示:为标准少样本提示中的每个实例都添加一个思维链进行增强。对每一个测试数据集,都手动编写了一组八个思维链增强示例用于提示。每次输入时,随机选择八个中的一个作为示例。
算术推理
对五种大小不一的模型进行了测试,且随机种子造成的结果方差不大。
大致结论:
- CoT对LLM推理能力的增强是跟模型的参数大小有关的。参数较小的模型没有积极影响,只有在100B以上参数的LLM中使用CoT时才有明显效果。(为什么?)
- 在对多个数据集进行测试的时候,CoT提示下的LLM都表现出了明显的性能提升。对于参数量足够大的LLM而言,问题越复杂,模型的性能提升就越好。(这是否因为,问题复杂导致CoT需要足够长,而大参数的LLM恰好可以很好的学习这种更长的CoT?)
- 在GPT3 175B模型和PaLM 540B模型上,CoT的提升比在具体任务上微调相应模型还要大。(对于参数足够大的模型,CoT甚至比微调还有用?可能原因是对于较大的模型而言,如果进行微调,微调后的LLM相比用CoT少样本学习的LLM更难以对相关问题进行精准泛化,会使用微调前学习到的其他数据中的思考方式污染新学习到的CoT。LLM尝试进行过往知识的重新整合,但是并不总是成功。)
- CoT训练后的模型也经常出现错误,有的是诸如计算上的小失误,有的则是语义理解错误等大错误。这种错误可以通过增大模型参数量修正一部分。
消融研究:
分别进行了"CoT中只有数学方程"、“CoT中只有自然语言”、“先给答案后给思路”,最终结果都与基础提示相差不大。
鲁棒性:
分别使用了不同标注人员撰写的不同风格的CoT提示,结果差别不大。
其他推理
常识推理:CoT对进行常识推理也有一定帮助。
符号推理:CoT可以帮助100B以上参数的大模型进行符号推理,并且可以进行一定的长度泛化。(需要指出的是,这里并没能给出LLM是否能生成更细致CoT的能力。例如,如果我的示例CoT中没有提到,LLM是否能给出特殊情况的考虑?是否能给出注意事项?对于某个较为含糊不清/语义模糊/笼统的步骤,能否给出更细致的推理,从而将其细化为多个步骤?)
灵感
多模态的CoT是否有可行性?或者说,给定一些工具和在一个任务中一串工具的操作描述,将他们构建成一种类似CoT的形式化自然语言,能否让LLM推理出新任务的解法?
LLM在提示下的思考粒度是否完全取决于CoT的粒度?提升LLM的思考推理能力除了1. 提升模型参数量 2. 选用思考过程更详细的训练集3. 用思维链进行提示 还有什么方法?像Deepseek-R1那样的自我否定的能力是否也是通过这三种方式实现的?是否跟Deepseek是混合专家模型(MoE)有关系?
LLM之所以能够进行分步骤的思考,是否是因为训练集中有着分步骤思考的案例?如果训练集中只有单纯的(输入、输出),少样本实例中也只有单纯的(输入、输出),LLM能否涌现出分步骤的能力?还是说实际上它不可能有这种创造性?现在所谓的LLM的创造性只是它基于预训练集和不断地微调实现的根据人类过往历史的组合爆炸?
是否可以通过对于小参数模型
的预训练使用质量更高,逻辑性更强的训练集进行训练,从而提高小模型的性能?