CoT全程是chain of thought,用来描述模型的工作方式或者设立“这样”的工作方式让模型遵循,CoT是一种人和AI交互方式的创新,通常作用于模型外围,所以在初初理解时,可以绕过过于专业的技术概念,从交互的角度理解CoT。
What
CoT是一个技术概念,用于AI领域大语言模型。由于行业内的大语言模型在进行智能对话时显出和真人对话的明显区别,哪怕是非常简单的逻辑问题,比如“小明有5元,苹果2元一个,香蕉3元一个,如何刚好花完5元? ”,模型都会回答出错,一来无法理解最终问题,二来不会自行拆解问题,自然无法给予合理的答复,而这种问题,我们的人类小朋友可以很简单的解决。
Why
用CoT则是为了解决以上这种“模型有很多知识,但不会合理有效利用”的问题,CoT可以教会模型如何使用知识,合理利用自己的知识解决更多范围内的问题。
How
一切东西于AI模型而言都是数据,知识也不例外。如何让模型更好的使用知识,可以参考数据在模型内的存在路径,输入、处理、输出,从这三个维度理解。
输入对应数据、知识库制作,处理对应模型训练或微调,输出对应提示词。
输入/处理决定了模型的知识储备,输出决定了知识的调用效率
以下表格(deepseek)体现了这三种方法的特点,
维度 | 目标 | 核心方法 | 特点 |
输入 | 知识嵌入前期构建 | 1. 提供包含分步推理的训练数据(如数学题的逐步解法) | - 使模型学习推理模式 |
处理 | 知识内化与适配 | 1. 微调模型:在包含推理步骤的数据上进行训练 | - 推理能力内化于模型参数 |
输出 | 知识精准触发 | 1. 设计提示词:加入“请逐步思考”“分步骤回答”等指令 | - 无需修改模型架构 |
应用案例(deepseek-R1)
应用实例:使用 Chain-of-Thought(CoT)解逻辑谜题
--------------------------------------
题目:
*三位嫌疑人(A、B、C)在审讯中分别作出如下陈述:
A:“B 在说谎。”
B:“C 在说谎。”
C:“A 和 B 中至少有一个人说真话。”
已知只有一人说了真话,凶手是谁?*
这是一个经典的逻辑悖论问题,需要通过排除法和逻辑关系推理得出结论。直接给出答案可能导致用户难以理解底层逻辑,而 CoT 可以显式展示推理过程。
传统方法的问题
若直接提问:
> “谁是说真话的唯一一人?凶手是谁?”
模型可能直接回答“凶手是 C”,但存在以下问题:
1. 逻辑跳跃:省略关键推论步骤,用户无法验证答案的正确性。
2. 潜在矛盾:若模型假设错误(例如误判说谎者数量),用户难以发现逻辑漏洞。
-----------------------------------------
CoT 解决方案
通过分步引导模型显式分析每一种可能性,并自洽地推导结论。
1. 输入维度:提供逻辑框架示例
在训练数据中引入带推理模板的问题,例如:
问题:三人中仅一人说真话,其余说谎:
- 甲:“乙是好人。”
- 乙:“丙是坏人。”
- 丙:“甲或乙说谎。”
分步解答:
1. **假设甲说真话**:乙是好人 → 乙的陈述“丙是坏人”必须为真 → 则甲和乙同时说真话,矛盾。
2. **假设乙说真话**:丙是坏人 → 丙的陈述“甲或乙说谎”为假 → 甲和乙都必须说真话,矛盾。
3. **假设丙说真话**:“甲或乙说谎”为真 → 甲和乙必须全说谎。
- 甲的谎言:“乙是好人”为假 → 乙是坏人。
- 乙的谎言:“丙是坏人”为假 → 丙是好人。
结论:唯一可能为丙说真话,乙是凶手。
模型通过此类数据学习“假设-验证”的逻辑框架。
2. 处理维度:强化逻辑推理能力
通过少量高质量逻辑推理数据微调模型(如使用 LoRA 技术),让模型优先生成“逐步排除矛盾”的响应模式。
3. 输出维度:强制分步验证
提示词设计(以 GPT-4 为例):
请解决以下问题,严格按步骤分析:
1. 逐一假设每个嫌疑人说真话,验证是否满足“仅一人说真话”条件;
2. 若发现矛盾则排除该假设;
3. 输出最终自洽的结论。
模型分步输出示例:
假设 A 说真话:
- A 真 → B 的陈述“C 在说谎”为假 → C 说真话。
- 但 C 说真话意味着“A 或 B 中至少有一人说真话”为真 → A已为真,符合条件。
- 矛盾:“仅一人说真话”的约束下,A和C同时为真,违反规则。**排除A为真话者**。
假设 B 说真话:
- B 真 → C 在说谎 → C的陈述“A或B有真话”为假 → A和B必须都说谎。
- 但根据假设,B本身说真话,矛盾。**排除B为真话者**。
假设 C 说真话:
- C 真 → “A或B至少一人说真话”为真,但根据约束只有C自己说真话,因此需要A和B都为谎。
- A说谎:“B在说谎”为假 → B 未说谎(B说真话)→ 与“B必须说谎”矛盾。
- **关键推论修正**:系统错误!需重新核验:
- C 为唯一真话者 → A和B必须都撒谎。
- A 撒谎言 → B 其实未说谎 → 但B的陈述“C在说谎”应为真 → 此时C说谎,矛盾。
- **触发自检**:这表明 C 的假设同样存在矛盾。重新审视题目约束…
→ 发现隐含条件:若“仅一人说真话”且所有路径矛盾,则题目可能有错误,或需重新定义初始假设。
→ **修正后结论**:题目无解,存在逻辑漏洞。
总结
通过 CoT 引导,模型:
- 暴露逻辑矛盾:发现题目潜在漏洞(无解情形),而非强行输出答案。
- 提升透明性:用户可逐行检查假设是否自洽。
- 动态修正路径:通过“自检”步骤主动纠正推理错误。