TL;DR
- 本文是大模型RLHF的入门教程,目的是用尽可能简单的方式介绍大模型RLHF的基本概念和原理,不涉及过多实现细节。
什么是 RLHF
RLHF是Reinforcement Learning with Human Feedback (人类反馈强化学习)的缩写,目的是在强化学习任务中引入人类反馈,以提高强化学习模型的性能- 大多数分类体系下,
SFT属于RLHF中的一个步骤,但本文不讨论SFT,假设起点模型已经做好了pre-train和SFT RLHF的目标是:helpfulhonstharmless
RLHF 相关术语
policy model:策略模型,即待训练的强化学习模型reference model:参考模型(基准模型),通常是冻结参数的原始policy model,防止模型在RL过程中出现退化(可理解为正则化项)reward model:奖励模型,用于评估policy model生成的结果的好坏,相当于强化学习的environmentvalue model:价值模型,通常是policy model的一个子模块,用于评估状态的价值(也可以理解为对环境的估计),辅助policy model的决策,仅仅在RLHF过程中有效,训练结束后会被丢弃
RLHF 的流程
1. 训练奖励模型
- 奖励模型通常选比原模型尺寸小的预训练模型,将
head换成一个标量输出的head - 奖励模型的输入是
prompt + response,输出是一个奖励标量,即:奖励模型作用的对象是一个序列,不是一个token - 训练数据格式是:(
prompt,response_chosen,response_reject)prompt:输入给策略模型的问题response_chosen:期待的大模型输出response_reject:不期待的大模型输出
- 训练损失函数:
pairwise ranking loss,本质就是对比学习
- 其中:
x:prompty_w:win response,也就是response_choseny_l:lose response,也就是response_reject
2. 强化学习阶段
2.1 Rollout 阶段
对每个 Prompt x:
- 用当前 Actor 自回归采样一条完整回答
y=(y_1, …, y_T),直到遇到结束符 - 把
(x, y)拼成一整句喂给冻结的Reward Model,得到一个标量 - 同时用 算同样这条回答的
log-prob:
2.2 Reward Shaping 阶段
- 由于
Reward Model只给整句打分,而PPO需要每一步都有Advantage,所以要先构造 “即时奖励” 再让GAE去算回报:
- 其中:
KL表示KL散度损失,用于方式模型偏离参考模型太远- 参考模型:经过
SFT之后冻结的模型 - 是
KL散度系数, 要调得够大(0.1–0.5),否则 会迅速 “讨好”RM,生成乱码或重复文本
Thoughts
- 用对比学习的方式训练奖励模型,可以减少人工标注数据量,同时降低数据标注的主观性噪声
- 强化学习的部分设计的挺巧妙的,不过仍然是单回合强化学习,如果从
Agentic RL角度看,需要多回合强化学习来微调模型使得模型更像一个Agent