引言
在大语言模型(Large Language Model, LLM)中,“思维链”提示(Chain of Thought Prompting,CoT)指的是让模型显式产出中间推理步骤,帮助其在回答复杂问题时更可靠、更具可解释性。根据是否在提示中提供示例来演示“如何写出思维链”,CoT可分为:
- 少样本思维链提示(Few-Shot CoT Prompting):在提示中包含若干带有思维链的示例。
- 零样本思维链提示(Zero-Shot CoT Prompting):仅用文字指令“要求模型给出思维过程”,不提供具体思维链示例。
二者都旨在提高大语言模型的推理质量。本文将结合更多数学公式,深入剖析Few-Shot与Zero-Shot CoT的核心原理与实现方式。
思维链(Chain of Thought, CoT)简述
思维链(CoT)可以理解为一条从问题 Q Q Q 到答案 A A A 的显式“推理路径”。在生成式语言模型中,若我们让模型在输出最终答案前,先写出一段(或多段)文本来阐明它的思考过程(例如逻辑、计算步骤等),就能显著减少“跳步”或错误回答,并且为人类用户提供可解释的中间结论。
在数学上,可将思维链 C C C 视为问题 Q Q Q 与答案 A A A 之间的某个中间(或辅助)变量。当我们只看最终答案时,模型实际上暗含了一个对 C C C 的内部推理;而当我们使用CoT提示时,就让这个内部推理在最终输出中得以显式呈现。
少样本思维链提示(Few-Shot CoT Prompting)
定义与动机
- 少样本(Few-Shot):在给模型的提示(Prompt)里,先提供少量“带有思维链的示例”作为范例,然后再提出新的问题,期望模型按类似形式输出“思维链 + 答案”。
- 动机:
- 示范学习(in-context learning):大模型会从提示示例中“模仿”如何先写出推理过程,再得出结论;
- 复杂任务的可解释性:某些任务(如数学题、逻辑推断)需要多步推理;示例能让模型更轻松地抓住如何分步思考;
- 减少幻觉与错误:拥有思维链示例后,模型更倾向于“循迹”而不是无中生有地跳到答案。
数学模型
在Few-Shot场景下,假设我们给模型提供了 k k k 个示例,记为
{ ( Q 1 , C 1 , A 1 ) , ( Q 2 , C 2 , A 2 ) , … , ( Q k , C k , A k ) } , \Bigl\{(Q_1, C_1, A_1),\, (Q_2, C_2, A_2), \dots, (Q_k, C_k, A_k)\Bigr\}, {
(Q1,C1,A1),(Q2,C2,A2),…,(Qk,Ck,Ak)},
并且我们还有一个新问题 Q new Q_{\text{new}} Qnew,要求模型输出
Y new = ( C new , A new ) . Y_{\text{new}} = (C_{\text{new}}, A_{\text{new}}). Ynew=(Cnew,Anew).
这里:
- Q i Q_i