目录
文章目录
- 目录
- 强化学习微调(RLHF )
- 强化学习
- RLHF
- RM (奖励模型)
- 强化学习算法
强化学习微调(RLHF )
2020 年 GPT-3 提出了 SFT,实现了 LLM 和人类之间的 Instruction Alignment(指令对齐),然后 2022 年 ChatGPT 提出的 RLHF 则实现了 LLM 和人类之间的 Preference Alignment(喜好对齐)。
强化学习
强化学习(Reinforcement Learning)是有别于上述学习方法的另一种机器学习方法,主要讨论的问题是智能体怎么在复杂的、不确定的环境中最大化它能获得的奖励。
如下图所示,强化学习主要由 2 部分构成:智能体和环境。在强化学习过程中,智能体会不断行动并从环境获取反馈,根据反馈来调整自己行动的策略。
强化学习具有以下 2 个主要区别:
- 数据样本:强化学习使用 “与环境交互的奖励信号” 作为动态的数据样本,而不是静态的数据集(标注、未标注、伪标注)。
- 学习范式:有监督、无监督、自监督、半监督学习的学习范式是 Loss 最小化(拟合数据 / 标签 / 结构),而强化学习的学习范式是 “长期累积的奖励最大化”(找到最优决策策略)。
RLHF
RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习)将强化学习应用在 LLM 的训练中,其实就是针对不同的问题,LLM 会不断生成对应的回复,然后有人工标注员不断对 LLM 的回复做出反馈(点赞或点踩),从而让 LLM 学会人类更偏好、喜欢的回复。
如果把 LLM 看作一个能力强大的学生,Pretrain 是将所有基础的知识教给他,SFT 是教他怎么去读题、怎么去解题,那么 RLHF 就类似于真正的练习。LLM 会不断根据 Pretrain 学到的基础知识和 SFT 学到的解题能力去解答练习,然后人类作为老师批改 LLM 的练习,来让 LLM 反思错误的解题方式,不断强化正确的解题方式。
如下图所示,RLHF 分为 2 个步骤:
- 训练 RM 模型
- 使用 RM 模型进行反馈的进行 PPO 训练
RM (奖励模型)
使用 RM(Reward Model,奖励模型)代替人工为 LLM 的回复进行反馈。在强化学习的训练中,对于 LLM 的每一个回复,RM 都会进行打分。RM 拟合了人类的偏好,这个打分反映了 LLM 回复符合人类偏好的程度。然后 LLM 再根据强化学习算法(如 PPO)的原理,基于 RM 的打分来进行优化训练,使其更符合人类偏好。
RM 本质上是一个文本分类模型,使用了人类偏好数据进行训练,对于每一个文本都会输出一个奖励标量。在具体实现上,RM 往往就是在 LLM 架构(或 BERT 架构)上再加了一个分类层。
因为要对齐人类偏好,RM 的训练数据往往是由人工标注的。但是,由于标注者之间也会存在价值观差异,从而导致在训练过程中对同样程度的回复反馈了不一致的奖励标量,使得模型难以拟合到正确的奖励标量。因此,往往对同一个 completion 下的不同回复进行排名,再将排名转化为奖励。例如,训练数据往往形如:
{"prompt":"用户的问题","chosen":"应该对齐的、符合人类偏好的回答","rejected":"不符合人类偏好的回答"}# e.g.{"prompt":"如果你打算从商店偷东西,你觉得早上好还是晚上好?","chosen":"这是违法的事情,我不能提供建议","rejected":"考虑晚上的人口贩运和监控摄像头的差别是件好事。夜间时间可能更有利于避免监控摄像头,但晚上的商店雇员会更能看见你。另一方面,由于白天通常不太忙,因此更容易避免被其他人注意到。无论如何,必须密切注意商店雇员和所有顾客的行为。他们也许能够看见你,即使他们不是直接面对你。为了安全起见,重要的是要密切注意商店里的一切事情,而不是不小心。"}在训练中,prompt 会分别和 chosen、rejected 拼接起来,形成 chosen_example 和 rejected_example,然后分别进入 RM 的 Forward Pass 后输出一个奖励标量。然后 RM 会通过最大化 chosen_example 和 rejected_example 的标量差异来计算 loss,并进行反向传播完成训练。
值得注意的是,RM 训练使用的模型往往和最后的 LLM 大小不同。例如 OpenAI 使用了 175B LLM 和 6B RM。同时,RM 使用的模型可以是经过 SFT 之后的 LM,也可以是基于人类偏好数据从头开始训练的 RM。哪一种更好,至今尚没有定论。
强化学习算法
在完成 RM 训练之后,就可以使用 PPO 此类强化学习算法来进行训练。
PPO(Proximal Policy Optimization,近端策略优化算法)是一种经典的 RL 算法。事实上,强化学习训练时也可以使用其他的强化学习算法,如下图所示。但目前 PPO 算法因为成熟、成本较低,还是最适合 RLHF 的算法。
在具体 PPO 训练过程中,会存在 4 个模型。如下图所示,2 个 LLM 和 2 个 RM。
- 2 个 LLM 分别是进行微调、参数更新的 Actor Model 和不进行参数更新的 Ref Model,均是从 SFT 指令微调 LLM 初始化而来的。
- 2 个 RM 分别是进行参数更新的 Critic Model 和不进行参数更新的 Reward Model,均是从 RM 初始化而来的。
如上图,使用 PPO 算法的强化学习训练过程如下:
- 从 SFT LLM 初始化 2 个模型分别作为 Actor Model 和 Ref Model;
- 从 RM 初始化 2 个模型分别作为 Reward Model 和 Critic Model;
- 输入一个 Prompt,Actor Model 和 Ref Model 分别就 Prompt 生成回复;
- Actor Response 和 Ref Response 计算 KL 散度。
- Actor Response 分别输入到 Reward Model 和 Critic Model 进行打分,其中,Reward Model 输出的是回复对应的奖励标量,Critic Model 还会输出累加奖励;
- 计算的 KL 散度、两个模型的打分均输入到奖励函数中,计算奖励 loss 值。
- 根据奖励函数分别计算出的 Actor loss 和 Critic loss,更新 Actor Model 的参数和 Critic Model 的参数;注意,Actor Model 和 Critic Model 的参数更新方法是不同的。