根据指令数据对预训练后的模型进行微调
监督式微调阶段涉及到另一轮对下一 token 的预测。但是,不同于之前的预训练阶段,模型现在处理的是成对的「指令 - 输出」,如上图所示。在这里,指令是指提供给模型的输入(根据任务的不同,指令中有时候会带有可选的输入文本)。输出则是模型给出的接近我们期望的响应。
这里给出一个具体示例,对于下面这一对「指令 - 输出」:
指令:"Write a limerick about a pelican."
输出:"There once was a pelican so fine..."
模型将指令文本(Write a limerick about a pelican)作为输入,执行下一 token 预测获得输出文本(There once was a pelican so fine...)。
尽管预测下一 token 这个训练目标是相似的,但监督式微调使用的数据集通常比预训练所用的小得多。这是因为它需要的是指令 - 输出对,而不只是原始文本。为了构建这样一个数据集,必需有一个人类(或另一个高质量 LLM)来根据给定指令写出所需输出 —— 创建这样一个数据集非常费力。
在这个监督式微调阶段之后,还有另一个微调阶段,该阶段通常被称为「对齐」步骤,其主要目标是将 LLM 与人类偏好对齐。这就是 RLHF 的用武之地。
两种 RLHF 的差异,图片改编自 Llama-2 论文
总结起来,Llama-2-chat 遵循与 InstructGPT 的 RLHF 第 1 步相同的基于指令数据的监督式微调步骤。然而,在 RLHF 第 2 步,Llama-2-chat 是创建两个奖励模型,而不是一个。此外,Llama-2-chat 模型会经历多个演进阶段,奖励模型也会根据 Llama-2-chat 中涌现的错误而获得更新。它还有一个额外的拒绝采样步骤。 边际损失
还有另一个区别未在上图中给出,其涉及到生成奖励模型时对模型响应排序的方式。在之前讨论的 InstructGPT 所用的标准 RLHF PPO 中,研究者会根据自己创建的「k 选 2」比较方法来收集排名 4-9 的输出响应。
举个例子,如果一位人类标注者要对 4 个响应(A-D)进行排名,比如 A < C < D < B,这会有「4 选 2」=6 次比较。
A < C
A < D
A < B
C < D
C < B
D < B
类似地,Llama 2 的数据集基于对响应的二元比较,例如 A < B。然而,每位人类标记者在每轮标记时仅会比较 2 个响应(而不是 4-9 个响应)。
此外,Llama 2 方法的另一个不同之处是在每次二元排名时会收集一个「边际」标签(范围从「优势显著」到「优势可忽略」),这可以通过一个附加的边际参数被用于二元排名损失(可选)以计算两个响应之间的差距。
在训练奖励模型方面,InstructGPT 使用的是以下基于交叉熵的排名损失:
来自 Constitutional AI 论文
上图中的「red teaming(红队)」这一术语指的是一种源于冷战军事演习的测试方法,原本是指扮演苏联角色的演习队伍,用于测试美国的战略和防御能力。
在 AI 研究的网络安全语境中,红队现在描述的是这样一个过程:外部或内部的专家模仿潜在的对手,通过模仿真实世界攻击者的战术、技术和工作流程来挑战、测试并最终提升给定的相关系统。 论文 2:《The Wisdom of Hindsight Makes Language Models Better Instruction Followers》
来自上述论文的方法及实验结果比较
注意这项研究不能直接与 InstructGPT 中的 RLHF 工作进行比较,因为它似乎使用启发式方法(「但是,由于大多数人类反馈数据都难以收集,所以我们采用了一个脚本化的反馈函数……」)不过 HIR 的事后高见方法的结果依然非常引人注目。 论文 3:《Direct Preference Optimization:Your Language Model is Secretly a Reward Model》