为了训练模型理解强化学习从AI反馈 (RLAIF) 中的AI判断,偏好模型是一个主要的组成部分。它的目标是学习一个函数,我们称之为 $p_\theta$,该函数评估给定输入提示 $x$ 下,一个回复 $y_w$ (胜者) 优于另一个回复 $y_l$ (败者) 的概率,依据AI标注器使用的标准。用数学表示,我们希望模型化:$$ p_\theta(y_w \succ y_l | x) $$这个偏好模型作为AI标注器判断过程的代表,使我们能够在强化学习阶段对任意回复进行评分。偏好模型架构一种常见且有效的方法是调整基础大型语言模型(LLM)架构本身,使其充当偏好模型。其运作方式通常如下:输入: 模型将提示 $x$ 与回复 $y$ 拼接后作为输入。处理: 这个组合输入序列通过Transformer架构进行处理。评分头: 一个线性层(“评分头”)被添加到最终隐藏状态的一个或多个(通常只是对应于回复最后一个token的状态)之上。这个头部输出一个单一的标量值 $s_\theta(x, y)$,表示给定提示下该特定回复的“偏好分数”。参数 $\theta$ 包含LLM的权重(可能会进行微调)以及新添加的评分头的权重。直观上,LLM对语言的深刻理解使其能够把握住使一个回复优于另一个回复的细节差异。另一种选择是,可以单独训练一个独立的、可能更小的模型专门用于偏好评分。这在训练和推理期间可以节省计算资源,但与使用完整的LLM基础模型相比,可能会牺牲部分表示能力。这种选择通常取决于资源限制和偏好标准的复杂程度。训练数据和格式偏好模型以监督方式训练,但它不是直接从标签学习,而是从成对比较中学习。训练数据包含形如 $(x, y_w, y_l)$ 的元组,其中:$x$ 是输入提示。$y_w$ 是AI标注器认为“更好”或“胜出”的回复。$y_l$ 是AI标注器认为“更差”或“落败”的回复。这些元组是使用下一节(“生成AI偏好标签”)中讨论的方法生成的。一个包含各种提示和回复类型、多样且高质量的数据集对于训练偏好模型非常重要。布拉德利-特里模型和损失函数为了训练模型参数 $\theta$,我们需要一种方法将标量分数 $s_\theta(x, y)$ 与概率 $p_\theta(y_w \succ y_l | x)$ 相关联。广泛采用的方法是依赖布拉德利-特里模型,该模型假设 $y_w$ 优于 $y_l$ 的概率可以根据它们潜在质量分数的差异来建模。具体来说,我们使用逻辑函数(Sigmoid)应用于我们模型生成的得分差异:$$ p_\theta(y_w \succ y_l | x) = \sigma(s_\theta(x, y_w) - s_\theta(x, y_l)) $$其中,$\sigma(z) = 1 / (1 + e^{-z})$ 是Sigmoid函数,它可以方便地将分数差异(范围从 $-\infty$ 到 $+\infty$)映射到0到1之间的概率。训练目标是最大化在训练数据集 $\mathcal{D}$ 中观察到的偏好判断的似然。这等同于最小化这些偏好的负对数似然,通常称为成对偏好损失:$$ \mathcal{L}(\theta) = - \mathbb{E}{(x, y_w, y_l) \sim \mathcal{D}} [\log p\theta(y_w \succ y_l | x)] $$代入Sigmoid公式,损失变为:$$ \mathcal{L}(\theta) = - \mathbb{E}{(x, y_w, y_l) \sim \mathcal{D}} [\log \sigma(s\theta(x, y_w) - s_\theta(x, y_l))] $$这个损失函数促使模型对数据集中每个三元组中的胜出回复 $y_w$ 赋予比落败回复 $y_l$ 更高的分数 $s_\theta$。digraph G { rankdir=LR; node [shape=box, style=rounded, fontname="sans-serif", fontsize=10, margin=0.2]; edge [fontname="sans-serif", fontsize=9]; subgraph cluster_input { label = "输入数据点"; bgcolor="#e9ecef"; prompt [label="提示 (x)"]; resp_w [label="胜出回复 (yw)"]; resp_l [label="落败回复 (yl)"]; } subgraph cluster_model { label = "偏好模型 (含评分头 s_theta)"; bgcolor="#d0bfff"; model_w [label="s_theta(x, yw)"]; model_l [label="s_theta(x, yl)"]; } subgraph cluster_calc { label = "比较与概率"; bgcolor="#a5d8ff"; diff [label="分数差异\ns_theta(x, yw) - s_theta(x, yl)", shape=ellipse]; sigmoid [label="Sigmoid (σ)", shape=ellipse]; prob [label="预测概率\np_theta(yw > yl | x)", shape= Mdiamond, color="#1c7ed6"]; } prompt -> model_w [label=" 输入"]; resp_w -> model_w; prompt -> model_l [label=" 输入"]; resp_l -> model_l; model_w -> diff; model_l -> diff; diff -> sigmoid; sigmoid -> prob; prob -> loss [label="与真实情况比较 (隐式 = 1.0)", style=dashed]; loss [label="计算损失\nlog(p_theta)", shape=note, color="#f03e3e"]; }偏好模型训练过程。对于每个数据点 $(x, y_w, y_l)$,模型会计算两个回复的 $s_\theta$ 分数。分数差异通过Sigmoid函数得到预测概率 $p_\theta(y_w \succ y_l | x)$,该概率用于计算损失。实现方面需要注意的事项评分效率: 训练时,您会计算 $s_\theta(x, y_w)$ 和 $s_\theta(x, y_l)$。这通常涉及对每个训练样本 $(x, y_w, y_l)$ 进行两次通过底层Transformer模型的单独前向传播。一些实现通过将提示和两个回复打包成一个序列来优化此过程(如果可能),但这可能会使注意力掩码变得复杂。优化器和学习率: AdamW等标准优化器被普遍使用。学习率通常较小(例如,微调大型基础模型时在 $10^{-6}$ 到 $10^{-5}$ 范围),并且通常采用学习率调度,例如线性衰减。初始化: 如果微调预训练的LLM,评分头会随机初始化,而基础模型的权重则保持其预训练值。基础模型权重可能最初被冻结,或者与头部一起进行微调。梯度累积: 由于模型规模较大以及输入序列(提示 + 回复)可能较长,梯度累积常用于模拟比直接适应GPU内存更大的批次大小。AI偏好建模中的困难使用AI生成标签训练偏好模型会带来一些特殊困难,这与使用人类标签不同:标签质量与噪声: AI标注器并非万无一失。它可能根据自身的局限性或用于引导的启发式方法产生有噪声、不一致或系统性偏差的偏好。偏好模型必须在这种噪声下学习到潜在的偏好信号。可能会采用数据集过滤(移除AI表达低置信度的对)或鲁棒损失函数等方法。校准: 原始分数 $s_\theta(x, y)$ 是基于差异训练的。它们的绝对值本身可能不是经过良好校准的概率或有意义的质量指标。尽管这通常足以进行排序,但转换为强化学习的奖励信号可能需要归一化或校准步骤以确保强化学习训练的稳定性。泛化能力: 偏好模型需要有效地泛化到强化学习训练期间遇到的新提示和回复,这些提示和回复可能与其自身的训练集不同。泛化能力差可能导致不准确的奖励信号,阻碍强化学习智能体的学习。计算资源: 将大型LLM微调为偏好模型需要大量的计算资源(GPU、TPU、时间),这与其他LLM训练任务类似。成功训练这个偏好模型是RLAIF流程中的重要一步。它学习到的评分函数 $s_\theta(x, y)$,成为生成奖励信号的依据,该信号在随后的强化学习阶段引导LLM策略,我们接下来会探讨。