AI 基建
0%
第四部分 · 推理与测试时算力 · 第 24 章

引出推理

作者Changkun Ou
阅读时长约 13 分钟

改变模型回答,不一定要改权重。即使权重固定,系统仍可要求模型写出中间过程、生成多个候选、提取答案并相互比较,或在部分解之间搜索。这些选择都在请求到达后增加计算,因此属于推断过程,而不是训练写入的新能力。

这个区别让本章的主张保持克制。更长的轨迹可能让后续词元得到更好的答案,也可能把早期错误一路带下去。增加采样可以提高候选集中出现好答案的概率,却不会告诉系统哪个答案好。搜索能从错误分支退回,前提是评估器认得出更好的分支。因此,真正应该评价的是完整推断流水线,而不是一句「一步一步思考」。

权重固定,推断过程可变

引出推理改变的是模型周围的计算,模型权重本身保持固定。一套生产流程至少要作出五项选择:

组件 回答的问题 常见选项
提示或任务表示 模型看到什么问题和输出契约? 直接请求、示例、问题分解提示、工具状态
候选生成器 产生哪些可能的解? 贪心解码、温度采样、迭代扩展
答案提取器 如何把轨迹转成可比较的答案? 解析器、规范化器、结构化输出解码器
选择器或验证器 最终返回哪个候选? 第一个结果、答案众数、确定性检查器、习得评分器
预算与停止规则 流程最多可以投入多少工作? 词元上限、样本上限、截止时间、置信度或验证停止条件

这些选择可以组合。一条链只使用一个提示、一个候选,也不作比较。自一致性会采样多条链,再选择答案众数。Best-of-nn 为完整候选评分。树搜索会反复生成部分状态并为其评分。把它们统称为「推理提示」,会掩盖额外工作和新的失效模式究竟从哪里进入。

request 请求 prepare 提示或任务表示 request->prepare budget 词元 · 样本 · 评分器 延迟预算 prepare->budget generate 生成候选轨迹 一条、多条或搜索前沿 extract 提取并规范化答案 generate->extract select 选择、核查或弃答 extract->select response 回答 select->response budget->generate
图 24.1. 固定权重下的推理引出流水线。提示改变条件生成,提取器让答案可以相互比较,选择器再把候选集变成一项回答。预算约束所有阶段。

对一条生成的推理过程 rr 和最终答案 yy,自回归模型可以写成

pθ(r,yx)=pθ(rx)pθ(yx,r).p_\theta(r,y \mid x) = p_\theta(r \mid x)\,p_\theta(y \mid x,r).

其中,xx 是准备好的提示,θ\theta 是固定的参数集合,rr 是生成的中间文本,yy 是最终答案。由于 rr 出现在 yy 之前,它会成为生成 yy 时所用上下文的一部分。这个分解式说明中间文本为何能影响答案,但并不能证明 rr 如实反映了促成答案的全部计算,也不能证明更长的 rr 一定更好。

一条轨迹:思维链与问题分解

用中间文本承担计算,早于「思维链」这个名称。草稿方法让模型先输出中间计算,再给出答案;Wei 等人则发现,在提示中加入少量带有思维链的完整示例,可以改善足够大模型在算术、常识和符号推理任务上的表现 (Nye et al. 2021; Wei et al. 2022)。这里的模型规模限定很重要:结果并非在较小模型上一致出现,这些实验所证明的是基准上的改善,而不是适用于所有多步任务的一般规律。

Kojima 等人移除了完整示例,只使用「Let's think step by step」这条指令 (Kojima et al. 2022)。他们的 Zero-shot-CoT 是一种两阶段提示:第一次调用生成中间文本,第二次调用再用针对答案的提示,从中提取符合指定格式的最终答案。「零样本」只表示提示中没有针对该任务的示例,并不表示模型在训练期间从未见过推理示范。

两项结果都说明,即使不更新权重,改变要求模型生成的输出序列也会改变表现。不过,这不能证明这种能力原本潜伏在模型里,只是被提示解锁。生成的推理文本会改变上下文,从而改变后续计算。它是否有用取决于任务和模型;Wei 等人的消融实验也显示,只有填充作用的词元并不能复现思维链带来的收益。

思维链(CoT),即一条写出来的中间推理步骤链,仍由模型自行判断下一步做什么。由简入繁(least-to-most) 则明确组织了这个过程:先要求模型分解问题,再按依赖顺序求解各个子问题,并把先前答案带入后续步骤 (Zhou et al. 2023)。当分解可靠,而且每个早期结果都为下一子问题提供所需信息时,这种方法可能有帮助;它也可能在求解第一个子问题之前就失败,因为漏掉子问题、排错依赖顺序或较早得到错误答案,都会污染后续过程。论文中最强的外推结果来自专门为任务设计的 SCAN 设置,其他任务上的收益较小。问题分解是一项设计选择,而不是普遍有效的升级。

多条轨迹:自一致性估计的是众数

单条采样链可能缺乏代表性。自一致性(self-consistency) 会在非零温度下采样多条链,从每条链提取最终答案,再返回出现频率最高的规范化答案 (Wang et al. 2023)。这是对答案经验众数的估计,通常称为相对多数投票,不一定获得严格多数。

rir_i 为第 ii 条采样轨迹,e(ri)e(r_i) 为答案提取器的输出,Y\mathcal{Y} 为规范化答案的集合。采样 nn 次后,

π^n(yx)=1ni=1n1[e(ri)=y],y^mode=argmaxyYπ^n(yx).\widehat{\pi}_n(y \mid x) = \frac{1}{n}\sum_{i=1}^{n}\mathbf{1}[e(r_i)=y], \qquad \widehat y_{\text{mode}} = \arg\max_{y\in\mathcal{Y}}\widehat{\pi}_n(y \mid x).

其中,条件成立时 1[]\mathbf{1}[\cdot] 取 1,否则取 0;π^n\widehat{\pi}_n 是观察到的答案频率,y^mode\widehat y_{\text{mode}} 是最终选择的答案。众数获得的票数可能不到一半。实现还必须规定答案提取、等价关系、规范化、弃答和平票处理。例如,0.51/2 和「二分之一」可以表示同一个答案,字符串却各不相同。

「投票可以放大准确率」这一常见说法依赖更强的假设。在一个二元玩具模型中,假设每条链有条件独立,并且各自以概率 pp 答对;再令奇数样本数 n=2m+1n=2m+1。多数投票的准确率为

An(p)=k=m+1n(nk)pk(1p)nk.A_n(p)=\sum_{k=m+1}^{n}\binom{n}{k}p^k(1-p)^{n-k}.

其中,m=(n1)/2m=(n-1)/2kk 是正确票数,(nk)\binom{n}{k} 表示从 nn 个样本中选出这 kk 个正确样本的方式数。在这些假设下,当 p>1/2p>1/2 时,增加 nn 会改善投票结果;当 p<1/2p<1/2 时,反而会使结果更差。真实轨迹可能产生许多不同的错误答案,错误之间也存在相关性。即使正确答案的比例低于 50%,它仍可能是总体中唯一的众数;同样,一个共有的错误答案也可能越来越占优势。

下面的计算加入了一种简单的共模错误。这里,ρ[0,1]\rho\in[0,1] 表示所有链共享同一个结果的概率;其余情况下,各条链相互独立。提高 ρ\rho 不会改变单链准确率,却会消除投票带来的大部分收益。

from math import comb

def independent_majority(n, p):
    threshold = n // 2 + 1
    return sum(
        comb(n, k) * p**k * (1 - p)**(n - k)
        for k in range(threshold, n + 1)
    )

def shared_error_majority(n, p, rho):
    independent = independent_majority(n, p)
    return rho * p + (1 - rho) * independent

p = 0.55
for rho in (0.0, 0.25, 0.75):
    values = [shared_error_majority(n, p, rho) for n in (1, 3, 5, 11, 21)]
    print(f"rho={rho:.2f}: " + ", ".join(f"{value:.3f}" for value in values))

当采样确实产生意义不同的路径、答案提取器可靠,而且系统性错误不会形成最大的答案簇时,自一致性最有效。如果每条轨迹都重复同一个错误前提,仅仅措辞不同并不能提供真正的多样性。

从轨迹走向搜索

采样完整轨迹,会为每个候选投入同样多的注意力。搜索会先检查部分工作,再决定下一份计算投向哪里。Tree of Thoughts 将这个控制器明确引入语言模型推断 (Yao et al. 2023)。一项具体的搜索流程必须定义五个与任务相关的要素:

搜索选择 必须明确的内容 设计薄弱时的失效方式
思考单元 什么算作一个部分状态或一步? 状态小到无法评估,或大到难以修订
扩展规则 如何从当前状态提出子状态? 可行的延续路径从未进入搜索树
状态评估器 如何为部分状态排序? 看似合理的错误排在仍可挽救的路径之前
前沿策略 哪些状态仍可继续扩展? 广度浪费在重复状态上,或优良分支被剪掉
停止规则 何时接受、回溯、耗尽预算或弃答? 搜索越过有效区间,或尚未核查便停止

Tree of Thoughts 用针对任务设计的思考单元、模型生成与自我评估,以及广度优先或深度优先搜索,具体实现了这些选择。它在「24 点」任务上的大幅提升,是这套设置适合具有有效分支的任务的证据,并不能证明树搜索在任意工作负载上都优于采样。Xie 等人同样把提示生成的自我评估分数与随机束搜索结合,并报告了因任务而异的收益 (Xie et al. 2023)。在这两种方法中,评估器是方法的一部分,并不是全知的判定器。更宽的搜索可能放大评估器误差,因为它会呈现更多得分很高的错误。

G cluster_chain 单链 cluster_tree 保留的树 cluster_search 评估器引导 c0 c1 c0->c1 c2 c1->c2 c3 c2->c3 t0 t1 t0->t1 t2 t0->t2 t3 t1->t3 t4 t1->t4 t5 t2->t5 s0 s1 s0->s1 s2 s0->s2 s3 s1->s3 s4 s1->s4 s5 s3->s5
图 24.2. 三种控制器形态。链只承诺一条延续路径,树保留多个备选,价值引导搜索则依据评估器剪枝。高亮路径只是示意,并非已知真值。
图 24.3. 同一棵合成树上的三种控制策略。价值引导策略依据示意分数维持较窄的搜索前沿,并不知道哪条路径真正正确。切换策略可以比较各自保留的状态数量。

AlphaZero 式的语言搜索位于「引出」的边界。这里引用的 TS-LLM 工作会从 rollout 数据训练策略、价值和结果奖励组件,再在搜索期间使用它们 (Wan et al. 2024)。一次运行中的推断策略或许保持冻结,但引导信号并不是在没有训练的情况下凭空出现的。下一章 第 25 章 将详细展开搜索层,并说明为什么自由形式的语言状态无法直接套用清晰的棋盘游戏类比。

选择:既要有合格候选,也要认得出来

Best-of-nn 会采样 nn 个完整候选,为它们评分,再返回得分最高者。两件事必须同时成功:候选集必须先覆盖至少一个可接受的答案,选择器还必须认出它。

cic_i 为第 ii 个候选,z(ci){0,1}z(c_i)\in\{0,1\} 是对其可接受性的独立判定,j=S(c1,,cn)j=S(c_1,\ldots,c_n) 是选择器 SS 选出的索引。定义单次请求的选择遗憾

Rsel=max1inz(ci)z(cj).R_{\text{sel}} = \max_{1\le i\le n} z(c_i) - z(c_j).

Rsel=1R_{\text{sel}}=1 表示存在可接受的候选,但选择器错过了它。如果所有候选都不可接受,覆盖失败,此时即使系统同样失败,选择遗憾仍为零。把两者分开,可以避免一种常见的诊断错误:增加样本改善的是候选覆盖,改进检查器或评分器改善的才是选择。

不同选择器提供的证据也不同:

  • 答案众数衡量的是答案提取后的共识。它不需要另设评判者,但相关错误可能成为得票最多的答案。
  • 确定性检查器执行的是编码好的判定条件。精确数值相等只能检查最终数值,单元测试只覆盖自身包含的案例,证明内核核查的是形式化陈述,而不是模型把自然语言翻译成该陈述的过程。
  • 习得评分器根据训练数据估计结果或过程质量。它既可能误接受,也可能误拒绝,尤其容易在激进搜索产生的高分尾部出错。
  • 人工审查可以处理开放式标准,但会增加延迟、成本和意见分歧。

Cobbe 等人把习得的结果验证器用于 GSM8K (Cobbe et al. 2021)。他们生成候选解,根据最终答案是否匹配来标注样本,用这些标签训练验证器,并在测试时为 100 个候选排序。这些标签不能证明每个中间步骤都有效,因此属于结果监督,而不是过程监督。验证提高了实验结果;随着训练题目增加,它也比微调基线扩展得更好。不过,更大的候选集暴露出高分错误后,性能最终反而下降。针对奖励模型优化的受控实验也显示了同一种风险:对习得代理施加越来越强的优化,最终可能降低黄金标准得分 (Gao et al. 2023)。

samples 提取出的答案 42 · 42 · 42 · 37 mode 答案众数 共识 samples->mode check 任务精确检查器 编码条件 samples->check modeout 返回 42 mode->modeout checkout 接受 37 check->checkout
图 24.4. 共识与核查回答的是不同问题。在这个构造示例中,三个候选都回答 42,而针对任务的精确检查器接受了少数答案 37。习得评分器只会增加另一项估计,并不会提供真值。

更广泛的实证记录进一步说明了这一区别。重复采样仍可提高理想选择器下的候选覆盖率,多数投票和习得评分器的选择效果却趋于平坦 (Brown et al. 2024)。这只是特定工作负载上的发现,并不构成普遍适用的样本数阈值。推断计算有多少真正有用,取决于生成器、候选分布、选择器和任务的共同作用。

争议:可见推理是工作产物,不是证明

表现、因果依赖和忠实性是三个容易混淆的问题。表现问的是要求中间文本能否改善最终答案;因果依赖问的是改变中间文本会不会改变答案;忠实性问的是中间文本能否准确揭示真正影响答案的原因。

看起来合理或正确的步骤并不能证明忠实性。Turpin 等人用带有偏见的输入线索改变了模型答案,而模型给出的解释往往没有提到这些线索 (Turpin et al. 2023)。Lanham 等人通过截断、改写或插入错误来干预思维链,发现结果会随任务和模型显著变化 (Lanham et al. 2023)。这些干预只能提供程度不同的证据,不能给出保证。应当把可见的推理过程视为生成的中间文本,其准确性、因果作用和忠实性必须分别评估。它或许有助于调试,却不足以单独支撑 第 55 章 所讨论的安全监督主张。

下层约束

任务所能提供的最廉价可靠证据,决定了哪种推断流程值得运行。答案可以比较时,系统可以选择众数;如果有精确答案检查、可执行测试或形式化检查器,系统就能依据其中编码的属性筛选候选。开放式任务通常只能退回到习得判断或人工判断,并继承它们的误差。搜索会刻意寻找异常高分的状态,因此会进一步加重判断压力。扩大搜索之前,要先在扩大搜索所产生的候选上测试评估器。

将预算与失败策略纳入设计

任何方法都不该仅仅因为会花更多词元就成为默认选项。应当根据任务能提供的证据和服务可以承担的成本来路由:

路线 适用条件 主要失效方式
直接回答 任务简单,或延迟最重要 第一次解码不佳时无法恢复
一条结构化轨迹 中间过程对任务有帮助,而且可以承担一次尝试 早期错误向后传播
采样并取答案众数 答案可以规范化,而且错误足够多样 相关错误形成错误共识
Best-of-nn 经过测试的检查器或评分器可以为完整候选排序 覆盖增长快于选择质量
结构化搜索 部分状态有明确含义,并可在完成前评估 评估器误差经剪枝放大

生产控制器既要有延迟预算,也要有词元预算和评分器预算。容量允许时,可以并行运行独立样本,以缩短实际等待时间,但总工作量不会减少。系统还要为超时、解析失败、平票、没有候选通过,以及评估器意见不一致准备回退方案。返回直接答案、弃答或升级给人工处理,是不同的产品决策,必须明确写出。

每次请求至少要记录:模型与提示版本、采样设置、生成词元数、候选数、提取出的答案、选择器类型与版本、分数或检查结果、最终候选、实际延迟和回退路径。离线评估还应分别报告:

  • 单候选准确率;
  • 理想选择器下的候选覆盖率;
  • 所选答案准确率;
  • 有标签时的选择遗憾;
  • 答案多样性与两两一致率;
  • 按评估器版本统计的误接受率和误拒绝率;
  • 每个正确答案的成本,以及延迟中位数和尾部延迟。

只有当边际收益在与选择器无关的留出集上仍然成立时,才增加预算。如果覆盖继续提高,所选答案准确率却没有改善;如果高分尾部偏离审计质量;或者延迟与成本超过服务等级目标,就应停止扩展或回滚。训练可以摊销反复出现的行为,但不会让推断变得免费;系统也可以只把引出流程路由给困难或高价值请求。这是工作负载层面的计算,而不是提示与训练之间的普遍竞赛。

因此,引出推理是在不更新权重的情况下改变上下文和解码。一条轨迹改变模型后续生成所依赖的序列,多条轨迹改变候选覆盖,选择器改变最终返回哪个候选,搜索改变下一份计算投向哪里。把这些作用分开,后续章节就更容易理解:第 25 章 讨论控制器,第 27 章 讨论评估器,第 30 章 则把两者都纳入预算分配问题。

延伸阅读

  • Wei et al., “Chain-of-Thought Prompting Elicits Reasoning in Large Language Models,” 2022. arXiv:2201.11903
    思维链(CoT)提示通过在少样本示例中加入中间推理步骤,显著提升了大语言模型(LLM)在算术、常识与符号推理任务上的性能。
  • Kojima et al., “Large Language Models are Zero-Shot Reasoners” (零样本思维链), 2022. arXiv:2205.11916
    在问题后添加"Let's think step by step"(Zero-shot-CoT)无需任务特定的少样本示例,即可大幅提升 LLM 在算术和符号推理任务上的思维链(CoT)推理能力。
  • Wang et al., “Self-Consistency Improves Chain of Thought Reasoning in Language Models,” 2023. arXiv:2203.11171
    自洽性方法采样多条推理路径,再选择最一致的最终答案;当概率质量集中于正确答案时,它能提高结果。
  • Zhou et al., “Least-to-Most Prompting Enables Complex Reasoning in Large Language Models,” 2023. arXiv:2205.10625
    由最少到最多提示法将复杂问题分解为更简单的子问题并顺序求解,使大语言模型能够泛化到比示例更难的问题。
  • Yao et al., “Tree of Thoughts: Deliberate Problem Solving with Large Language Models,” 2023. arXiv:2305.10601
    思维树(ToT)框架让大语言模型通过树搜索探索多条推理路径并自评估,将 GPT-4 在 Game of 24 上的成功率从 4% 提升至 74%。
  • Xie et al., “Self-Evaluation Guided Beam Search for Reasoning,” 2023. arXiv:2305.00633
    本文提出将逐步自评估机制与随机束搜索结合,引导大语言模型(LLM)多步推理,在 GSM8K 等推理基准上相比 Codex 基线最高提升 9.56%。
  • Wan et al., “AlphaZero-Like Tree-Search can Guide Large Language Model Decoding and Training,” 2024. arXiv:2309.17179
    TS-LLM 将 AlphaZero 式树搜索与学习到的价值函数相结合,在推理、规划、RLHF 对齐和决策任务中同时引导大语言模型的解码与迭代训练。
  • Cobbe et al., “Training Verifiers to Solve Math Word Problems” (使用训练得到的验证器进行 best-of-N 重排), 2021. arXiv:2110.14168
    Training Verifiers 提出 GSM8K,并展示在数学文字题上采样多个解法再用验证器选择,能胜过只直接微调生成器。

评论

登录后评论