大模型之RLHF

RLHF:Reinforcement Learning from Human Feedback 人类反馈强化学习

大模型之所以像人一样表达,核心在于RLHF机制的实现。 特别是xxx-chat的开源大模型,都是经过RLHF之后的。

RLHF的两个策略:PPO和DPO

PPO:Proximal Policy Optimization 近端策略优化

DPO:Direct Preference Optimization 直接策略优化

RLHF的实现过程:
1、给模型一个prompt
2、在t时刻,模型根据上文,产出一个token(对应强化学习的动作,记作At)
3、在t时刻,At对应的即时收益为Rt,总收益是Vt(Vt=即时收益+未来收益),也可以理解成“对人类喜好的衡量”,此时模型的状态有St变为St+1

那Rt、Vt怎么得到呢?模型什么时候更新?

RLHF的4个角色:
1、Actor Model:训练目标-语言模型。需要训练
2、Critic Model:用来预估总收益Vt。需要训练
3、Reward Model:计算即时收益Rt。提前训练好,RLHF阶段冻结
4、Reference Model:在RLHF阶段给语言模型增加“约束”、类似残差连接的作用。提前训练好,RLHF阶段冻结

提前训练好的 Reward Model 和 Reference Model 分别是SFT和RW阶段的产物,在本文中不做描述。

from 猛猿知乎

整个RLHF-PPO的过程,重点在于 Rt和Vt如何定义、并如何用来计算损失?

损失分成两个部分:

1、更新Actor model的actor loss:用于评估Actor是否产生了符合人类喜好的结果
2、更新Critic model的critic loss:用于评估Critic是否正确预测了人类的喜好

在思考loss怎么设计之前,先想想我们有什么。 我们有一个SFT之后的Reference Model,这也是Actor Model的初始模型;还有一个RW之后的Reward Model,这也是Critic Model的初始模型。 然后我们就要在一些高质量数据上,用 左脚(Critic Model)踩右脚(Actor Model),再一步步更新左脚和右脚,得到一个上天了的左右脚。

是不是很有难度。下面慢慢来理解 更新的发动机——损失函数。

先看 actor loss:
v1版本
v1版本:最小化loss意味着最大化(基于St产生的At的概率 * 生成At时的预估总收益Vt)。v1版本是不是很合理。loss含义是 对上文St而言,如果token At产生的预估收益越高,那就增大它出现的概率,否则降低它的概率。那么皮球丢给了 Vt,毕竟我们只有一个 对整体打分的 Reward model,怎么就能直接用来生成 Vt了呢?

v2版本:就来审视Vt,毕竟是预估总收益,是不是可以用 当前的即时收益和未来可能的总收益 = Rt+ γ * Vt 更加精细。 并且定义了一个概念 优势 advantage 等于 这两者的差值。优势的作用是 联接了 Rt和Vt。 使得 actor_loss 更加具体。

我们回顾下 Vt的概念:Critic对At的总收益预测。实际执行At的总收益是 Vt加上优势。
优势的定义
然后,我们用优势 adv_t来替换掉 Vt,得到第二版的 actor_loss

v2版本

v3版本:对Rt进行改造,使其能够衡量Actor模型是否遵从了Ref模型的约束。 这一步设计的目的是 要让 Rt 可计算,其中一种设计是 除了最后的T时刻, 其余时刻的即时奖励,我们就用“Actor是否遵循了Ref的约束”来进行评价。

我觉得最重要的一点设计

v4版本:对Adv_t进行改造,使其不仅考虑了当前时刻的优势,还考虑了未来的优势。这一步的目的是 丰富 Adv_t的设计,尽管已经可计算了。

v5版本:重复利用了1个batch的数据来做ppo_epochs次更新,并引入剪裁机制,控制actor的更新幅度。这一步的目的优化迭代效率。

再看 critic loss: 实际收益和预估收益的MSE作为loss即可。

实际收益:Adv_t + Vt

预估收益:在ppo_epochs过程中,Vt可以理解成 Critic_old。

相当于伴随着 critic loss的减小,预估收益 Vt 越来越接近实际收益。

也因为 actor loss的减小,产生At的收益越来越大,也就是Actor Model表现得越来越好。

PPO原理

### 大模型中的RLHF(强化学习与人类反馈)方法框架 #### 基本概念 RLHF(Reinforcement Learning with Human Feedback,基于人类反馈的强化学习)是一种结合人类反馈和强化学习的技术。其核心目标是通过引入人类的评价和偏好,优化智能体的行为,使模型的表现更加贴近人类的需求[^2]。 #### 训练流程概述 RLHF 的训练过程通常可以分为以下几个主要阶段: 1. **收集偏好数据** 首先需要构建一个高质量的人类偏好数据集。这些数据由人类标注者提供,用于比较不同模型生成的结果并标记优劣。这种数据对于后续奖励模型的训练至关重要[^3]。 2. **训练奖励模型 (Reward Model)** 使用上述偏好数据集,训练一个奖励模型以量化模型输出的质量。该模型能够预测某一特定输入下,某个输出相对于其他候选输出的优势程度。 3. **策略优化 (Policy Optimization via PPO)** 利用强化学习算法(通常是 Proximal Policy Optimization, PPO),在奖励信号指导下调整基础大模型参数。PPO 能够有效平衡探索与利用的关系,从而提升模型性能[^1]。 4. **迭代改进** 整个过程可能需要多次重复以上步骤,不断更新奖励模型以及策略网络直至达到预期效果为止。 #### 技术细节说明 - 在实际应用过程中,为了提高效率及稳定性,可能会采用一些额外技巧比如微调预训练语言模型作为初始策略网络;或者设计特殊机制防止过拟合等问题发生。 - 此外值得注意的是,尽管当前很多研究都集中在自然语言处理领域的大规模模型上实施 RLHF 方法论,但它同样适用于其他类型的复杂决策场景之中。 ```python import torch from transformers import AutoTokenizer, AutoModelForCausalLM def initialize_model(model_name="gpt2"): tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained(model_name).to('cuda' if torch.cuda.is_available() else 'cpu') return tokenizer, model tokenizer, base_model = initialize_model() print("Base Model Initialized.") ``` 此代码片段展示了如何加载一个预先训练好的因果语言模型,并将其放置到 GPU 或 CPU 上运行以便进一步操作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值