思维链 Chain-of-Thought(CoT)篇
来源:AI面试宝典 日期:2024年05月19日
一、什么是思维链提示?
思维链(Chain-of-Thought,CoT)是一种提示工程技术,通过让大语言模型(LLM)将一个问题拆解为多个步骤,一步一步分析,逐步得出正确答案。 需要指出的是,针对复杂问题,LLM 直接给出错误答案的概率比较高。思维链可以看成是一种特殊的指令提示方式。
📝通俗解释:就像教小学生做应用题,老师会引导他们"先读题→找已知条件→列式计算→检查答案",思维链就是用类似的步骤来引导AI思考,而不是直接让AI给出答案。
[图片说明] 图片对比了"标准提示"(Standard Prompting)和"思维链提示"(Chain-of-Thought Prompting)的效果:
| 提示方式 | 问题1(简单) | 问题2(复杂) |
|---|---|---|
| 标准提示 | Roger有5个网球,买了2罐,每罐3个。现在有多少?→ 输出:11 ✓ | 食堂有23个苹果,用了20个做午餐,又买了6个。现在有多少?→ 输出:27 ✗ |
| 思维链提示 | 同上 → 推理过程:5 + 2×3 = 5 + 6 = 11,答案是11 ✓ | 同上 → 推理过程:23 - 20 = 3,3 + 6 = 9,答案是9 ✓ |
举例说明:
- 在算术问题解答中,会给出每一步的计算过程,而不仅仅只给出最终答案
- 在需要常识推理的问题中,会给出一系列的语言推论步骤
📝通俗解释:标准提示就像直接问答案,思维链提示就像展示解题过程。AI在复杂问题上容易"粗心大意",思维链让它学会"步步为营"。
二、思维链提示的本质是什么?
思维链的本质是:利用大模型的生成能力和涌现能力,将复杂任务拆解为多个简单的子任务,逐步推理得出答案。
具体来说:
- 思维链指的是一个思维过程中的连续逻辑推理步骤或关联序列
- 是思维过程中一系列相互关联的想法、观点或概念的串联
- 通常用于解决问题、做决策或进行推理
- 它可以按照逻辑顺序连接和组织思维,将复杂问题分解为更简单的步骤或概念
📝通俗解释:思维链的本质就是"化整为零"。就像你要搬一堆很重的东西,一个人搬不动,那就分成几次搬。AI处理复杂问题也是一样的道理。
三、思维链提示与标准的提示学习方法有什么不同?
| 对比维度 | 标准提示学习 | 思维链提示 |
|---|---|---|
| 输出形式 | 只给出最终答案 | 提供从输入到输出的完整推理路径 |
| 思考过程 | 直接给出结果 | 模拟人类逐步思考的过程 |
| 适用场景 | 简单直接的问题 | 需要多步推理的复杂问题 |
| 效果 | 大模型表现可能不佳 | 显著提升复杂推理任务表现 |
核心区别: 与只给出最终输出的标准提示学习不同,"思维链提示"提供了完整的推理路径。这模拟了人类逐步思考解决复杂问题的过程。当语言模型足够大时,这种提示方法可以显著提升它们在需要多步推理的任务上的表现,尤其是在标准提示效果不佳的情况下。
📝通俗解释:标准提示像是只问"答案是什么",思维链提示像是问"你是怎么想到答案的"。让AI解释思考过程,能让它少犯错误。
四、思维链提示为什么可以提高语言模型的复杂推理能力?它的优势在哪里?
思维链提示提高语言模型复杂推理能力的9大优势:
分解复杂问题:思维链可以将多步推理任务分解成多个简单的子任务,降低问题难度
提供步骤示范:思维链为每一推理步骤提供了语言表达,示范了如何逐步推理
引导组织语言:思维链的语言表达引导模型学习组织语言进行逻辑推理
加强逻辑思维:思维链让模型模拟人类逻辑思维的过程,强化逻辑推理能力
调动背景知识:思维链中的语言表达可以激活模型的背景常识,帮助推理
提供解释性:思维链使模型的推理过程可解释,便于调试(debugging)
适用范围广:思维链原则上适用于任何文本到文本的任务
单模型多任务:基于同一模型就可以做思维链提示,无需针对每一个任务微调
少样本学习:只需要给出几个示范示例,不需要大量标注数据
📝通俗解释:这就像教AI"解题套路"——把大问题拆成小问题、一步步写清楚、调动所学知识。AI学会这些"套路"后,推理能力自然就提升了。
五、思维链提示适用场景有哪些?
主要适用场景
| 场景类型 | 说明 | 效果 |
|---|---|---|
| 算术推理 | 数学文本问题解答 | 在GSM8K数据集上准确率提高约2倍 |
| 常识推理 | CSQA、StrategyQA等数据集 | 明显提升,适用范围广 |
| 符号推理 | 符号操作任务 | 帮助模型推广到更长的未见过的序列,实现长度泛化 |
核心结论
相比标准提示学习,思维链提示可以显著提升大规模语言模型在需要复杂推理的任务上的表现,特别是在标准提示效果不佳的情况下效果更加明显。这证明了思维链提示可以有效增强语言模型的复杂推理能力,为语言模型注入人类式的逻辑思维模式,是一种有效的提示范式。
📝通俗解释:数学题、常识题、符号推理题是思维链的"主战场"。它特别擅长处理那些需要"想清楚再回答"的问题,而不是"一眼看出答案"的简单问题。
六、思维链提示目前还存在哪些不足点?
思维链提示方法的7大局限性:
事实准确性不足:生成的思维链不一定事实准确,需要进一步改进提高事实性
模型规模依赖:思维链提示的成功依赖于较大规模的语言模型,使用成本较高
标注成本高:思维链的标注成本较高,不易大规模应用。可以考虑自动生成思维链
提示敏感性:思维链的提示示例易受提示工程影响,结果变化大。可以探索更稳健的提示方法
内在机制不明确:思维链并不能完全反映模型的计算过程,理解内在机制需要更深入研究
简单任务效果有限:思维链提示在一些简单任务上的效果提升有限,可以扩展应用范围
架构和预训练探索不足:可以探索不同的模型架构、预训练方式对思维链的影响
小模型应用:可以研究如何在小模型上也取得思维链提示的效果
📝通俗解释:思维链虽然好用,但也有"缺点":需要大模型(成本高)、需要精心设计示例(麻烦)、复杂问题可能还是会出错。未来研究要解决这些问题。
七、思维链提示对推动语言模型复杂推理能力研究有哪些启发和影响?
思维链提示对推动语言模型复杂推理能力研究的5大启发:
新训练范式:提出了思维链提示这一新颖的训练范式,为增强语言模型推理能力提供了新思路
中间推理步骤的重要性:证明了语言表达的中间推理步骤对语言模型的重要作用
模型规模效应:显示了模型规模增长对产生正确思维链的重要性(importance)
语言内在逻辑结构:表明了探索语言内在的逻辑结构的巨大价值和潜力
惊人推理潜力:展示了语言模型的惊人推理潜力,通过简单提示就能实现强大的推理
📝通俗解释:思维链提示让我们意识到,AI不仅能"背答案",还能"讲道理"。这为让AI真正学会"思考"开辟了新道路。
八、思维链提示对实现真正的通用人工智能仍面临哪些挑战?
实现通用人工智能(AGI)面临的7大挑战:
- 思维链质量提升:思维链的质量和正确性仍需提高
- 内在机制理解:对语言模型内在推理机制理解不够
- 复杂场景测试:在更复杂的场景中测试其推理能力
- 任务类型扩展:推广到更多不同类型的推理任务上
- 实际应用展示:在实际应用中展示其推理能力
- 模型规模需求:需要更大规模的模型作为支撑
- 成本优化:提高样本效率,降低使用成本
📝通俗解释:让AI真正像人一样思考还有很长的路要走——需要更聪明、更高效、更可靠,这需要 researchers 继续努力!
九、如何通过增加模型规模来获得语言模型强大的思维链推理能力?这与模型获得的哪些能力有关?
通过不断增加模型规模(参数量)来获得更强大的思维链推理能力,主要与以下7方面能力有关:
算术运算能力:参数量越大的语言模型,其基本的算术运算能力越强,可以更准确地完成思维链中的算术推理
语义理解能力:模型规模越大,可以建立更丰富的词汇语义信息,有助于分析理解问题语义
逻辑推理能力:参数量提升可以增强模型的逻辑推理建模能力,有助于构建合理的推理链
知识表示能力:规模更大的模型可以学习更丰富的知识,提供问题所需的相关背景常识
长依赖建模能力:参数量的增加可以增强模型学习长距离依赖的能力,有利于推理链的生成
抽象建模和泛化能力:更大模型可以学到更抽象的知识表示,并应用到新问题上
计算资源和数据支撑:计算资源增加可以支持训练更大模型,大数据集可以提供更丰富的学习素材
📝通俗解释:模型越大,"脑容量"越大——算术更准、理解更深、推理更强、懂得更多。这就是所谓的"量变引起质变",大模型涌现出思维链能力。
十、你认为可以在哪些其他方面应用"思维链提示"来提升语言模型的能力?
思维链提示可以应用的10大领域:
复杂问题解决:例如数学题或逻辑推理等需要多步推理的问题,思维链可以帮助语言模型分解问题,逐步解决
程序合成:可以提示语言模型先输出每一行代码的自然语言说明,然后再输出实际代码,从而合成程序
翻译任务:可以提示语言模型先输出源语言到目标语言的逐词翻译,然后整合生成完整的翻译结果
文本总结:可以提示语言模型先输出段落的主题句,然后输出段落的要点,最后生成完整的总结
创意创作:如创作故事或诗歌,可以提示思维链,让语言模型按照故事情节或诗歌主题逐步创作
问答系统:可以提示思维链让语言模型解释其推理过程,而不仅仅给出结果,提高问答的透明度
对话系统:在闲聊对话中提示思维链,让语言模型的回复更合理有逻辑,而不仅是无意义的应答
可解释预测:在进行预测任务时,让语言模型输出导致预测结果的推理链,提高可解释性
数学证明:辅助生成数学证明步骤
决策支持:在需要多步决策的场景中,提供推理依据
📝通俗解释:思维链不只是做数学题用的!写代码、翻译文章、写故事、回答问题都可以用。让AI"写出思考过程",它表现会更好、更可信。
十一、如果需要对思维链提示进行改进,你会改进哪些地方?
思维链提示需要改进的5个方面:
泛化能力有限:当前的提示方式过于依赖具体的示例,泛化能力有限,需要更多提示示例才能适应新的任务。未来研究可以探索如何用更少示例或从零示例中泛化
提示编写专业性要求高:思维链提示当前需要人工编写,需要一定专业知识。可以探索自动生成提示的方法
结果正确性无法保证:思维链不保证完全正确,可能导致错误结果。可以结合验证器提高正确性
评估任务范围有限:目前主要在算术推理上评估,可以拓展到更多语言任务上验证效果
模型规模需求大:当前只在百亿参数量级模型上见效,可以研究在小模型上应用的方法
📝通俗解释:现在的思维链"挑食"——需要大模型、需要精心设计的例子。未来要让它更"接地气":更智能、更通用、更小巧。
十二、思维链提示未来研究方向?
思维链提示的5大未来研究方向:
提高泛化能力:减少人工参与,探索更通用的提示方法
拓展任务范围:在更多语言任务中验证效果,全面评估推理能力
小型化研究:在小型模型上也实现类似推理提升的技术
准确性提升:结合验证器等手段提高生成的事实准确性
架构创新:用提示的思路探索不同的模型结构设计
📝通俗解释:未来的研究方向就是让思维链"更强、更广、更小、更准、更新"。这是AI推理能力提升的热门方向!
十三、常见面试题
13.1 对 COT(Chain-of-Thought Prompt)和 Instruction Tuning 的理解?
| 概念 | 定义 | 核心特点 |
|---|---|---|
| CoT Prompt | 一种用于自然语言生成的提示机制,通过将文本分解为一系列相关的语义单元,帮助模型更准确地理解文本意义 | - 分解语义单元 - 按层次组织(句子、段落、章节) - 提供生成内容的结构和内容提示 |
| Instruction Tuning | 一种用于调整自然语言生成模型参数的技术,通过向模型提供人类编辑或专家的指令来指导模型的生成过程 | - 提供指令指导 - 涵盖语法、风格、结构、内容等 - 无需改变模型架构即可微调 |
两者的区别与联系:
- CoT 是一种提示工程方法,不需要训练,通过设计提示词来引导模型
- Instruction Tuning 是一种微调技术,需要额外训练来调整模型参数
- 两者可以结合使用:使用思维链风格的指令来微调模型
📝通俗解释:CoT是"教AI怎么想"(给提示),Instruction Tuning是"教AI怎么做"(微调)。一个不用训练,一个需要训练,目的都是让AI更好地完成任务。
整理完成