链式思考(Chain-of-Thought, CoT)提示
通过中间推理步骤实现复杂推理能力
什么是链式思考?
链式思考(Chain-of-Thought, CoT)提示由 Wei 等人(2022)引入,通过中间推理步骤实现了复杂的推理能力。你可以将其与少样本提示相结合,以便在回答之前进行推理的更复杂任务上获得更好的结果。
CoT 提示示例
以下是一个使用链式思考提示的示例,任务为判断一组数中的奇数之和是否为偶数:
这组数中的奇数加起来是偶数:4、8、9、15、12、2、1。
A:将所有奇数相加(9、15、1)得到 25。答案为 False。
这组数中的奇数加起来是偶数:17、10、19、4、8、12、24。
A:将所有奇数相加(17、19)得到 36。答案为 True。
这组数中的奇数加起来是偶数:16、11、14、4、8、13、24。
A:将所有奇数相加(11、13)得到 24。答案为 True。
这组数中的奇数加起来是偶数:17、9、10、12、13、4、2。
A:将所有奇数相加(17、9、13)得到 39。答案为 False。
这组数中的奇数加起来是偶数:15、32、5、13、82、7、1。
A:
输出:
将所有奇数相加(15、5、13、7、1)得到 41。答案为 False。
可以看到,在提供推理步骤时得到了完美的结果。实际上,可以通过提供更少的示例来解决此任务,仅一个示例似乎就足够了。
注意:链式思考是一种涌现能力,只有在足够大的语言模型上才会出现。
零样本 CoT 提示
零样本 CoT 由 Kojima 等人(2022)提出,核心思路非常简单——在原始提示后加上"让我们逐步思考"即可。
先看一个不使用 CoT 的例子:
我去超市买了 10 个橘子。送了邻居 2 个,又给了快递小哥 2 个。后来又买了 5 个,自己吃了 1 个。我还剩多少个橘子?
输出:
11 个橘子
答案是不正确的!现在让我们尝试使用零样本 CoT 提示:
我去超市买了 10 个橘子。送了邻居 2 个,又给了快递小哥 2 个。后来又买了 5 个,自己吃了 1 个。我还剩多少个橘子?
让我们逐步思考。
输出:
首先,你从 10 个橘子开始。
你送了邻居 2 个、给了快递小哥 2 个,所以还剩 6 个。
然后又买了 5 个,所以现在有 11 个。
最后自己吃了 1 个,所以还剩 10 个橘子。
令人印象深刻的是,这个简单的提示在这个任务中非常有效。这在没有太多示例可用于提示时特别有用。
CoT 与少样本提示的对比
| 特性 | 少样本提示 | 链式思考(CoT) |
|---|---|---|
| 是否需要示例 | 需要 | 可选(零样本 CoT 不需要) |
| 推理能力 | 有限 | 强(通过中间步骤推理) |
| 适用任务 | 简单分类、格式化 | 算术、常识推理 |
| 模型规模要求 | 中等 | 较大(涌现能力) |