Home / 大语言模型 / 思维链提示:把中间步骤放到答案之前

053 · 思维链提示:把中间步骤放到答案之前

返回目录 · 上一篇:GSM8K与验证器 · 下一篇:InstructGPT

论文:Jason Wei等,Chain-of-Thought Prompting Elicits Reasoning in Large Language Models,2022。原始论文。这里解读的是带有PaLM、Codex等扩展结果的论文版本,不把全部后续表格当成首次预印本已经包含的结果。

图表来源:Jason Wei等,2022,原文;CC BY 4.0。本篇展示做了图形区域裁切,图中数据与标签未改动。

先接住前作的问题

GPT-3的few-shot提示主要示范输入和答案;GSM8K验证器则需要任务训练和候选排序。本篇保留模型权重,改为在示例中展示中间过程,检验一次生成是否能更好分解新题。

五个前置概念

五个前置概念:上下文学习是在固定权重下通过示例改变行为;贪心解码每步选最高概率token;自回归分解让后续输出依赖已有文本;消融改变一项组件检查效果;分布外泛化要求具体说明测试输入与示例在哪一维不同。

一、问题设定:不改权重,过程示例怎样改变一次解答的生成条件

输入xx可以是应用题、常识问题或符号指令,最终答案为yy,中间推导为rr。本篇不微调生成器,也不训练验证模型,主要用一次贪心生成;变量是提示是否展示“问题→过程→答案”,而非采样一百次后择优。

通常的少样本提示由若干(xi,yi)(x_i,y_i)组成;思维链提示改成(xi,ri,yi)(x_i,r_i,y_i)。例如,示例不只说剩下几个物体,还解释先算初始总数、再减去移出的数量。测试时只输入新问题,让模型延续这种格式。

作者希望解决直接映射难以处理多步组合的问题。中间文本把后续生成所需的信息显式写回上下文,允许后续token依赖前面已经算出的结果。这是一种可检查的外部计算轨迹,但“人能读懂”与“忠实反映网络内部原因”是两个不同命题。

二、把推导作为中间变量并区分联合搜索与答案边缘化

令提示示例集合为DD,模型参数为固定的θ\theta。可以用以下分解理解方法:

pθ(r,y∣x,D)=pθ(r∣x,D) pθ(y∣x,r,D).p_\theta(r,y\mid x,D)=p_\theta(r\mid x,D)\,p_\theta(y\mid x,r,D).

这里rr不是新加入的隐藏层,而是实际生成的文本。若希望得到答案的完整概率分布,理论上应对所有rr求和;本文主要实验只生成一条轨迹,并没有执行这个昂贵的边缘化。后续的自一致性论文才用多条采样轨迹近似聚合答案。

最可能的推导,不一定通向最可能的答案

令r为生成过程、y为答案。选择最可能的完整 (r,y)(r,y) 是联合最大化,正确答案概率则要累加所有通向它的r。单条贪心生成还只是联合搜索的近似。中间文本可以提供额外计算步骤,也可能把早期错误写入后续条件;因此原论文的增益应通过等预算和内容消融理解,不能从自回归分解直接推出推理一定更正确。

以下为自构例子:原有12元,买两支各3元的笔,剩多少?直接提示可能输出6;思维链先生成“笔花费2×3=6元”,再生成“12−6=6元”。后一步获得了一个明确可复用的中间量。

用三个推导显示联合最大与答案最大不同

自构三条完整推导的概率为0.35、0.30、0.25,其余0.10分给其它文本。第一条回答A,后两条都回答B。最高概率完整推导支持A,B的累计概率却为0.55。这个例子只说明选择对象不同;单步贪心还未必找到0.35那条,不能把贪心、联合最大和答案边缘最大写成同一个操作。

教法联系:Lilian Weng的Prompt Engineering。算例为本文自构。

三、固定模型与示例,比较生成顺序和长度控制

输入:冻结语言模型,一组问题/推导/答案示例,新问题
把每个示例格式化为:问题 → 推导 → 最终答案
将示例串联,再附上新问题
使用贪心解码生成一条推导与答案
解析最终答案,按照任务规则计分
对照实验:保持示例问题与答案,删去中间推导

算法机制是提示中的示范结构和解码顺序改变,指标则是最终答案准确率。解释“为什么可能有效”时,可提出任务分解、额外自回归计算和中间状态复用等假设;论文通过消融排除部分简单解释,没有给出神经网络必然正确推理的定理。

这种方法也不是在每次测试时给出标准解答。人工写好的推导属于少量示例,新题的推导由模型自己生成。把测试题标准推导塞进上下文再声称零样本推理,会改变评估问题。

四、同时读规模收益、失败任务和过程消融

先在同模型下看提升,再用先答后解释、方程和点号对照辨别顺序、内容与长度;这些消融仍不能证明文字忠实。

项目 设置与证据边界
算术任务 GSM8K、SVAMP、ASDiv、AQuA、MAWPS;检查多步解题和简单子任务
常识任务 CommonsenseQA、StrategyQA、日期、体育、SayCan指令到动作序列;不是统一的现实机器人成功率
符号任务 姓名末字母拼接、硬币翻转;比较示例相同步数与更长步数
模型 LaMDA、PaLM、GPT系列API、Codex、UL2;模型来源、预训练与适配各异
提示预算 算术主要共用八个手写示例;AQuA使用四个训练集示例;常识任务按各自设置
解码 主要贪心生成;单轨迹;扩展表单列外部计算器结果
随机性 LaMDA五种随机示例顺序,报告均值/标准差;其他模型主要单个顺序,不能认为都重复五次
训练与成本 无任务微调;提示及输出变长;没有全面统一的端到端墙钟与成本匹配

对于两个没有训练集的BIG-bench任务,作者把前十个样例用于提示,在剩余样例上计分,不能将提示样例也算进测试正确率。所谓长度分布外评估,具体是从示例的两步扩到三步、四步,不等于任意长度泛化。

论文对API模型与参数量的对应使用推测措辞。解读时应保留具体端点text-davinci-002,而不是把表中“GPT-3 175B”泛化成所有原始GPT-3检查点。模型之间的训练数据差异也使跨模型曲线无法完全隔离参数规模的因果作用。

证据一:附录表1/表2的同模型对照。 PaLM 540B在GSM8K从17.9%升至56.9%,增加39.0个百分点,相对提升约218%(39.0/17.9)。这里没有外部计算器;加计算器为58.6%。这些数值支持该配置下的提示收益,而不是全部数学问题已被解决。Codex在相同表中为19.7%到63.1%,也说明不能仅依据参数规模比较所有模型。

证据二:表2的失败与规模差异。 LaMDA 420M在GSM8K从2.6%降到0.4%,LaMDA 137B在AQuA从25.5%降到20.6%。而PaLM 62B在GSM8K已从9.6%提高到29.9%。因此正文关于“大规模才出现”的描述是所测模型与任务的经验概括,不能变成严格的100B参数阈值。

证据三:图5与附录表6区分内容和长度。 LaMDA 137B在GSM8K的标准提示为6.5±0.4,思维链14.3±0.4;仅方程5.4±0.2、用点号增加计算长度6.4±0.3、先答后解释6.1±0.4。它支持先形成有意义中间步骤的作用,不能证明所有长度匹配方式均无效。点号对照只是某种额外计算载体,并非对任意潜在计算机制的穷尽检验。 提示消融和更换示例的曲线应分开比较:前者改变中间文本形式,后者检验示例选择波动;两者都不是对推理文字忠实性的逐步证明。

思维链、仅方程、增加计算长度及先回答后解释的GSM8K消融
原实验图摘引:Jason Wei等,2022,图5,PDF第6页;核对原文。原版权保留。

证据四:图6与表6的提示风格。 GSM8K不同作者推导得到15.5和17.6,刻意简短版本11.1,都高于6.5基线,但差异仍明显。收益不依赖唯一措辞,不代表措辞不重要。附录A还讨论某些符号任务对示例组织更敏感,这限制了“写一句提示即可稳定复现”的说法。

思维链提示对标注员、书写风格与示例选择的稳健性对照
原文图形摘引:Jason Wei等,2022,图6,PDF第6页;核对原文。

证据五:图8的长度泛化与§3.2错误抽查。 符号任务在比示例更长的输入上获得改善,但低于域内水平。另对LaMDA答对的50份随机解答检查发现两份过程有问题却碰巧答对;对50份答错解答,46%接近正确、54%有较大语义或连贯错误。这是小样本诊断,不能推成全部任务的精确错误分布,更不能证明正确答案必有正确过程。

思维链在字符串拼接和抛硬币任务的域内及域外表现
原文图形摘引:Jason Wei等,2022,图8,PDF第8页;核对原文。

教学算例。 三条完整轨迹概率为0.4、0.3、0.3;第一条通向错误答案A,后两条都通向正确B。最可能轨迹给A,但答案边缘概率B为0.6。这个例子不意味着任意投票都能解决问题,它只精确指出单路径决策损失了哪一部分概率质量。

五、可读推导仍不保证内部忠实或逐步正确

如果模型第一步误写为“两支一共3元”,第二步即使算出9也仍然错。推导的价值是把错误暴露成可定位步骤,正确性仍需核查。可以构造等长的正确推导、错误推导和无关文本对照,进一步研究中间内容的影响;这只是实验建议,未实际运行。

贡献在于把“通过示例引出中间步骤”确立为可跨任务比较的实验操作,并结合模型规模、解题难度、顺序消融与长度泛化展示作用。此前自然语言解答监督已经存在,本文没有发明一切形式的推理文本;它推进的是无需任务训练的少样本提示路径。

代价主要落在推理:更多输入占据上下文,更多串行输出增加延迟,还要设计并维护示例。对于已经很简单的题,长推导可能引入新的出错机会;对于小模型,流畅解释可能只是流畅错误。只比较最终准确率也无法衡量解释的忠实性。

作者在§6明确不以本文回答网络是否在真正推理,并承认正确推理路径没有保证。面向应用,更可靠的问题是:特定任务上是否提高准确率、是否能独立核对、增加了多少成本。把输出文本当作证明或安全保证,超出了实验覆盖范围。

这里还有一个版本核对提醒:附录表1与表6的LaMDA SVAMP数值并不完全相同,主文错误分析中的计算器提升也与扩展汇总表存在差别。本文的核心定量比较统一取指定表格,不把不同表中的数字拼成同一次实验。

六、把单条推导继续接到聚合或自训练

单条推导仍会走错。Self-Consistency直接聚合多路径,STaR把筛选过程写回训练;一个增加推理预算,一个增加训练监督,不可只按回答长度归为同类。

自测与参考答案

1. 为什么思维链提示不等于在新任务上训练模型?

答案:权重被冻结,只改变条件输入以及由此产生的输出序列。示例中的推导不参与梯度更新。若后来将生成的推导收集成数据再微调,那是另一阶段的方法,需要单独计算数据、训练预算和监督来源。

2. 先答后解释效果弱,能否证明模型所有中间文字都忠实?

答案:不能。对照说明在该设置中,答案前可用的推导比答案后解释更有帮助,但不能建立每句文字与网络内部因果过程的一一对应。模型仍可能生成局部错误、事后合理化或偶然正确答案,忠实性需要干预与独立验证。

3. 如何检验收益来自有用分解,而非仅仅输出更长?

答案:固定模型、题目、示例数量和评价规则,对比正确中间步骤、等长无关文本、错误步骤以及直接回答,同时报告token与延迟。论文点号和先答后解释消融提供部分证据;更完整实验还应控制信息量、语义结构和解码预算,避免把一种失败对照当成所有额外计算均无效。