Command Palette
Search for a command to run...
通过交互式示范教授语言模型自我改进
通过交互式示范教授语言模型自我改进
Xiao Yu Baolin Peng Michel Galley Jianfeng Gao Zhou Yu
摘要
大语言模型(LLM)的自我改进能力,即通过提示使其分析并修正自身输出的能力,近年来受到了研究者的广泛关注。然而,已有研究表明,较小的模型不具备这一能力且难以习得,这进一步扩大了最先进的大语言模型与更具成本效益且速度更快的较小模型之间的性能差距。为缩小这一差距,我们提出了 TRIPOST,一种赋予较小模型自我改进能力的训练算法,并展示了该方法可将 LLaMA-7B 在数学与推理任务上的性能提升高达 7.13%。与以往工作不同,我们通过让较小模型与大语言模型交互,收集其自身生成结果的反馈与改进建议,随后回放这一经验来训练较小模型。我们在四个数学与推理数据集上的实验表明,从自身错误中学习并加以纠正的交互经验,对于较小模型提升性能至关重要。
一句话总结
哥伦比亚大学与微软研究院提出 TRIPOST,这是一种训练算法,通过让较小语言模型与大型 LLM 交互,收集针对自身生成的反馈,并将该经验用于训练,从而为较小语言模型赋予自我改进能力,使 LLaMA-7B 在数学与推理任务上提升高达 7.13%。
核心贡献
- TRIPOST 将自我改进能力从大型语言模型 (LLM) 迁移到较小模型:较小模型与 LLM 交互,针对自身生成收集反馈和修订,然后将该经验重放用于训练。
- 该方法从模型与 LLM 的交互中构建改进轨迹,进行后处理,并使用加权监督学习训练较小模型,以生成有用反馈及对应改进。LLM 演示以较小模型的生成为条件,而不是仅依赖专家示例或预定义规则。
- 在 BIG-Bench Hard 的四个数学与推理数据集上,实验表明 TRIPOST 使 LLaMA-7B 性能提升最多 7.13%。分析表明,从模型自身错误中交互学习并纠正,是小模型提升任务性能的关键。
引言
该工作研究语言模型的自我改进:模型针对自身输出产生反馈,并修订输出以获得更好的答案。这在数学与推理任务中很重要,因为自我改进可以使模型输出更精确、更可靠,但已有研究表明较小模型往往难以产生有用的自我批评,也难以有效学习来自规模大得多的模型所产生演示。尤其是较小模型可能出现不同类型错误,因此用大型模型的自我改进演示训练小模型可能无效。
作者提出 TRIPOST,一种迭代训练算法,帮助小模型通过向专家 LLM 或 Python 工具探索来学习自我改进,过滤并重新平衡所得训练数据,并使用加权监督学习训练模型。该方法聚焦于从小模型自身错误中学习,而不是模仿可能与小模型行为不匹配的大模型演示。在 BIG-Bench Hard 数学与推理数据集上评估,相对于基于真值推理依据训练或直接 LLM 演示训练,TRIPOST 提升了域内和域外性能。
数据集
作者基于 BIG-Bench Hard 构建用于逐步推理和轨迹纠正的数据集。
-
源基准:BIG-Bench,包含 200 多个基于文本的任务。实验使用四个 BIG-Bench Hard 数学与推理任务:
- Multistep Arithmetic:可脚本化任务。
- Word Sorting:可脚本化任务。
- Date Understanding:不可脚本化任务。
- Logical Deduction:不可脚本化任务。
-
金标准理由来源:
- 对可脚本化任务,使用脚本生成逐步理由和反馈。
- 对不可脚本化任务,通过带有 Suzgun et al. 2022 中 CoT 提示词的提示,由 LLM 生成解决方案。
- 仅保留正确的 LLM 生成理由用于训练。
- 对不可脚本化任务,反馈也通过提示 Codex/text-davinci-003 生成。
- Codex 被用作所有任务的改进模块。
-
交互式轨迹编辑后的数据组成:
- 金标准逐步演示。
- 由模型直接生成的正确轨迹。
- 使用模型、反馈和改进模块创建的编辑后轨迹。
-
转换为训练样本:
- 如果某次尝试不正确,数据被拆分为单步改进三元组:尝试、反馈、改进后的尝试。
- 如果某次尝试正确且轨迹结束,数据成为终止对:尝试,以及包含短语 "the final response is correct" 的最终反馈。
- 专家修订可以替换原始尝试和反馈,因此编辑后的尝试和编辑后的反馈被用作标签。
-
过滤:
- 如果改进三元组包含不正确反馈或无效改进步骤,则将其过滤掉。
- 过滤规则在附录中说明。
-
数据集混合:
- 终止正确示例和过滤后的改进三元组被组合为一个训练数据集。
- 超参数 p 控制混合数据中改进三元组的比例。
- 过多的改进三元组会导致模型在上一次尝试已经正确时仍尝试自我改进,从而损害性能。
-
训练与评估划分:
- 四个任务分别划分为已见子任务和未见子任务。
- 较简单问题主要归为已见子任务,用于训练。
- 未见子任务用于衡量泛化能力。
- 划分采用表 2 所示的任务特定分类。
-
给定文本未指定裁剪策略或额外的元数据模式。各子集的确切数据集大小也未报告。
方法
作者将 TRIPOST 构建为一种迭代训练过程,教导较小语言模型 Mθ 从自身错误中学习,而不是从可能与当前能力不匹配的专家演示中学习。其核心观察是,较小模型可能在直接自我改进提示上表现不佳,也难以模仿由规模大得多的模型生成的自我改进轨迹,尤其是在数学和逻辑任务中。如下图所示:
为解决这种能力错配,作者使用较小模型作为主要生成器来产生尝试,然后应用外部反馈和定向编辑,创建与小模型行为保持一致的训练信号。参见框架图:
该算法包含三个主要模块:交互式轨迹编辑、数据后处理、加权模型训练。每次迭代开始时,当前模型为某个任务生成一个初始尝试。框架随后为该尝试添加反馈和纠正,过滤嘈杂或不正确示例,并基于所得监督目标训练模型。
轨迹被表示为由尝试和反馈组成的序列,
x=(x0att,x1fb,x1att,x2fb,…,xmfb),其中 x0att 是由 Mθ 生成的初始尝试,xifb 和 xiatt 分别表示第 i 个反馈和更新后的尝试。当最终反馈表明答案正确时,轨迹结束。直接正确示例采用紧凑形式
xT=(xatt,xfb),其中尝试已经正确,且反馈确认正确性。自我改进示例采用较长形式
xSI=(x0att,x1fb,x1att,…,xmfb),m>1.在交互式轨迹编辑阶段,反馈模块 FBK 检查不正确尝试并识别首个错误步骤。FBK 可以基于 LLM 的评判模块实现,也可以基于规则脚本实现,取决于任务类型。反馈力求精确且渐进,因此框架不会简单要求 LLM 重写整个解答。而是用外部反馈 token 替换较小模型反馈与外部反馈首次不一致的那个反馈:
(x0att,…,xi−1att,xifb∗).随后,改进模块 IMP 使用前一次尝试和修正后的反馈生成改进后的尝试,
xiatt∗,并将其追加到轨迹中:
xedited=(x0att,…,xi−1att,xifb∗,xiatt∗).这种编辑仅局限于已识别首个错误之后的解答部分。较早的正确步骤被保留。这可防止外部模块默默生成完整的专家解答,并确保监督信号反映较小模型合理可学的修正路径。该过程可重复至最大修订次数,直到最终尝试变为正确。如果编辑后的轨迹没有到达正确答案,则将其丢弃。
轨迹编辑后,算法收集三类材料:金标准逐步演示、由 Mθ 直接生成的正确尝试,以及编辑后的自我改进轨迹。为了使监督学习目标统一,每个数据项都被转换为单步改进三元组,
ximp=(xiatt,xifb,xi+1att),如果尝试不正确且需要改进,或被转换为终止正确示例,
xT=(xatt,xfb),如果尝试已经正确。在三元组形式中,如果应用了编辑,则反馈或改进步骤可能来自外部 FBK 或 IMP 模块。
下一阶段对收集的数据进行过滤和重新平衡。过滤会移除根据启发式规则判定反馈或改进步骤不正确的改进三元组。这很重要,因为嘈杂的反馈可能教模型产生无效修正。清理后的示例随后被组合为单个训练集,混合超参数 p 控制改进三元组 ximp 相对于直接正确示例 xT 的比例。这一平衡步骤是训练目标的核心:如果纳入过多改进示例,模型会学会即使初始尝试已经正确也修订答案,从而可能降低整体性能。
最终阶段使用加权监督学习训练 Mθ。目标序列通常包含问题、尝试、反馈和更新后的尝试。损失经过加权,使模型重点学习如何评判和修订自身生成,同时仍从直接正确尝试中学习。形式上,训练目标可写为
L=−t∑wtlogPθ(yt∣q,y<t),其中 q 是问题,yt 是第 t 个监督 token。属于直接正确示例的 tokens 获得基准权重 1.0。属于改进三元组反馈部分 xifb 或改进后尝试部分 xi+1att 的 tokens 获得更大权重 w>1.0。三元组中的初始尝试仍保留在上下文中,但不会以相同方式上调权重。这种加权鼓励解码器学习识别错误并生成修正后续写的关键操作。
作者还探索了一种名为 TRIPOST-auto 的自动平衡变体。该变体不固定改进三元组的比例 p,而是使用生成示例的自然分布:直接正确尝试成为 xT,被修正的尝试成为 ximp。在这种设置下,p 实际上反映了当前模型犯错频率。由于模型不会人为暴露于过多改进案例,它倾向于仅在自我改进修订更可能有用时才尝试自我改进。
实验
在四个 BIG-Bench Hard 数学与推理任务上,使用 LLaMA-7B 学生模型评估,并将 TRIPOST 与推理依据微调、自洽推理依据微调和 LLM 演示微调进行比较。结果表明 TRIPOST 将有用的自我改进行为蒸馏到较小模型中,在提高初始尝试质量和可测量自我改进贡献的同时,取得最佳整体任务性能。额外消融实验和 TRIPOST-auto 变体表明,交互反馈、数据过滤、加权目标,以及改进演示的平衡都很重要;过多自我改进训练会损害可靠性,并且随着模型改进,生成反馈变得更困难。
使用规模大得多的模型生成的自我改进演示来训练较小模型可能无效,因为这两种模型规模倾向于犯不同类型的错误。该示例显示,较小模型会出现简单的复制或算术疏忽,而较大模型则会引入另一种步骤级算术错误。这种能力错配表明,自我改进演示可能无法为较小模型提供匹配良好的学习信号。较小模型和较大模型可能在同一数学示例中因不同类型错误而失败。来自较大模型的自我改进演示可能反映较小模型不会自然犯下的错误。使用来自较大模型的自我改进演示训练较小模型,可能不如基于真值推理依据训练可靠。
数据集类别按任务复杂度组织,较简单实例被指定为用于训练的已见子任务,较复杂实例被留作未见子任务。划分覆盖算术、排序、日期推理和演绎,并使用任务特定指标,例如操作深度、单词数、推理步数和选项数。这种设计支持评估超出训练分布、面向更复杂变体的泛化能力。已见子任务对应更简单的问题类型,而未见子任务使用更高复杂度范围。判定标准因任务而异,比较数学、排序、时序推理和逻辑选择任务中的结构难度。
在四个 BIG-Bench Hard 数据集上,TRIPOST 训练模型在已见和未见任务上均优于 LMSI、真值推理依据微调和 LLM 自我改进演示基线。随着加入更多自我改进迭代,结果通常有所提升,这表明从模型自身错误中学习能够增强初始尝试和修正能力。自我改进演示基线通常表现差于真值推理依据基线,这与大型演示模型和小型学习模型之间的能力差距一致。TRIPOST 在四个数据集上均取得最强整体性能。性能通常随额外自我改进迭代提升。各方法在未见任务上的准确率通常低于已见任务。仅使用 LLM 自我改进演示会降低相对于真值推理依据微调的性能。
TRIPOST 训练模型在四类任务中均表现出正向自我改进贡献,在已见和未见子任务上均出现提升。逻辑演绎观察到最大自我改进贡献,尤其在已见案例中;其他任务提升较小,但一致。整体性能体现为直接正确初始尝试与可测量改进贡献的组合。自我改进在每个任务上都产生正向贡献。逻辑演绎从自我改进中受益最多。已见子任务通常比未见子任务对自我改进贡献更大。直接正确的尝试仍是整体准确率的很大一部分。
TRIPOST-auto 根据当前任务性能自动加权编辑后的改进数据,形成包含较少自我改进示例和更多直接正确尝试的训练混合数据。它减少了模型编辑自身尝试的倾向,却经常比固定重新平衡的 TRIPOST 带来更强的整体任务性能,尤其在较少可脚本化的任务上。TRIPOST-auto 在各任务中几乎没有或没有可测量的自我改进活动。其整体性能通常随迭代提升,并经常超过固定平衡的 TRIPOST,特别是在词排序和逻辑演绎上。
实验在算术、排序、日期推理和演绎任务上使用基于难度的已见与未见划分,以评估超出训练分布的泛化能力。结果显示,来自规模大得多的模型的自我改进演示可能与较小学习模型的典型错误匹配不佳,而 TRIPOST 训练模型在已见和未见任务上均优于 LMSI、真值推理依据微调和 LLM 自我改进演示基线。更多迭代通常能提升性能和正向自我改进贡献,尤其对于逻辑演绎,而自动平衡变体会减少显式编辑行为,却经常在较少可脚本化任务上取得更强整体准确率。