RLHF PPO直观解释

部署运行你感兴趣的模型镜像

原文:

https://zhuanlan.zhihu.com/p/677607581

强化学习流程:

A: Action; R: Reward; S: State

目标:找到一个策略,这个策略根据当前观测到的环境状态和奖励反馈,来选择最佳的动作。

价值函数:

其中:

  • Vt : t 时刻的总收益,注意这个收益蕴涵了“即时”和“未来”的概念
  • Rt : t 时刻的即时收益
  • Vt+1 : t+1 时刻的总收益,注意这个收益蕴涵了“即时”和“未来”的概念。而 Vt+1 对 Vt 来说就是“未来”。
  • γ :折扣因子。它决定了我们在多大程度上考虑将“未来收益”纳入“当下收益”。

RLHF和强化学习的对应关系:

每生成1个Token:自己这个Token就是Action,用Reward模型、Actor和Reference模型计算得到该步Reward,用Critic模型计算得到预估价值V;

在RLHF-PPO阶段,一共有4个主要模型,分别是:

  • Actor Model:这就是我们想要训练的目标语言模型
  • Critic Model:它的作用是预估总收益 Vt
  • Reward Model:它的作用是计算即时收益 Rt
  • Reference Model:它的作用是在RLHF阶段给语言模型增加一些“约束”,防止语言模型训歪(朝不受控制的方向更新,效果可能越来越差)

其中:

- Actor/Critic Model在RLHF阶段是需要训练的;

- Reward/Reference Model参数冻结的。

Actor loss的演化

1. 原始版

(后面公式都省略加和符号)

Vt是Critic模型推理得到的该时刻Value(包括当前和未来);P是Actor模型生成当前Token的概率;

符合直观逻辑:当Vt为正时,P越大,loss越小;当Vt为负时,P越小,loss越小;

2. 用"优势"替换“价值”

(走了一步的(前2项),显然比一步也没走的(第3项),预测的更靠谱)

3. 升级R (Reward)

直观上, Rt 应该表示每个Actor产出token At 带来的即时收益;

DeepSpeed中,用的是:

即,整句生成的sentence,之后最后1个token是加上了Reward模型的推理结果Rt;

其他token,都只是用Actor模型和Ref模型的偏离度,来作为Reward;即,Actor模型对该token的生成概率是P,则Ref模型对该token的生成概率Rref,必须大于P,也就是比Actor模型还认可该token结果(表明rlhf没有训歪),才认为是正向的Reward;否则就是负的Reward;

4. 升级"优势"(Advantage)

把"未来"的优势,也加入考虑:

实现上,从后往前,递推进行计算;

5. PPO-epoch: 引入新约束

在强化学习中,收集一个batch的经验是非常耗时的。对应到我们RLHF的例子中,收集一次经验,它要等四个模型做完推理才可以,正是因此,一个batch的经验,只用于计算1次loss,更新1次Actor和Critic模型,好像有点太浪费了。
所以,我们自然而然想到,1个batch的经验,能不能用来计算ppo-epochs次loss,更新ppo-epochs次Actor和Critic模型?

如果我们想让一个batch的经验值被重复使用ppo_epochs次,等价于我们想要Actor在这个过程中,模拟和环境交互ppo_epochs次。举个例子:

  • 如果1个batch的经验值只使用1次,那么在本次更新完后,Actor就吃新的batch,正常和环境交互,产出新的经验值
  • 但如果1个batch的经验值被使用ppo_epochs次,在这ppo_epochs中,Actor是不吃任何新数据,不做任何交互的,所以我们只能让Actor“模拟”一下和环境交互的过程,吐出一些新数据出来。

防止超出范围,裁剪:

Critic loss的演化

1. 原始版本

目标:让一步也不走的V,更接近真实,也就是更接近走了一步的V;

2. "走了一步"的V

3. "一步没走"的V

4. 裁剪(不要偏离old太远)

 

您可能感兴趣的与本文相关的镜像

Qwen3-VL-8B

Qwen3-VL-8B

图文对话
Qwen3-VL

Qwen3-VL是迄今为止 Qwen 系列中最强大的视觉-语言模型,这一代在各个方面都进行了全面升级:更优秀的文本理解和生成、更深入的视觉感知和推理、扩展的上下文长度、增强的空间和视频动态理解能力,以及更强的代理交互能力

### 强化学习中的PPO算法及其与GTPO的关系 #### PPO算法概述 近端策略优化(Proximal Policy Optimization, PPO)是一种基于策略梯度的方法,旨在通过减少更新过程中的方差来提高训练稳定性。它通过引入一个目标函数,在每次参数更新时限制新旧策略之间的距离,从而避免了因大幅度调整而导致性能下降的问题[^1]。 以下是PPO的一个简化版本伪代码实现: ```python def ppo_update(policy_net, value_net, states, actions, rewards, old_probs): advantages = compute_advantages(rewards, value_net(states)) for _ in range(num_epochs): new_probs = policy_net.get_action_probabilities(states) ratio = torch.exp(new_probs - old_probs.detach()) surr1 = ratio * advantages surr2 = torch.clamp(ratio, 1.0 - clip_epsilon, 1.0 + clip_epsilon) * advantages actor_loss = -torch.min(surr1, surr2).mean() critic_loss = F.mse_loss(value_net(states), rewards_to_go) optimizer.zero_grad() total_loss = actor_loss + critic_loss total_loss.backward() optimizer.step() ``` #### GTPO的概念及其实现背景 尽管未直接提及具体定义,但可以推测“GTPO”可能指代一种改进版的Trust Region Policy Optimization(TRPO)。TRPO的核心思想是在信任区域内进行策略更新,以确保每一步都朝着更优的方向发展。而如果存在所谓的“GTPO”,其可能是针对特定应用场景下的进一步扩展或者变体形式之一。 然而需要注意的是,“GTPO”的确切含义并未广泛存在于公开资料中;因此上述假设需结合实际研究领域加以验证。对于此类新型方法的具体细节,则建议查阅最新学术论文或官方文档获取权威解读。 #### 结合SHAP和LIME的数据解释技术 当尝试理解复杂模型内部工作机制时,可采用诸如SHapley Additive exPlanations(SHAP)[^3] 或 Local Interpretable Model-Agnostic Explanations(LIME) 等工具辅助分析。这些框架能够帮助揭示输入特征如何影响最终决策结果,进而增强整个系统的透明性和可信度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值