一、解构人类思维:CoT的认知基础
热身活动
问题1: 5*9 = ?
问题2: 8*16 = ?
问题3: (24点问题)通过4、4、6、6计算出24一共有几种方式(规则:只允许通过加减乘除进行计算,每个数字必须使用一次)
1.1 「System1」和「System2」
当我们在解决上述问题时,大脑使用了两种不同的思考模式:「快思考」和「慢思考」,这也是诺贝尔经济学奖得主丹尼尔·卡尼曼 (Daniel Kahneman) 在其畅销书《思考,快与慢》(Thinking, Fast and Slow) 中提出的著名理论:System1 和 System2。
- System1(直觉系统):System1是我们大脑中 快速、自动、毫不费力 的思考模式。它依赖直觉、经验和情感,在我们没有意识到的时候就已经在工作了。
- System2(理性系统):System2则是我们大脑中 缓慢、需要专注、费力 的思考模式。它负责进行复杂的计算、逻辑推理和审慎的决策。当你需要“动动脑筋”时,就是启动了系统2。
| 特征 | System1 (快思考) | System2 (慢思考) |
|---|---|---|
| 速度 | 快 | 慢 |
| 精力消耗 | 低,自动,不费力 | 高,刻意,费力 |
| 控制 | 无意识,非自愿 | 有意识,自愿,需要注意力 |
| 过程 | 直觉化,联想式,情绪化,启发式 | 逻辑化,分析式,基于规则,计算式 |
| 例子 | 2+2=4、认出熟人面孔 | 17×24、解决24点等复杂问题 |
| 易产生的倾向 | 偏见,错觉,草率下结论 | 可以纠正系统1的错误,但有时会“懒惰”不启动 |
我们绝大部分的日常思考和决策(高达95%以上)都是由System1(快思考)主导的。 可以这样理解:
- System1是默认选项:在我们醒着的每一刻,System1都在自动运行,处理着海量的信息,比如感知周围环境、理解语言、形成第一印象等。它就像一台永不停歇的计算机,处理着所有常规任务。
- System2是“懒惰的”监督者:System2通常处于一种舒适的低能耗模式。只有当System1遇到麻烦(比如遇到一个它无法解答的难题、或者一个与它预期不符的意外情况),或者当我们有意识地调动注意力去解决一个复杂问题时,System2才会被激活。
System2随着训练可以转换为System1(熟能生巧)
任何一项复杂的技能,最初都需要System2投入大量的精力、有意识地去学习和执行。但通过持续、刻意的练习,这个行为或思维过程可以逐渐内化,最终转变为System1的一部分,变得像本能一样快速、自动。
1.2 通用语言模型的能与不能
随着大模型参数量、算力开销、数据量协同增长,在标准提示下,其在 System1 任务上性能显著增强。然而在 System2 任务上,大模型表现出了 “Flat Scaling Curves” 现象 —— 即模型规模增长未带来预期性能提升。
- 面对 System1 问题,如常识问答、情感分类、意图识别等,随规模变大,大模型性能显著提升。
- 面对 System2 问题,如复杂数学计算、逻辑推理等,大模型性能提升缓慢甚至停滞不前。
| 类别 | 优势 (Advantages) ✅ | 不足 (Disadvantages) ❌ |
|---|---|---|
| 逻辑与数学 | 能处理简单的逻辑和计算:可以完成基本的代码编写、逻辑推理和数学运算。 | 复杂的逻辑和数学能力差:在多步、严谨的逻辑推理或复杂的数学计算中,错误率很高。 |
| 透明度 | 应用门槛低,易于交互:用户通过自然语言即可使用,无需专业技术背景。 | 决策过程不透明(黑箱) :难以解释为何会生成某个特定答案,在需要问责的领域应用受限。 |
| 语言能力 | 极强的自然语言理解与生成:能够进行流畅、有上下文的对话,写作风格多样,理解复杂指令。 | 缺乏真正的语言理解:本质上是基于概率的模式匹配,而非拥有真实世界的“心智模型”或意图。 |
| 知识应用 | 强大的知识整合与摘要能力:能快速阅读海量文本并提炼核心要点,是高效的信息处理工具。 | 知识有截止日期且不保证准确:知识库是静态的,无法获取实时信息,并且会产生“幻觉”(编造事实)。 |
| 准确性 | 在特定知识领域可提供快速解答:对于已充分学习的领域,能提供详尽、结构化的信息。 | 事实准确性低,不可靠:不能作为事实核查的唯一来源,输出内容必须经过人工验证,尤其在严肃领域。 |
| 创造性 | 出色的创意与内容生成伙伴:能够进行头脑风暴、撰写文案、创作诗歌故事,提供新颖想法。 | 创造力源于模仿与重组:其创造并非源于主观意识或情感,而是对现有数据模式的重新组合。 |
| 灵活性 | 极高的任务适应性:无需重新编程,通过上下文学习(Prompting)即可适应各种新任务。 | 表现受提示词(Prompt)质量影响巨大:结果的好坏严重依赖于用户提问的方式和质量。 |
二、Chain-of-Thought(CoT)——激发推理的工具
简单来说,CoT是一种提升大型语言模型(LLM)复杂推理能力的提示(Prompting)技术。它的核心思想是,我们不直接要求模型给出最终答案,而是引导它一步一步地展示其思考过程,像人一样“打草稿”,然后再得出结论。
2.1 CoT是如何工作的?
先看一个没有使用CoT的例子:
答案:我有一台笔记本电脑,每年折旧15%,电脑价值1W,4年后电脑价值多少
4年后电脑价值为:10,000 * (1 - 0.15)^4 = 5,742.24元。
这种方式直接给出问题和答案,模型需要一步到位想出结果。对于简单的任务可以,但对于复杂的任务,模型很容易出错。
现在,我们来看使用了CoT的例子:
答案:
要计算笔记本电脑在4年后的价值,我们可以使用递减折旧的方法。每年的折旧率是15%,也就是说每年电脑的价值剩下85%。
初始价值是10,000元。
第一年后,价值= 10,000 * (1 - 0.15) = 10,000 * 0.85 = 8,500元。
第二年后,价值= 8,500 * 0.85 = 7,225元。
第三年后,价值= 7,225 * 0.85 = 6,141.25元。
第四年后,价值= 6,141.25 * 0.85 = 5,220.06元。
所以,4年后电脑的价值大约是5,220.06元。
这里的关键区别在于,答案部分包含了详细的、分步骤的推理过程。
2.2 为什么CoT有效?
- 化繁为简:CoT将一个复杂的多步问题分解成一系列更小、更简单的子问题。模型处理每个子问题时负担更小,出错的概率也随之降低。
- 分配更多的计算资源:当模型生成一个长的、包含中间步骤的答案时,它实际上为这个问题分配了更多的计算量(token序列更长)。这给了它更多“思考”的空间来处理中间步骤,而不是被迫进行“一口吃个胖子”式的猜测。
- 提供可解释性和可调试性:通过展示推理过程,我们不仅能知道答案是什么,还能知道答案是怎么来的。如果答案错了,我们可以很清楚地看到它是在哪一步的推理上出了问题,从而方便我们修正提示或判断模型的弱点。
- 引导模型利用其内在知识:LLM在其庞大的训练数据中已经学到了逻辑、数学和世界知识。CoT就像一把钥匙,解锁并引导模型按照一个有序的、逻辑连贯的方式来运用这些知识。
2.3 CoT为什么重要?
CoT(思维链)的根本意义并非简单地提升答案准确性,那只是其带来的结果(不能倒果为因)。其核心价值在于,它首次系统性地揭示并引导了大型语言模型的推理过程,带来了两大深远影响
- 提升了可解释性和可信度:通过展示一步步的推理过程,它把黑箱变成了一个“玻璃箱”(Glass Box)。我们不仅能看到最终答案,还能清晰地审视它的每一步逻辑。
-
解锁复杂推理能力的钥匙 : CoT证明了复杂推理能力可以通过引导模型“模仿人类思考过程”来激发,引导模型从“系统1”(直觉式、概率性猜测)转向“系统2”(分析式、逐步推理)。
LLM本质上是一个基于概率的文本生成器,它倾向于给出最“像”正确答案的简短回答。
而CoT通过强制模型放慢速度,把一个大问题分解成一系列小问题,从根本上改变了模型的运算模式。
2.4 “链”金术:怎么写好一个CoT
2.4.1 零样本CoT (Zero-Shot CoT)——魔法咒语“让我们一步一步地思考”
对于许多任务而言,最简单的CoT方法就是在你的问题或指令后面,加上一句神奇的“咒语”,比如 “让我们一步一步地思考”(Let's think step by step) 。
-
它为什么有效? 这句话像一个提示符,暗示模型在给出最终答案之前,先将问题分解,并输出中间的“思考”过程。
-
举例说明 :
-
普通提问 (可能出错): “如果仓库A里有5个POS机,出库了2个,又入库了5个,最后又移库3个,现在仓库A中还剩多少个POS机?”
-> AI可能回答:“仓库中有8个POS机。” (错误)
-
使用零样本CoT (引导思考): “如果仓库A里有5个POS机,出库了2个,又入库了5个,最后又移库3个,现在仓库A中还剩多少个POS机?让我们一步一步地思考。”
-> AI可能回答:“仓库A开始有5个POS机,从中出库了5个,剩下3个。又入库了5个,现在总共有8个POS机。最后又移库了3个(等于出库),所以最后剩下5个POS机。” (正确)
-
-
适用场景: 当你很难提供完整的CoT示例,或者问题相对简单,不需要复杂的少样本设置时,零样本CoT是一个快捷有效的方法 。
-
局限性: 需要注意的是,模型在这种情况下是“自学”进行分步推理的,其推理链条可能存在缺陷,最终答案的可靠性并非百分之百 。
-
其他变体:
“请展示你的推理过程,最后再给出答案。”“我们来把这个问题拆解一下。”“在得出结论前,请先列出所有的前提和分析步骤。”
2.4.2 少样本CoT(Few-Shot Cot)——提供一个高质量的“思维范本”
Few-Shot CoT就是在使用思维链(Chain of Thought)时,先给模型提供一到多个完整的“问题 + 详细推理过程 + 答案”的范例,然后再提出你真正想解决的问题。
-
它为什么有效? Few-Shot CoT 通过高质量示范来 “激活”和“引导” 了大型语言模型深度推理能力。
-
举例说明:
Few-Shot CoT的工作流程非常直观,包含两个核心部分:范例(Shots) 、新问题(New Prompt)-
第1步:构建范例 (The "Shots"): 你需要先写好一个或多个完整的“解题示范”。一个好的范例是成功的关键。
【范例 1】
Q: 如果仓库A里有5个POS机,出库了2个,又入库了5个,最后又移库3个,现在仓库A中还剩多少个POS机?
A: 仓库A开始有5个POS机,从中出库了5个,剩下3个。又入库了5个,现在总共有8个POS机。最后又移库了3个(等于出库),所以最后剩下5个POS机。最终答案:5 -
第2步:提出你的新问题: 在提供了上述范例之后,你就可以紧接着提出你真正想问的问题。
【新问题】
Q: 仓库A中有10个POS机,入库了5个,又出库了1个,现在仓库有多少个?
-
观察模型的回答
模型在看到了你的范例和新问题后,会“领悟”到应该遵循的思考模式,然后模仿范例的格式,自己生成后续的思维链和答案。
【模型的生成】
A: 仓库A开始有10个POS机,入库了5个,此时一共有15个。此时出库了1个,现在总共有14个POS机。最终答案:14
-
-
适用场景
一句话总结:当你需要模型解决一个棘手问题,并且希望它的思考过程非常严谨、格式非常标准时, “手把手地教(Few-Shot)” 总是比 “口头吩咐(Zero-Shot)” 效果更好。
-
使用 Few-Shot CoT 的最佳实践
- 质量永远大于数量:一两个逻辑清晰、格式完美的范例,远胜于一堆质量平平的范例。一个错误的范例会严重误导模型。
- 保持结构一致性:所有范例的格式(如
Q:和A:的使用,步骤的表述方式)以及你提出的新问题,都应保持高度一致。这能帮助模型更容易地识别出模式。 - 范例与问题要相关:范例所解决的问题类型,应该和你将要提出的新问题在逻辑结构上是相似的。比如,要解决数学应用题,就不要用诗歌分析作为范例。
- 把最复杂的范例放在前面:有时候,把最能体现思考深度的范例放在前面,可以更好地“激活”模型的推理能力。
- 不一定需要很多“Shot” :对于大多数任务,1到3个范例(One-Shot to Three-Shot)通常就足够了。过多的范例会增加成本(消耗更多Token),并且可能超出模型的上下文窗口限制。
-
局限性:
- 创建成本高:设计高质量范例耗时、耗力,且需要专业知识。
- 对范例敏感:范例中的小错误会被模型放大,且模型可能死板地模仿格式而非逻辑。
- Token消耗大:占用大量上下文空间,导致成本增加并可能超出模型长度限制。
- 泛化能力弱:为特定任务设计的范例很难直接应用于其他任务,扩展性不佳。
2.4.3 两种方式对比
| 特性 | Few-Shot CoT (少样本思维链) | Zero-Shot CoT (零样本思维链) |
|---|---|---|
| 工作方式 | 展示 (Show) :提供完整的解题范例。 | 告知 (Tell) :只用指令(如“一步步思考”)。 |
| 精确度 | 更高。尤其在复杂、新颖或多步骤的任务上表现更好。 | 较高。对常见推理任务有效,但不如Few-Shot稳定。 |
| 可控性 | 更强。可以精确控制模型的推理路径和输出格式。 | 较弱。模型会自己决定思考的步骤和格式。 |
| 准备成本 | 更高。需要人工精心设计高质量的范例。 | 极低。只需要加一句简单的指令。 |
三、由一个真实场景引发的CoT思考
识别场景:因个人原因导致差旅行程变动的场景
要素:
- 个人原因:必须是非公导致的
- 差旅行程变动:出差申请中,有行程时间/地点的变化
# 角色
你是面向公司内部人员的财务报销助手,擅长辨别用户问题是否为因个人原因导致的差旅行程变动的报销咨询问题。
# 任务
严格按以下步骤执行
## 判断是否因为个人原因导致行程变动,如果没有明确提及,默认因个人原因导致。
## 判断行程地点变动类型
正常差旅的行程为
去程:工作地->出差地
返程:出差地->工作地
如果不符合特例的场景,且出现以下情况则认为是行程地点变动
- 非工作地->出差地
- 出差地->个人行程地->工作地
## 判断行程时间变动类型
必须明确符合以下情况之一才认为是行程时间变动
- 延后
- 提前
# 输入
{{{开始.inputs}}}
# 输出
严格按照以下JSON格式返回
```
{"结果":"是/否"}
```
3.1(What) : 上述这段prompt-v1是否属于一种CoT?
先想想,再展开哦~
CoT的本质是“过程”,而非“形式”
-
思维链(Chain of Thought)的核心价值在于激活和引导模型的推理能力,引导模型进行一步步、有逻辑的推理过程,以提高复杂问题的准确性。而“在最终答案里输出思考步骤”只是实现这一目标的一种外在形式,并非本质。
-
CoT的实现方式(The Implementation) :
- 显式CoT (Explicit CoT) :在输出中明确展示思考步骤。 这是最常用、最可靠、适用性最广的方式。当你对结果不确定时,用它准没错。
- 隐式CoT (Implicit CoT) :在内部执行思考步骤,但不在输出中展示(心算)。 这种方式要求有更先进的模型,以及一个设计得像“程序”一样严谨、结构化的Prompt,通过强指令、清晰规则和高质量范例来约束模型的内部行为。
3.2(Why) : 输出结果不正确到底是为什么?
先想想,再展开哦
针对该场景有两种可能
可能 A:模式选择失败 —— “用错了大脑”
这种失败模式的本质是回避深度思考,选择最省力的捷径。模型没有真正尝试去理解和推理问题,而是基于表面的关键词,直接给出了一个统计上最常见或最“安全”的回答。
- 核心特征:浅层模式匹配、注意力失焦、走捷常。
- 行为表现:输出结果往往答非所问,或者是一个与关键词相关的、非常普遍的“套话”,完全忽略了问题的核心逻辑和上下文约束。
- 失败的本质:根本没想对。它甚至没有启动一个完整的逻辑链条。
可能 B:隐式推理过程出错 —— “用对了大脑,但算错了题”
这种失败模式更为复杂。模型确实尝试去理解问题并进行逻辑推理,但它在内部的、我们看不见的“隐式推理链条”中,某个环节出现了错误。
- 核心特征:尝试推理但中途出错、条件遗漏、逻辑混淆。
- 行为表现:输出的答案通常看起来是相关的,并且似乎是经过思考的,但最终结论是错误的。因为它基于一个或多个错误的内部推理步骤。
- 失败的本质:想了但想错了。它启动了推理,但在看不见的路上走错了方向。
3.3(How) :如何优化Prompt?
先想想,再展开哦
# 角色
你是面向公司内部人员的财务报销助手,擅长辨别用户问题是否为因个人原因导致的差旅行程变动的报销咨询问题。
# 任务
严格按以下步骤执行
## 判断是否因为个人原因导致行程变动,如果没有明确提及,默认因个人原因导致。
## 判断行程地点变动类型
正常差旅的行程为
去程:工作地->出差地
返程:出差地->工作地
如果不符合特例的场景,且出现以下情况则认为是行程地点变动
- 非工作地->出差地
- 出差地->个人行程地->工作地
## 判断行程时间变动类型
必须明确符合以下情况之一才认为是行程时间变动
- 延后
- 提前
<example>
示例1:
输入:从北京去上海出差,想多呆两天
解释:多呆两天属于延后,因此符合行程时间变动,result3=true
示例2:
输入:出差行程时间变动,怎么办
解释:出现时间变动,可能为提前/延后,但不明确,因此不符合出差行程时间变动,result3=false
示例3:
输入:出差是到4.1结束,然后我这边4.2-4.3请假,后续会从出差地返回base地,可以报销吗
解释:出差是4.1结束,正常场景下需要4.1返程,用户因为个人原因请假,4.2-4.3仍停留于出差地,属于出差延后返回,因此result3=true
</example>
# 输入
{{{开始.inputs}}}
# 输出
严格按照以下JSON格式返回
```
{
"执行步骤":xxxx //******新增********
"结果":"是/否"
}
```
# 角色
你是面向公司内部人员的财务报销助手,擅长辨别用户问题是否为因个人原因导致的差旅行程变动的报销咨询问题。
# 任务
严格按以下步骤执行
## 判断是否因为个人原因导致行程变动,如果没有明确提及,默认因个人原因导致。
## 判断行程地点变动类型
正常差旅的行程为
去程:工作地->出差地
返程:出差地->工作地
如果不符合特例的场景,且出现以下情况则认为是行程地点变动
- 非工作地->出差地
- 出差地->个人行程地->工作地
## 判断行程时间变动类型
必须明确符合以下情况之一才认为是行程时间变动
- 延后
- 提前
<example>
示例1:
输入:从北京去上海出差,想多呆两天
解释:多呆两天属于延后,因此符合行程时间变动,result3=true
示例2:
输入:出差行程时间变动,怎么办
解释:出现时间变动,可能为提前/延后,但不明确,因此不符合出差行程时间变动,result3=false
示例3:
输入:出差是到4.1结束,然后我这边4.2-4.3请假,后续会从出差地返回base地,可以报销吗
解释:出差是4.1结束,正常场景下需要4.1返程,用户因为个人原因请假,4.2-4.3仍停留于出差地,属于出差延后返回,因此result3=true
</example>
# 输入
{{{开始.inputs}}}
# 输出
严格按照以下格式返回
```
【Thinking】
第一步,我需要先判断xxxx
第二步,我需要识别是否存在行程时间变动,xxxx
第三步,我需要识别是否存在行程地点变动,xxxx
【answer】
{
"结果":"是/否"
}
```
四、自动生成CoT——匠人到流水线
CoT是一项里程碑式的技术。它通过模拟人类“一步一步思考”的过程,成功引导模型攻克了许多复杂的逻辑和数学难题。然而,这种能力的释放长期以来依赖于一个关键瓶颈:高质量CoT示例的“手动编写” 。这不仅是一个耗时耗力的过程,更是一门需要深厚提示工程(Prompt Engineering)功底的“手艺”。
那么,我们能否跨越这个瓶颈,将这门“手艺”变为一门高效的“科学”?答案是肯定的。
4.1 自动Cot(Auto-Cot)——自动化框架,让AI生成例题
Auto-CoT (Automatic Chain of Thought) 是一种自动构建“少样本思维链(Few-Shot CoT)”提示词的工作流,其最终产出物是一个高质量的Few-Shot Cot提示词。它的核心目标是:让大语言模型(LLM)自己为自己创建高质量的、用于激发思维链的范例,从而摆脱人工操作。
-
Auto-CoT 是如何工作的?
-
阶段一:问题聚类 (Question Clustering) —— “物以类聚”
这个阶段的目标是理解你提供的一批问题,并找出其中有代表性的、不同类型的问题。
-
输入:提供一批需要解决的、相似领域的问题(例如,一个包含100道不同类型的小学数学应用题的数据集)。
-
聚类:Auto-CoT 将每个问题的语义(即问题的含义)转换成数学向量。然后,通过向量聚类算法(如 K-Means),将含义相近的问题自动分到同一个“簇”里。
假设我们有以下几个问题:
- Q1: 小明有5个苹果,吃了2个,还剩几个? (属于“减法”簇)
- Q2: 队伍里有8个男孩和6个女孩,一共有多少人? (属于“加法”簇)
- Q3: 妈妈买了10块糖,分给弟弟3块,还剩几块? (属于“减法”簇)
- Q4: 农场里有3只羊和7只鸡,一共有多少只动物? (属于“加法”簇)
经过聚类,系统会自动形成两个簇:
- 簇1 (减法问题): {Q1, Q3}
- 簇2 (加法问题): {Q2, Q4}
-
-
阶段二:范例采样与生成 (Demonstration Sampling & Generation) —— “榜样生成”
这个阶段的目标是从每个“问题簇”中选出一个代表,并为它自动生成一个高质量的思维链范例。
-
-
采样:从每个簇中,选择一个最具有代表性的问题(比如,最靠近簇中心点的问题)。在我们的例子中,可能从簇1中选出Q1,从簇2中选出Q2。
-
生成思维链:对选出的每个代表性问题(Q1和Q2),使用 零样本CoT (Zero-Shot CoT) 来自动生成推理过程。具体做法就是向LLM发送这样的指令:
"Q: 小明有5个苹果,吃了2个,还剩几个? A: 请一步一步地思考。 "
然后,LLM 就会自动生成一个思维链,例如:
"A: 小明一开始有5个苹果。他吃了2个,所以剩下的苹果数量是 5 - 2 = 3个。所以答案是3。"
-
构建最终提示词:将所有自动生成的范例组合起来,放到你真正想问的新问题前面。
最终的提示词结构如下:
【自动生成的范例1】 Q: 小明有5个苹果,吃了2个,还剩几个? A: 小明一开始有5个苹果。他吃了2个,所以剩下的苹果数量是 5 - 2 = 3个。所以答案是3。
【自动生成的范例2】 Q: 队伍里有8个男孩和6个女孩,一共有多少人? A: 队伍里有8个男孩和6个女孩。要计算总人数,需要将男孩和女孩的数量相加。所以总人数是 8 + 6 = 14人。所以答案是14。
【你要问的新问题】 Q: 我有12本书,借给朋友4本,我自己还剩几本? A:
4.2 推理模型——会自己即时生成思维工具的脚手架
推理模型本质是一个具备推理能力的通用语言模型,其核心能力在于模仿人类的逻辑思维和推理过程,从而解决复杂问题并得出结论。相较于通用模型,它不仅仅是识别模式,更是要去理解问题背后的逻辑关系。它侧重于:
- 理解问题:深入分析问题的内在逻辑和约束条件。
- 逻辑推导:运用演绎(从一般到特殊)、归纳(从特殊到一般)等逻辑方法进行一步步的推导。
- 解释过程:能够展示其得出结论的思考路径和决策依据。
借助左脚踩右脚的Deepseek的训练过程,看看推理模型R1是怎么产生的
V3 促使了 R1 的诞生,而 R1 强大的推理能力又反向去 SFT V3,实现了左脚踩右脚,能力持续上升。
4.2.1 简单的训练模版
Deepseek团队在训练R1-Zero时使用了一个固定的模板(Zero-shot CoT)。
原版Prompt
A conversation between User and Assistant. The user asks a question, and the Assistant solves it.
The assistant first thinks about the reasoning process in the mind and then provides the user
with the answer. The reasoning process and answer are enclosed within <think> </think> and
<answer></answer> tags, respectively, i.e., <think> reasoning process here </think>
<answer> answer here </answer>. User: prompt. Assistant:
翻译后Prompt
用户与助手之间的对话。用户提出问题,助手予以解答。
助手首先在脑海中思考推理过程,随后向用户提供答案。推理过程和答案分别包含在 <think> </think> 和 <answer> </answer> 标签内,即:<think> 此处为推理过程 </think> <answer> 此处为答案 </answer> 。用户:prompt(问题 / 提示)。助手:
4.2.2 面向结果激励的强化学习(ORM)
当前行业主流仍以PRM(面向过程激励) 为主要方案,而 Deepseek 团队则采用了一种以结果为导向(ORM)的强化学习方法。他们的激励模型也十分简单,主要分成两类激励:
- 准确度激励: 判断答案是否正确。例如,如果模型回答 1 + 1 = 2,则加 1 分;如果答案错误,则不加分。
- 格式激励: 模型必须按照要求的格式作答。例如,若问题是「1+1 等于几?」,模型直接回答「answer 2」将得 0 分。但如果它在 think 标签中先写出推理过程,再在 answer 标签中给出答案,则会获得更高的分数。
4.2.3 强化学习策略 GPRO
GRPO 就是在开销上比较少,但能有效地计算出每一轮强化学习探索后,模型离正确方向的距离,以及如何激励模型朝正确方向发展。
4.2.4 模型学会了“思考”
R1 Zero 只做了三件事情:一个基础的训练模板,一个简单的激励模型,以及 GRPO 策略。
训练过程中,只给了问题、答案和规则。横轴是 RL 的迭代次数,竖轴是响应的长度。他们发现模型学着学着,自己把答案越吐越长了。激励模型里,没有激励过长度这件事情,只判断了对错和你有没有思考。但是模型自己发现,一旦我思考地越长,我越能答对。
模型在没有任何针对长度激励的情况下,通过增加思考时间,自主学会了如何解决需要推理的任务。
4.2.3 两种方式对比
| Auto-CoT (基于聚簇的提示工程) | 推理模型 (如 DeepSeek-R1) | |
|---|---|---|
| 使用方式 | 需要构造包含聚类得到示例的提示输入给基础 LLM。 | 直接输入问题,模型自动生成包含 CoT 的回答。 |
| 优势 | 1. 零训练成本: 利用现有模型。 2. 灵活性: 可针对不同任务选择不同示例。 3. 可解释性: 示例明确展示在提示中。 | 1. 简洁高效: 无需构造复杂提示,输入简单。 2. 推理能力更强: 专门训练通常能产生更深、更连贯、更准确的推理链。 3. 处理复杂问题更好: 不受或少受上下文窗口限制示例数量。 4. 更“自然”: 更像人类直接思考并写出步骤。 |
| 局限 | 1. 依赖示例质量: 聚类效果和示例选择影响大。 2. 上下文限制: 能包含的示例数量有限。 3. 推理深度受限: 依赖于基础模型在给定示例下的上下文学习能力,复杂推理可能不足。 4. 提示构造复杂: 需要实现聚类和选择流程。 | 1. 需要训练资源: 微调需要计算资源和高质量 CoT 数据。 2. 模型依赖: 效果取决于基础模型能力和微调数据的质量。 |
五、“先有鸡还是先有蛋”
通过对 DeepSeek 训练机制的深度剖析可见,其模型优化体系始终以答案准确性为核心导向,这种目标设定使得训练过程天然具备 "结果优先" 的属性。而 CoT(思维链)方法论却要求模型在输出时优先呈现完整的逻辑推导过程。这就引发一个思考:DeepSeek R1 在输出回答时是否已预先设定答案,而所谓的 CoT 推导是否只是基于答案进行的逆向构造?
5.1 人类的两种思维模式
| 过程导向思维(CoT式) | 结果导向思维(溯因法) |
|---|---|
| 过程 → 结果 | 结果 → 反向论证 |
| 例:数学解题(从公理逐步演算) | 例:医生诊断(先怀疑某疾病,再查证症状) |
| 特征:依赖显式推理链条,结果产生于过程末端。 | 特征:结果先行,过程用于合理化预设立场。 |
5.2 大模型的本质
大模型的思维模式,可以想象成一个独特的 “在迷宫中寻找最优路径的寻路者” ,其行动模式是「概率驱动的路径选择」。
这个模式主要包含两个核心环节:
1. 全局规划能力 (Global Planning)
在输出第一个 Token 之前,大模型(如 DeepSeek R1)就已经通过审视问题,形成了大致倾向。就好比模型已经先 “俯瞰” 一眼整个迷宫(审视问题),获得了一种 “直觉罗盘” 。这个罗盘并不会显示出完整的、一步不差的通关路线,但它会在模型心中建立一个强大的方向感,始终指向终点(高概率正确答案)所在的大致方位。
2. 自回归生成 Token (Autoregressive Generation)
当模型走进迷宫,开始一步步生成答案时,它并非在盲目试错。在每一个岔路口(生成下一个词),它都会参照“直觉罗盘”的方向感,选择那个最有可能通往终点的路径。整个推理链(CoT)的构建,就是在罗盘指引下,一次次选择岔路口的过程。
但是,受到部分影响后,模型也可能会偏离最初的规划。
- 长上下文遗忘:迷宫过于庞大和复杂,在绕了太多路之后,寻路者可能会逐渐“忘记”最初罗盘给出的方向感,只能依赖最近几个路口的记忆来做决定,从而误入歧途。
- 模型幻觉:在某个关键岔路口做出了错误判断,走进了一个“死胡同”。更糟糕的是,它没有意识到这是死胡同,反而基于这条错误的路线继续“探索”,结果离终点越来越远。
- 随机性干预:为了寻找可能的“捷径”或探索迷宫的未知区域,寻路者有时会主动选择一条罗盘并未强烈推荐的道路(如调整
temperature参数)。这种冒险可能带来惊喜,也可能导致彻底迷路。
注意的是, DeepSeek R1 输出的 CoT 并非严格意义上从一个已知的、静态的“预设答案”进行逆向构造,而是在一个强大的、以正确答案为导向的“罗盘指引” 下,顺向生成最可能通往正确答案的推理路径。