背景
-
不良输出:模型可能会生成各种偏见、不真实信息和有害内容。 -
跟随指令的能力不足:尽管预训练模型可以生成连贯的文本,但它们在遵循用户指令和特定任务规范方面往往较差。例如,当模型被要求生成尊重特定规则或风格的文本时,它们可能无法完全理解并遵循这些具体的要求。
-
语料偏差: -
来源广泛的互联网文本:预训练模型使用大量互联网上的文本数据,这些数据来源多样,包括社交媒体、新闻文章、论坛帖子、百科全书等。这些数据不可避免地包含偏见、不真实信息和有害内容。 -
数据缺乏筛选和校验:由于数据量庞大,预训练过程中难以对每一条数据进行细致筛选和校验,导致模型可能会学习到这些不良特性并在生成输出时反映出来。例如,模型可能会生成带有性别或种族偏见的内容。 -
任务不直接相关: -
广泛涵盖不同主题:预训练数据涵盖了广泛的主题,但其中许多内容与用户实际应用中的具体任务无关。例如,社交媒体上的对话与正式的问答系统所需的语言风格和准确性可能截然不同。 -
缺少特定任务数据: -
尽管预训练数据量大,但并未专门针对某一具体任务进行优化。例如,翻译任务、法律文本解析或医疗文献总结等高度专业化的任务在通用的预训练数据集中可能所占比重很小。 -
训练目标和实际任务不同: -
目标和任务目标不一致:预训练模型的目标是最大化下一个词的预测概率(即最小化语言模型的交叉熵损失)。这一目标虽然能帮助模型掌握语言的语法和词汇模式,但与实际应用中的任务目标不完全一致。预训练侧重语言连贯性,而非任务完成度:模型通过预测下一个词可以生成连贯的文本,但这种连贯性仅限于语言层面,不能保证生成的内容在逻辑、事实准确性或符合特定任务规范方面的表现。例如,在回答问题时,预训练模型可能生成语法正确但内容不准确的回答。 -
缺乏明确的指令跟随:‒ 没有具体任务指导:预训练阶段模型没有被专门指导去遵循具体的指令或规则。这导致模型在面对实际任务时,可能无法完全理解和遵循用户的具体要求。生成风格化文本、遵守伦理和规范、提取特定信息等任务需要更细致的指导和约束,而这在无监督预训练阶段往往缺失。
RLHF

-
第一阶段,根据问题库中的问题和人工标注的回答产生的数据集来监督学习微调模型,得到SFT模型 -
第二阶段,收集一组模型输出的比较数据集,由问题和不同的模型输出组成,标注者指出给定输入的情况下他们更偏好的输出。然后训练一个奖励模型,以预测人类偏好的输出。 -
第三阶段,利用奖励模型的输出作为标量奖励,使用PPO算法微调SFT模型以优化这一奖励 其中,二三步可以迭代进行。
训练细节
-
基于值函数的方法(Value-Based Methods):这些方法通过学习状态值函数 或者动作价值函数 来间接确定策略。典型的算法如 Q-Learning、深度 Q 网络(DQN)等。假设我们可以学习到一个非常近似最优策略 的动作价值函数 , 我们就可以根据动作价值选择相应最高的动作,等于间接获得了最优策略。 -
基于策略的方法(Policy-Based Methods):这些方法直接学习策略,通过优化策略来最大化累计奖励。策略梯度方法(Policy Gradient)是其中的代表。
-
效果显著,应用广泛:‒ 目前的SOTA模型,GPT-4 和 Claude 等模型都选择了RLHF作为对齐算法。 -
奖励建模具备泛化性:‒ 虽然奖励模型可能会倾向于给OOD样本高分,但根据研究(https://arxiv.org/abs/2310.05422),奖励建模具备一定的泛化能力,能够在不同任务中保持有效性。 -
多维度奖励支持 ‒ 奖励建模可以针对不同维度设计奖励。例如一些研究比如Training a Helpful and Harmless Assistant with Reinforcement Learning from Human Feedback, Llama 2: Open Foundation and Fine-Tuned Chat Models(https://arxiv.org/abs/2204.05862)中分别根据“帮助性”和“无害性”两个维度来设计奖励 -
多阶段的训练过程复杂,最终的训练过程需要运行四个模型,计算资源要求高 -
RL本身的不稳定性,对训练参数设置比较敏感。
DPO
论文:
推导过程
训练
-
beta: 同RLHF中的KL项系数beta,值越大表示对偏离参考模型的惩罚越大
-
DPO跳过了RLHF的奖励建模阶段,且只需要运行两个模型。 -
DPO消除了RLHF中的一些关于PPO算法的超参设置,训练更简单 -
DPO在近似奖励模型部分用数据集的经验分布近似真实的数据分布,当两者差异较大时会使训练不稳定。对于数据集中没有覆盖的数据,DPO可能会分配较高的奖励,而RLHF中训练的奖励模型会具有一定的泛化性。 -
偏好数据集本身可能存在一些bias,比如chosen的回复一般较长,导致最终训练模型的输出也会较长,可能间接会使模型的回复准确性 -
有研究表明DPO在out of distribution的数据上训练表现不佳(https://arxiv.org/abs/2312.10584/https://arxiv.org/abs/2404.10719)
CPO
-
beta:隐含奖励前的系数,默认为0.1
-
不需要参考模型,节约训练的计算资源 -
加入的SFT损失会提升一定的训练稳定性 -
没有参考模型的限制,训练过程可能仍然会不稳定。
KTO
-
和 分别表示标签值为true/false的回答,对应了效用方程中高于/低于参考点的输出值z -
直接来自于效用方程, 用DPO的隐含奖励项 作为效用方程的输入值 ,用 函数代替指数 。 -
对于效用方程中的超参 , 作者拆为两个超参 和 ,分别控制两种回答对应的损失权重
-
beta 同DPO -
desirable_weight :损失函数中的 项,偏好回答样本的损失权重 -
undesirable_weight :损失函数中的 项,拒绝回答样本的损失权重
-
KTO不需要成对的偏好/拒绝回答,只需要在SFT数据上额外标注label(好或坏),相比其他算法更容易获取数据 -
相比DPO需要先经过SFT训练,KTO可以直接在偏好数据集上进行训练(类似SFT)
ORPO
SimPO
-
beta: 隐含奖励前的系数 -
gamma:reward margin
-
不需要参考模型,节约训练的计算资源 -
长度正则可以降低模型输出过长文本的概率 -
经验表明,SimPO算法对超参特别是学习率较为敏感 -
没有参考模型的限制,训练过程可能会较为不稳定。 -
论文缺乏一定的理论证明,模型容易训崩