定义
思维链 (Chain-of-thought,CoT) 的概念是在 Google 的论文 "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models" 中被首次提出。思维链(CoT)是一种改进的提示策略,用于提高 LLM 在复杂推理任务中的性能,如算术推理、常识推理和符号推理。
如上图,左边是传统的输入输出,右边是基于CoT思想的输入及输出。高亮部分及CoT, 说白了就是一个推理过程。
few-shot CoT
Few-shot CoT 是 ICL (in-context-learning)的一种特殊情况,它通过融合 CoT 推理步骤,将每个演示〈input,output〉扩充为〈input,CoT,output〉。
类似上图所示右边的例子
zero-shot CoT
与 Few-shot CoT 不同,Zero-shot CoT 在 prompt 中不包括人工标注的任务演示。相反,它直接生成推理步骤,然后使用生成的 CoT 来导出答案。其中 LLM 首先由 “Let's think step by step” 提示生成推理步骤,然后由 “Therefore, the answer is” 提示得出最终答案。
举例:
假设我们有如下一个原始问题:
罗杰有5个网球。他又买了2罐网球。每个罐子有3个网球。他现在有多少个网球?
步骤一:构建prompt如下,让模型输出推理过程
问:罗杰有5个网球。他又买了2罐网球。每个罐子有3个网球。他现在有多少个网球?
答:让我们一步一步的思考。
模型输出结果:
首先,罗杰原本有 5 个网球。
然后,他买了 2 罐网球,每罐有 3 个网球,所以总共买了 2 * 3 = 6 个网球。
因此,罗杰现在有的网球数量为:
5(原来的网球) + 6(新买的网球) = 11 个网球。
步骤二:我们已经拿到了模型的推理过程了(即CoT),现在我们把CoT拼接起来,构造一个新的prompt给模型输出最终答案,prompt 如下:
问:罗杰有5个网球。他又买了2罐网球。每个罐子有3个网球。他现在有多少个网球?
答:让我们一步一步的思考。
首先,罗杰原本有 5 个网球。
然后,他买了 2 罐网球,每罐有 3 个网球,所以总共买了 2 * 3 = 6 个网球。
因此,罗杰现在有的网球数量为:
5(原来的网球) + 6(新买的网球) = 11 个网球。
所以最后的答案是:
模型输出:
罗杰现在有 11 个网球。
结论
-
CoT 对小模型作用不大,模型参数至少达到 10B 才有效果,达到 100B 效果才明显。并且,从小模型的输出可以看出,它们大部分是输出了流畅但不合逻辑的 CoT,因此得到错误的结果。
-
CoT 对复杂的问题的性能增益更大,例如 GSM8K(更难,因为基线最低)上 GPT-3 和 PaLM 的性能增加了一倍多。而对于 MAWPS-SingleOp(更简单的任务),性能改进非常小甚至是负面的。
-
加上 CoT 的 PaLM 540B 超过了任务特定的用监督学习训练的模型的最优结果。不加 CoT 的话 GSM8K 和 MAWPS 任务上 LLM 的结果比不过最优的监督学习模型。