CoT: Chain of Thought
思维链,在人工智能领域,是一个非常非常新的概念。
2022 年 1 月,它的相关论文才被放到 arxiv 上,成果也特别惊艳,谷歌在当年五月的年度开发者大会 Google I/O 2022,也对思维链这一研究成果进行了宣传。当时同台宣传的还有大模型 PaLM 和 Pixel 系列手机等。
你可能发现了华点,怎么让思维链闻名世界的,却变成了 OpenAI 的 ChatGPT 呢?
这就要提到一个奇男子——思维链的提出者 Jason Wei。
之所以神奇,一是本人能力卓绝——这位华人科学家,2020 年本科毕业成为谷歌大脑的高级研究员,在任职期间,提出了思维链的概念,发现思维链可以在大语言模型中增强推理能力。
二是他的个人际遇,对 AI 影响很大,2022 年 2 月他离开谷歌,加入了 OpenAI,进入 ChatGPT 团队,这也是思维链在 OpenAI 发扬光大,让 ChatGPT 拔得头筹的原因之一。
那这位奇男子和同事的工作,究竟干了什么呢?
Chain-of-Thought Prompting Elicits Reasoning in Large Language Models 没错,就是这篇思维链的开山之作。
谷歌之前在大模型下了很大功夫,GPT 生成式预训练模型中的“T”,也就是 Transformer,就是谷歌大脑搞出来的。但是,预训练 + 精调的大模型搞了几年,仍然没办法很好地完成多步骤推理任务,比如数学问题和常识推理。
所以 Jason Wei 等人提出了思维链提示的方法,真的一下子就让大模型的逻辑推理能力不一样了。
具体来说,有三个不一样:
常识推理能力赶超人类。以前的语言模型,在很多挑战性任务上都达不到人类水平,而采用思维链提示的大语言模型,在 Bench Hard(BBH) 评测基准的 23 个任务中,有 17 个任务的表现都优于人类基线。比如常识推理中会包括对身体和互动的理解,而在运动理解 sports understanding 方面,思维链的表现就超过了运动爱好者(95% vs 84%)。
数学逻辑推理大幅提升。一般来说,语言模型在算术推理任务上的表现不太好,而应用了思维链之后,大语言模型的逻辑推理能力突飞猛进。MultiArith 和 GSM8K 这两个数据集,测试的是语言模型解决数学问题的能力,而通过思维链提示,PaLM 这个大语言模型比传统提示学习的性能提高了 300%!在 MultiArith 和 GSM8K 上的表现提升巨大,甚至超过了有监督学习的最优表现。这意味着,大语言模型也可以解决那些需要精确的、分步骤计算的复杂数学问题。
大语言模型更具可解释性,更加可信。
这看起来很不可思议,然而 CoT 方法却极其简单。CoT 提示过程是一种最近开发的提示方法,它鼓励大语言模型解释其推理过程。思维链的主要思想是通过向大语言模型展示一些少量的 exapmles,在样例中解释推理过程,大语言模型在回答提示时也会显示推理过程。这种推理的解释往往会引导出更准确的结果。
TakeAway Message: CoT对于小规模模型未必有效,但对于大规模模型,CoT可以显著提高其推理能力。
CoT 的适用场景抽象一下可以被归纳为三点,分别是使用大模型、任务需要复杂推理、参数量的增加无法使得模型性能显著提升。此外,现有的论文实验也表明,CoT 更加适合复杂的推理任务,比如计算或编程,不太适用于简单的单项选择、序列标记等任务之中,并且 CoT 并不适用于那些参数量较小的模型(20B以下),在小模型中使用 CoT 非常有可能会造成幻觉等等问题。
一个完整的包含 CoT 的 Prompt 往往由指令(Instruction),逻辑依据(Rationale),示例(Exemplars)三部分组成。
指令:用于描述问题并且告知大模型的输出格式;
逻辑依据:指 CoT 的中间推理过程,可以包含问题的解决方案、中间推理步骤以及与问题相关的任何外部知识;
示例:指以少样本的方式为大模型提供输入输出对的基本格式,每一个示例都包含:问题,推理过程与答案。
以是否包含示例为区分,可以将 CoT 分为 Zero-Shot-CoT 与 Few-Shot-CoT:
Zero-Shot-CoT 不添加示例而仅仅在指令中添加一行经典的“Let’s think step by step”,就可以“唤醒”大模型的推理能力。
Few-Shot-Cot 则在示例中详细描述了“解题步骤”,让模型照猫画虎得到推理能力。