TL;DR
- 本文是大模型RLHF的入门教程,目的是用尽可能简单的方式介绍大模型RLHF的基本概念和原理,不涉及过多实现细节。
什么是 RLHF
RLHF
是Reinforcement Learning with Human Feedback (人类反馈强化学习)
的缩写,目的是在强化学习任务中引入人类反馈,以提高强化学习模型的性能- 大多数分类体系下,
SFT
属于RLHF
中的一个步骤,但本文不讨论SFT
,假设起点模型已经做好了pre-train
和SFT
RLHF
的目标是:helpful
honst
harmless
RLHF 相关术语
policy model
:策略模型,即待训练的强化学习模型reference model
:参考模型(基准模型),通常是冻结参数的原始policy model
,防止模型在RL
过程中出现退化(可理解为正则化项)reward model
:奖励模型,用于评估policy model
生成的结果的好坏,相当于强化学习的environment
value 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
:prompt
y_w
:win response
,也就是response_chosen
y_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