Chain-of-Thought Prompting/zh

    From Marovi AI
    This page is a translated version of the page Chain-of-Thought Prompting and the translation is 100% complete.
    Other languages:
    Article
    Topic area Natural Language Processing
    Prerequisites Transformer, Language Models are Few-Shot Learners


    概述

    思维链提示(CoT)是一种提示技术,通过指示或示范让大型语言模型在给出最终答案之前先产生中间的自然语言推理步骤,从而引出多步推理能力。该方法由 Wei 等人于 2022 年提出,[1]它能在不修改模型权重的前提下,大幅提升模型在算术、常识和符号推理任务上的表现。如今,对于答案依赖于一系列推理而非单一模式匹配的任务而言,思维链提示已成为提示工程的标准组成部分。

    其核心观察是:当提示鼓励模型将推理过程外化为文本时,足够大的语言模型可以解决原本无法解决的问题。中间步骤起到草稿纸的作用:每一步都为下一步提供条件,而最终答案则以完整的推理轨迹为条件。思维链与更广义的推理时计算思想密切相关——以推理时多消耗的 token 换取更高的准确率

    动机

    GPT-3 推广开来的标准少样本提示[2]会先向模型展示若干输入-输出对,然后要求它对一个新的输入进行补全。这一做法在通过单一学习到的关联将输入映射到输出的任务上效果良好,但在多步问题——例如多位数算术、应用题或逻辑推导——上表现不佳。Wei 等人指出,对这些任务而言,瓶颈并非模型的知识,而是其计算资源的分配方式:当模型被迫在单次前向传播中给出答案时,它没有任何机制来分解这一问题。

    相比之下,当每个上下文示例展示的是详细求解过程而非仅仅给出答案时,模型会模仿这一格式,并在推理时自行写出详细的求解过程。这就把提示重新定义为:不仅提供任务本身,还提供解决该任务的过程。

    形式化

    $ x $ 表示输入问题,$ y $ 表示最终答案。标准的少样本提示对 $ p(y \mid x, \mathcal{D}) $ 进行建模,其中 $ \mathcal{D} = \{(x_i, y_i)\}_{i=1}^k $ 是一组示例。思维链引入了一个中间变量 $ r $——推理轨迹——并将提示改为提供 $ \mathcal{D}_{\mathrm{CoT}} = \{(x_i, r_i, y_i)\} $。模型将联合分布分解为

    $ {\displaystyle p(r, y \mid x, \mathcal{D}_{\mathrm{CoT}}) = p(r \mid x, \mathcal{D}_{\mathrm{CoT}})\, p(y \mid x, r, \mathcal{D}_{\mathrm{CoT}}).} $

    在推理时,模型以自回归方式解码:先逐 token 生成 $ r $,再以完整轨迹为条件生成 $ y $。由于 $ r $ 中的每个 token 都会参与后续的注意力计算,这条轨迹实际上扩展了模型可用的计算深度,超出了固定长度的单 token 答案所能提供的范围。

    一种常见的设计选择是用固定的分隔符(例如英文 "The answer is",意为 the answer is)来标记最终答案,以便可以从生成的文本中以程序化的方式提取 $ y $

    少样本思维链

    在少样本思维链中,提示中的每个示例都由一个问题、一份详细解答以及一个最终答案组成。原论文[3]给出的一个经典数学应用题模板示例如下:

     问:Roger 有 5 个网球。他又买了 2 罐网球。
        每罐有 3 个网球。他现在一共有多少个网球?
     答:Roger 起初有 5 个球。每罐 3 个网球、共 2 罐,就是 6
        个网球。5 + 6 = 11。答案是 11。
    

    通常使用四到八个这样的示例就足以在新问题上诱发思维链行为。这些示例不必来自测试分布;跨推理领域的迁移很常见,不过同领域的示例通常有所帮助。

    零样本思维链

    Kojima 等人[4]表明,示例并非严格必需。在问题后追加触发短语 "Let's think step by step"(让我们一步一步思考)通常就足以产生一条推理轨迹,这种方法被称为零样本思维链。随后用第二个提示从轨迹中抽取最终答案。在大多数基准上,零样本思维链都弱于少样本思维链,但它免去了编写示例的人力,也避免了示例泄露答案信息的风险。

    自一致性

    Wang 等人[5]观察到,推理轨迹是带有噪声的:模型可能通过若干不同的论证路径得到正确答案,而错误路径往往各不相同。自一致性方法以非零温度采样 $ N $ 条独立的轨迹,并返回在所得集合 $ \{y^{(1)}, \dots, y^{(N)}\} $ 中出现频次最高的答案。形式化地,预测为

    $ {\displaystyle \hat{y} = \arg\max_{y} \sum_{i=1}^{N} \mathbb{1}[y^{(i)} = y].} $

    在大多数推理基准上,自一致性会随 $ N $ 单调地提升准确率,代价是 $ N $ 倍的推理计算开销。如今,它已成为任何思维链解码器之上的标准包装。

    树形与图形变体

    若干扩展方法在线性单条轨迹之外为推理引入了结构。思维树(Yao 等人,2023)[6]会探索多条部分轨迹,由模型自身对其打分,并使用诸如广度优先搜索或最佳优先搜索之类的搜索算法来扩展最有希望的分支。思维图(Graph of Thoughts)则进一步推广为一个有向图,中间状态可以在其中被合并、精炼或聚合。

    这些变体把推理循环的更大一部分从模型挪到了外部控制器中,以额外的计算开销换取在单条轨迹容易跑偏的任务上的更高鲁棒性

    与替代方法的比较

    思维链只是面向多步推理的若干方法之一。最早用于算术任务的草稿纸方法通过监督微调训练模型输出中间步骤,而非依赖提示。程序辅助语言模型(PAL)以及类似的工具调用方法把算术与逻辑外包给外部解释器,只让模型负责结构性推理。过程奖励模型强化学习中对单个推理步骤进行监督,而不是仅监督最终答案。现代经过推理训练的模型——例如通过基于过程反馈的强化学习训练得到的模型——可以看作已经把思维链内化到了其默认的解码行为中。

    与上述替代方法相比,基于提示的思维链的吸引力在于无需训练,且适用于任何能力足够的模型。其缺点是推理成本较高、对示例选择具有敏感性,而且暴露出来的推理轨迹未必真实反映模型实际产生答案时所做的计算。

    涌现与规模

    思维链所带来的收益与模型规模密切相关。Wei 等人报告:在 GSM8K 数学应用题基准上,当模型规模低于约 100 亿参数时,思维链基本上中立甚至有害;只有在约 600 亿参数左右,它才开始明显超越标准提示。这种能力随规模骤然出现的模式,是讨论大型语言模型涌现能力时被反复引用的标志性例子之一。具体的规模阈值因任务、基础模型家族以及评估指标而异。

    指令微调基于人类反馈的强化学习之间的交互同样重要:经过指令微调的模型常常默认就会产生推理轨迹,从而模糊了由提示诱发的思维链与未经提示的思维链之间的界线。

    局限性

    思维链提示存在若干已被充分记录的失败模式。第一,推理轨迹并不保证是忠实的:模型可能给出听起来合理的论证,但这些论证实际上并不决定它最终给出的答案,这一现象在推理忠实性这一主题下被研究。第二,错误会逐步累积:若早期某一步出错,轨迹的其余部分和最终答案通常会继承该错误,由此产生的看似自信的输出可能比直接的错误答案更具误导性。第三,推理成本随轨迹长度增加,对延迟敏感的部署而言这点不容忽视。最后,对示例措辞和顺序的敏感性意味着对提示的微小扰动也可能引起准确率的大幅波动,使得提示选择本身成为一个调参问题。

    尽管存在上述这些限制,思维链及其衍生方法如今仍是对语言模型进行提示以处理需要多步推理任务时的默认方法,并构成了当前前沿模型所采用的显式推理训练范式的概念基础。

    参考文献