外观
思维链提示推理技术详解
内容整理自学习笔记,仅供面试备考参考;不构成录用、培训或考试承诺。
1. 什么是思维链提示?
思维链(Chain-of-Thought,CoT)通过让大语言模型(LLM)将一个问题拆解为多个步骤,一步一步分析,逐步得出正确答案。
核心要点:针对复杂问题,LLM 直接给出最终答案更容易出错。思维链首先是一种提示/推理范式;也可经 CoT 数据做 SFT,但本身不等于指令微调。
示例:
- 算术词题:会给出每一步的计算过程,而不仅仅只给出最终答案
- 常识推理:会给出一系列的语言推论步骤
2. 思维链提示的本质是什么?
思维链提示的本质是利用模型的生成能力和涌现能力,来解决一些复杂或特殊的问题。即将复杂任务拆解为多个简单的子任务,它指的是一个思维过程中的连续逻辑推理步骤或关联的序列,是思维过程中一系列相互关联的想法、观点或概念的串联。
思维链通常用于解决问题、做决策或进行推理,可以按照逻辑顺序连接和组织思维,将复杂的问题分解为更简单的步骤或概念,从而更好地理解和解决问题。
3. 思维链提示与标准提示学习方法有什么不同?
| 对比维度 | 标准提示学习 | 思维链提示 |
|---|---|---|
| 输出方式 | 只给出最终输出 | 提供从输入到输出的完整推理路径 |
| 模拟过程 | 直接给出答案 | 模拟人类逐步思考解决复杂问题的过程 |
| 适用场景 | 简单任务 | 需要多步推理的复杂任务 |
| 效果提升 | 一般 | 当语言模型足够大时,显著提升复杂推理任务表现 |
4. 思维链提示为什么可以提高语言模型的复杂推理能力?
思维链提示的优势主要体现在以下几个方面:
| 序号 | 优势 | 说明 |
|---|---|---|
| 1 | 分解复杂问题 | 将多步推理任务分解成多个简单的子任务,降低问题难度 |
| 2 | 提供步骤示范 | 为每一推理步骤提供语言表达,示范如何逐步推理 |
| 3 | 引导组织语言 | 语言表达引导模型学习组织语言进行逻辑推理 |
| 4 | 加强逻辑思维 | 让模型模拟人类逻辑思维的过程,强化逻辑推理能力 |
| 5 | 调动背景知识 | 语言表达可以激活模型的背景常识,帮助推理 |
| 6 | 提供解释性 | 使模型的推理过程可解释,便于 debugging |
| 7 | 适用范围广 | 原则上适用于任何文本到文本的任务 |
| 8 | 单模型多任务 | 基于同一模型就可以做思维链提示,无需针对每个任务微调 |
| 9 | 少样本学习 | 只需要给出几个示范示例,不需要大量标注数据 |
5. 思维链提示适用场景有哪些?
相比标准提示学习,思维链提示可以显著提升大规模语言模型在需要复杂推理的任务上的表现,特别是在标准提示效果不佳的情况下,效果更加明显。
| 场景 | 说明 |
|---|---|
| 算术推理 | 在数学文本问题解答等任务上,思维链提示可以大幅提高模型的算术推理能力,例如在 GSM8K 数据集上准确率提高了两倍 |
| 常识推理 | 在需要常识推理的 CSQA、StrategyQA 等数据集上,思维链提示也显示出明显提升 |
| 符号推理 | 在符号操作任务上,思维链提示可以帮助模型推广到更长的未见过的序列,实现长度泛化 |
6. 思维链提示目前还存在哪些不足点?
| 序号 | 不足点 | 改进方向 |
|---|---|---|
| 1 | 生成的思维链不一定事实准确 | 需要进一步改进提高事实性 |
| 2 | 成功依赖于较大规模的语言模型 | 使用成本较高 |
| 3 | 思维链的标注成本较高 | 考虑自动生成思维链 |
| 4 | 提示示例易受提示工程影响 | 结果变化大,可探索更稳健的提示方法 |
| 5 | 不能完全反映模型的计算过程 | 理解内在机制需要更深入研究 |
| 6 | 简单任务上效果提升有限 | 可以扩展应用范围 |
| 7 | 模型架构、预训练方式的影响 | 可探索不同架构和预训练方式 |
| 8 | 小模型上的效果 | 研究如何在小模型上取得思维链提示效果 |
7. 思维链提示对推动语言模型复杂推理能力研究有哪些启发?
- 提出了思路链提示这一新颖的训练范式,为增强语言模型推理能力提供了新的思路
- 证明了语言表达的中间推理步骤对语言模型的重要作用
- 显示了模型规模增长对产生正确思路链的重要性
- 表明了探索语言内在的逻辑结构的巨大价值和潜力
- 展示了语言模型的惊人推理潜力,通过简单提示就能实现强大的推理
8. 思维链提示对实现通用人工智能仍面临哪些挑战?
| 序号 | 挑战 |
|---|---|
| 1 | 思路链的质量和正确性仍需提高 |
| 2 | 对语言模型内在推理机制理解不够 |
| 3 | 需要在更复杂的场景中测试其推理能力 |
| 4 | 推广到更多不同类型的推理任务上 |
| 5 | 在实际应用中展示其推理能力 |
| 6 | 需要更大规模的模型作为支撑 |
| 7 | 提高样本效率,降低使用成本 |
9. 如何通过增加模型规模来获得强大的思路链推理能力?
通过不断增加模型规模(参数量)来获得语言模型更强大的思路链推理能力,主要与以下能力的获得有关:
| 序号 | 能力 | 说明 |
|---|---|---|
| 1 | 算术运算能力 | 参数量越大的语言模型,基本算数运算能力越强,可以更准确地完成思路链中的算术推理 |
| 2 | 语义理解能力 | 模型规模越大,可以建立更丰富的词汇语义信息,有助于分析理解问题语义 |
| 3 | 逻辑推理能力 | 参数量提升可以增强模型的逻辑推理建模能力,有助于构建合理的推理链 |
| 4 | 知识表示能力 | 规模更大的模型可以学习更丰富的知识,提供问题所需的相关背景常识 |
| 5 | 长依赖建模能力 | 参数量的增加可以增强模型学习长距离依赖的能力,有利于推理链的生成 |
| 6 | 抽象建模和泛化能力 | 更大模型可以学到更抽象的知识表示,并应用到新问题上 |
| 7 | 计算资源和数据集规模 | 计算资源增加可以支持训练更大模型,大数据集可以提供更丰富的学习素材 |
10. 思维链提示可以应用在哪些其他方面?
| 应用领域 | 具体方式 |
|---|---|
| 复杂问题解决 | 数学题或逻辑推理等需要多步推理的问题,帮助语言模型分解问题、逐步解决 |
| 程序合成 | 提示语言模型先输出每一行代码的自然语言说明,然后再输出实际代码 |
| 翻译 | 提示语言模型先输出源语言到目标语言的逐词翻译,然后整合生成完整翻译结果 |
| 总结 | 提示语言模型先输出段落的主题句,然后输出段落的要点,最后生成完整总结 |
| 创作 | 创作故事或诗歌,让语言模型按照故事情节或诗歌主题逐步创作 |
| 问答 | 让语言模型解释其推理过程,而不仅仅给出结果,提高问答的透明度 |
| 对话 | 在闲聊对话中提示思路链,让语言模型的回复更合理逻辑 |
| 可解释的预测 | 让语言模型输出导致预测结果的推理链,提高可解释性 |
11. 如何改进思维链提示?
| 序号 | 改进方向 | 说明 |
|---|---|---|
| 1 | 提示的泛化能力 | 当前提示方式过于依赖具体示例,需探索如何用更少示例或从零示例中泛化 |
| 2 | 提示编写自动化 | 当前需要人工编写且需要专业知识,可探索自动生成提示的方法 |
| 3 | 结果正确性保证 | 思路链不保证完全正确,可结合验证器提高正确性 |
| 4 | 评估任务范围 | 目前主要在算术推理上评估,可拓展到更多语言任务 |
| 5 | 小模型适用性 | 当前只在百亿参数量级模型上见效,可研究在小模型上应用的方法 |
12. 思维链提示的未来研究方向?
- 提高提示泛化能力,减少人工参与
- 在更多语言任务中验证效果,评估推理能力
- 在小型模型上也实现类似推理提升的技术
- 结合验证器等手段提高生成的事实准确性
- 用提示的思路探索不同的模型结构设计