[![](https://zhuanlan.zhihu.com/p/666455333)](javascript:void\(0\))
![ZhiHu logo](../images/body-e1fa91dbdb48b8055184.png)
[](https://www.zhihu.com)
[关注](https://www.zhihu.com/signin?next=%2Ffollow)[推荐](https://www.zhihu.com/signin?next=%2F)[热榜](https://www.zhihu.com/signin?next=%2Fhot)[专栏](https://www.zhihu.com/signin?next=%2Fcolumn-square)[圈子](https://www.zhihu.com/signin?next=%2Fring-feeds)[AI WorksBeta ](https://www.zhihu.com/project-square)[故事](https://www.zhihu.com/fiore/h5/vip-web)
​
[直答](https://zhida.zhihu.com/)
切换模式
登录/注册
【RLHF】怎样让 PPO 训练更稳定？早期人类征服 RLHF 的驯化经验
首发于[何小枝与NLP的快乐日常](https://www.zhihu.com/column/c_1451236880973426688)
切换模式
![【RLHF】怎样让 PPO 训练更稳定？早期人类征服 RLHF 的驯化经验](../images/000.img)
# 【RLHF】怎样让 PPO 训练更稳定？早期人类征服 RLHF 的驯化经验
[![何枝](../images/027.jpg)](https://www.zhihu.com/people/who-u)
[何枝](https://www.zhihu.com/people/who-u)
如果人人都做有意义的事，那有趣的事该由谁去做呢。
[收录于 · 何小枝与NLP的快乐日常](https://www.zhihu.com/column/c_1451236880973426688)
374 人赞同了该文章
​
目录
作为 [Reinforcement Learning](https://zhida.zhihu.com/search?content_id=236230660&content_type=Article&match_order=1&q=Reinforcement+Learning&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkxMDAsInEiOiJSZWluZm9yY2VtZW50IExlYXJuaW5nIiwiemhpZGFfc291cmNlIjoiZW50aXR5IiwiY29udGVudF9pZCI6MjM2MjMwNjYwLCJjb250ZW50X3R5cGUiOiJBcnRpY2xlIiwibWF0Y2hfb3JkZXIiOjEsInpkX3Rva2VuIjpudWxsfQ.Orw3nyvUQJhfd03BT-aWjRilhe66L4aRR3prASZhMmg&zhida_source=entity) 中的顶流算法，PPO 已经统领这个领域多年。直到 [[InstructGPT](https://link.zhihu.com/?target=https%3A//arxiv.org/pdf/2203.02155.pdf)] 的爆火，PPO 开始进军 [LLM](https://zhida.zhihu.com/search?content_id=236230660&content_type=Article&match_order=1&q=LLM&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkxMDAsInEiOiJMTE0iLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyMzYyMzA2NjAsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.3niZEBtbxwHrKPOYwNCVWpOkAEFo-QLZ7LgJzAqdGhk&zhida_source=entity) 领域，凭借其 label-free 的特性不断拔高基座的性能，在 [[Llama2](https://link.zhihu.com/?target=https%3A//arxiv.org/pdf/2307.09288.pdf)]、[[Baichuan](https://link.zhihu.com/?target=https%3A//cdn.baichuan-ai.com/paper/Baichuan2-technical-report.pdf)] 的工作中都能看到 RLHF 的身影。
于是你开始摩拳擦掌，跃跃欲试，准备利用这项强大的技术来进化自己的[基座](https://zhida.zhihu.com/search?content_id=236230660&content_type=Article&match_order=2&q=%E5%9F%BA%E5%BA%A7&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkxMDAsInEiOiLln7rluqciLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyMzYyMzA2NjAsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MiwiemRfdG9rZW4iOm51bGx9.-dDJytEok3sxEX6PRHtbw5sEK-FSkVjNG1wBKAILtAc&zhida_source=entity)，
但当你信心满满地跑通训练任务时，你看到的情况很有可能是这样的：
![](../images/004.jpg)
各种形形色色的失败案例
尽管鲁迅先生曾言：真的强化敢于直面惨淡的结果，敢于正视崩坏的曲线。
但日复一复地开盲盒难免会让人心脏承受不了，好在前人们留下了宝贵的驯化经验。
我们今天一起来看一篇「如何稳定且有效地训练 PPO」的论文，
在这篇文章中我们将学习：哪些技巧能够稳定训练过程、哪些指标能够代表着训练的顺利进行等内容。
> Paper 传送门：[Secrets of RLHF in Large Language Models Part I: PPO](https://link.zhihu.com/?target=https%3A//arxiv.org/pdf/2307.04964.pdf)  
> Code 地址：[https://github.com/OpenLMLab/MOSS-RLHF/tree/main](https://link.zhihu.com/?target=https%3A//github.com/OpenLMLab/MOSS-RLHF/tree/main)
## 1. [Reward Model](https://zhida.zhihu.com/search?content_id=236230660&content_type=Article&match_order=1&q=Reward+Model&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkxMDAsInEiOiJSZXdhcmQgTW9kZWwiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyMzYyMzA2NjAsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.HKba9HTC9VlwNbqMZ-S-oPcuw37ghQ6eADBv3Z5t_s8&zhida_source=entity) 训练
RL 的整个训练目标都是围绕着 reward 来进行，传统 RM 的训练公式为拉开好/坏样本之间的得分差：
![](../images/005.jpg)
y_w 为 selected 样本，y_l 为 rejecte 样本
但是，仅仅是「拉开得分差」这一个目标很有可能让 RM 陷入到「钻牛角尖」的困境中，
为了保持住 RM 的本质还是一个「语言模型」，** _文章在原本的 loss 中加入了对「好样本」的 LM loss_** ：
![](../images/006.jpg)
在原来的 loss 基础上顺便学习写出「优秀样本」，保持住模型能写句子的能力
> 值得一提的是：文章中的 r' 是用了另外一个 RM' 来算 loss 的，RM' 的结构和 RM 一样，只不过输出的[维度](https://zhida.zhihu.com/search?content_id=236230660&content_type=Article&match_order=1&q=%E7%BB%B4%E5%BA%A6&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkxMDAsInEiOiLnu7TluqYiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyMzYyMzA2NjAsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.D8NpVWeBBzZHQmBj2du0W-1c0_lvqfBEU6w0CLVA0qg&zhida_source=entity)不是 1，而是 vocab_size。但其实我认为也可以使用一个带有 ValueHead 的模型来既训练打分又训练写句子，毕竟这 2 个任务都需要模型知道什么的句子是「好句子」—— 还能省显存。
以下是论文训练 RM 的详细参数：  
| 参数  | 值  |  
| --- | --- |  
| model  | LLama 7B  |  
| training_dataset  | 英文：16w pairs（11.8w 有用性 + 4.2w 有害性）  
中文：3.9w pairs（3.1w 有用性 + 8k 有害性）  |  
| learning_rate  | 5e-6  |  
| batch_size  | 4~128 动态变化（为了固定一个 batch 内 token 总数）  |  
| step  | 1000（≈ 1.06 [epoch](https://zhida.zhihu.com/search?content_id=236230660&content_type=Article&match_order=1&q=epoch&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkxMDAsInEiOiJlcG9jaCIsInpoaWRhX3NvdXJjZSI6ImVudGl0eSIsImNvbnRlbnRfaWQiOjIzNjIzMDY2MCwiY29udGVudF90eXBlIjoiQXJ0aWNsZSIsIm1hdGNoX29yZGVyIjoxLCJ6ZF90b2tlbiI6bnVsbH0.xKU4JRFthECCkga9eRD0jP9XB-wlGLCGEuSVpcdTlcw&zhida_source=entity)）  |  
| β  | 1.0  |  
一般的，我们会使用 prefered sample - disprefered sample 的分差来衡量 RM 的效果：
![](../images/007.jpg)
图左为在中文标注数据集上的分差分布，图右为在英文数据集上的分差分布（区分度不如中文）
完全理想的状况下，prefered - disprefered 应该都在 0 的右边（好样本的分数更高），
但考虑到标注中的噪声、模型的[拟合能力](https://zhida.zhihu.com/search?content_id=236230660&content_type=Article&match_order=1&q=%E6%8B%9F%E5%90%88%E8%83%BD%E5%8A%9B&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkxMDAsInEiOiLmi5_lkIjog73lipsiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyMzYyMzA2NjAsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.98S3QPCC10Hc11N5ww8kSgpmLi-4wQ0yEtJME9GTX10&zhida_source=entity)等，存在少小部分 0 左边的样本是合理的，拉出来人工评估下即可。
此外，文中还提到：** _只看 Acc 并不能够很好的衡量 RM 的性能，但尚未给出其他可以衡量的指标_ 。**
## 2. PPO 的稳定[训练方法](https://zhida.zhihu.com/search?content_id=236230660&content_type=Article&match_order=1&q=%E8%AE%AD%E7%BB%83%E6%96%B9%E6%B3%95&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkxMDAsInEiOiLorq3nu4Pmlrnms5UiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyMzYyMzA2NjAsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.nYvjL-mEscKP32Wm4HwKRJPbJuwxOMkCIoQ3BjZHOrA&zhida_source=entity)
### 2.1 及时发现训练过程中的异常
PPO 训练中很常见的一个问题是「模式崩溃」，其典型特征为：长度很长且无意义的文字。  
| prompt  | response  |  
| --- | --- |  
| 请帮我写一条货物的评论。  | 易碎品就的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的的  |  
而对于这种「崩溃的输出」Reward Model 往往还容易打出一个很高的分数，这将导致我们无法在训练过程中及时的发现问题，等训完对着一个满意分数的 checkpoint 看生成结果的时候才发现空欢喜一场。
对于上述这种问题，我们可以通过 3 个指标来监控：KL、Response Length、Perplexity。
![](../images/008.jpg)
训练过程中的各种指标，从约第 420 step 开始: 1. reward 出现骤增。2. KL 出现骤增。3. Perplexity 出现骤降。4. Response Length 出现骤增。5. 训练效果出现骤降（图左上红线）
因此我们可以总结出几种指标异常的情况：
  1. **Reward 出现骤增：** 很可能 Policy Model 找到了某条 shortcut，比如通过[模式崩溃](https://zhida.zhihu.com/search?content_id=236230660&content_type=Article&match_order=2&q=%E6%A8%A1%E5%BC%8F%E5%B4%A9%E6%BA%83&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkxMDAsInEiOiLmqKHlvI_ltKnmuoMiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyMzYyMzA2NjAsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MiwiemRfdG9rZW4iOm51bGx9._ZNanv7KdcxFBi08TvkEYSNZdRPIAWlkbKCXWnH3NRY&zhida_source=entity)来获得更高的分数。
  2. **KL 出现骤增：** 同上，很可能此时的输出模式已经完全崩溃。
  3. **Perplexity 骤降：** 由于 PPL 是指代模式对当前生成结果的「确定性」，一般来讲，句子的生成都会带有一定的不确定性，当 Policy Model 对某一个生成结果突然「非常确定」的时候（无论是什么样的上文都很确定接下来应该输出什么），那么它大概率是已经拟合到了一个确定的「崩坏模式」上了。
  4. **Response Length 骤增：** 这个对应我们之前给的 bad case，回复长度的骤增也可能代表当前输出已经崩溃。


### 2.2 Score Normalization & Clipping
PPO 的整个训练都是围绕优化 Score 作为目标来进行的，和 Score 相关的变量有 2 个：
  1. **Reward：** 由 RM（≈ Human） 直接给出的反馈。
  2. **Advantages：** 由 Reward 和 [Critic Model](https://zhida.zhihu.com/search?content_id=236230660&content_type=Article&match_order=1&q=Critic+Model&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkxMDAsInEiOiJDcml0aWMgTW9kZWwiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyMzYyMzA2NjAsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.7BEeO6laMpgtfbpB91oYLb6tt41Sv3flO9Br0Qv69EM&zhida_source=entity) 共同决定的优势值，最终用于 loss 计算。


对于这 2 个值，我们都可以对其进行「[归一化](https://zhida.zhihu.com/search?content_id=236230660&content_type=Article&match_order=1&q=%E5%BD%92%E4%B8%80%E5%8C%96&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkxMDAsInEiOiLlvZLkuIDljJYiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyMzYyMzA2NjAsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.KmkUHQ_WIwKpx12EsAdrlg9dogsirBzEWwPdFk2i9uI&zhida_source=entity)」和「裁剪」。
Reward 的处理公式如下：
![](../images/009.jpg)
Reward Normalization & Clipping
> 上述式子将 reward 化成了一个均值为 0 的[标准分布](https://zhida.zhihu.com/search?content_id=236230660&content_type=Article&match_order=1&q=%E6%A0%87%E5%87%86%E5%88%86%E5%B8%83&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkxMDAsInEiOiLmoIflh4bliIbluIMiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyMzYyMzA2NjAsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.I3wEmxDClCEOvE3IeeqHquZPRMec3XFUMeeB25lYCwA&zhida_source=entity)，均值为 0 是为了保证在训练过程中得到的正负奖励能够尽可能的均匀，如果一段时间内全为负或全为正从直觉上来讲不太利于模型学习。
文中提到，使用 clipping 可以限制模型进化的「最终分数」没有那么高，
鉴于之前「分数越高，并不一定有更好的效果」的结论，作者认为使用 [clipping](https://zhida.zhihu.com/search?content_id=236230660&content_type=Article&match_order=2&q=clipping&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkxMDAsInEiOiJjbGlwcGluZyIsInpoaWRhX3NvdXJjZSI6ImVudGl0eSIsImNvbnRlbnRfaWQiOjIzNjIzMDY2MCwiY29udGVudF90eXBlIjoiQXJ0aWNsZSIsIm1hdGNoX29yZGVyIjoyLCJ6ZF90b2tlbiI6bnVsbH0.8D4Dcx3L1m2UkC2JNV1yOemzLMxbeKYqRphO-B8u9NM&zhida_source=entity) 对最终的效果是有益的。
至于 Advantages，在 PPO 的标准流程里已经会对其进行 Normalization，而 advantage clipping 和 reward clipping 在本质上其实很相似，则只用在 reward 阶段进行截断即可， _所以对于 Advantage 来讲不需要做太多其他额外的操作_ 。
### 2.3 Policy Loss 设计
在传统的 PPO 流程中，我们通常会对 Policy Molde 的 Loss 上做以下 2 种操作：
  * **Importance Sampling：** 这是 PPO 中加快 On-Policy [算法](https://zhida.zhihu.com/search?content_id=236230660&content_type=Article&match_order=2&q=%E7%AE%97%E6%B3%95&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkxMDAsInEiOiLnrpfms5UiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyMzYyMzA2NjAsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MiwiemRfdG9rZW4iOm51bGx9.cC0AAlf2x-OuIkCMo_4Ve1r3rUcvzoLgJadKSpQM4A4&zhida_source=entity)训练速度的关键步骤，即一次采样的数据可以进行多次更新（通过系数补偿）。这种方法通常和 KL 惩罚一起使用，实验表明这样能够更加稳定 PPO 的训练，但对最终的效果会存在一定折损（ _所以最好的还是 1 轮 sample 只做一次 update，退化为原始的 PG 流程_ ）。
  * **Entropy Loss：** 一般为了鼓励 Policy 在进化的同时保留「探索」的能力，我们会在 loss 中加入 entropy（确定性）loss，但在 RLHF 中这项设置对[超参](https://zhida.zhihu.com/search?content_id=236230660&content_type=Article&match_order=1&q=%E8%B6%85%E5%8F%82&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkxMDAsInEiOiLotoXlj4IiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyMzYyMzA2NjAsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.LE0u_cuRQQXb9gSBGRtFOwK4VbNmhbbCrgiHBVA9wNA&zhida_source=entity)非常敏感，很容易就崩掉。鉴于 KL 和 Entropy 有着相似的效果， _因此作者更推荐使用 KL 来代替 Entropy Loss_ 。


除了上述 2 个传统设置外，RLHF 中加入一个新的指标：**Token Level KL-Penalty** 。
在传统的 RL 流程中，agent 每采取一个 action 后都会得到一个 action reward，
对比到文本生成任务中，每新生成一个 token 就等于做出了一次 action，
但实际上我们无法每生成一个 token 就打出一个分数，我们只能在一个完整句子（Trajectory）生成完成之后打出一个 Total Reward。
这就比较痛苦了，当我们只有一个[长序列](https://zhida.zhihu.com/search?content_id=236230660&content_type=Article&match_order=1&q=%E9%95%BF%E5%BA%8F%E5%88%97&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkxMDAsInEiOiLplb_luo_liJciLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyMzYyMzA2NjAsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.Vl7qHq9BGgDxnc1mTg5pgCibBK88ex1sxs1epJhvT6Y&zhida_source=entity)的最后得分时，前面的每一个 step 的得分估计就变得非常困难。
因此，为了避免「[sparse reward](https://zhida.zhihu.com/search?content_id=236230660&content_type=Article&match_order=1&q=sparse+reward&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkxMDAsInEiOiJzcGFyc2UgcmV3YXJkIiwiemhpZGFfc291cmNlIjoiZW50aXR5IiwiY29udGVudF9pZCI6MjM2MjMwNjYwLCJjb250ZW50X3R5cGUiOiJBcnRpY2xlIiwibWF0Y2hfb3JkZXIiOjEsInpkX3Rva2VuIjpudWxsfQ.FiDsNGQhuAdtIedCZQO7m5nvFEtGhcXdbyYxib2hJ5I&zhida_source=entity)」的同时限制 Policy Model 朝着「相对合理的方向」进化，
我们会通过计算每个生成 token 与参考模型之间的 KL 来作为单个 token 的 reward 分数。
![](../images/010.jpg)
式子的前半部分为 reward（discounted）后半部分为 KL 惩罚分数
### 2.4 模型初始化
PPO 继承自 [Actor-Critic 框架](https://zhida.zhihu.com/search?content_id=236230660&content_type=Article&match_order=1&q=Actor-Critic+%E6%A1%86%E6%9E%B6&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkxMDAsInEiOiJBY3Rvci1Dcml0aWMg5qGG5p62IiwiemhpZGFfc291cmNlIjoiZW50aXR5IiwiY29udGVudF9pZCI6MjM2MjMwNjYwLCJjb250ZW50X3R5cGUiOiJBcnRpY2xlIiwibWF0Y2hfb3JkZXIiOjEsInpkX3Rva2VuIjpudWxsfQ.3sYbNzIUJykZXbTPkbKnyUIeJNh4kEF7YdVp9eplxmQ&zhida_source=entity)，因此算法中一共包含 2 个模型：Actor 和 Critic。
  * **Actor Model（Policy Model）**


Policy Model 是指我们最终训练后使用的生成模型， _Policy Model 需要具备一定基本的能力才能保证训练的稳定性，通常会选用[SFT](https://zhida.zhihu.com/search?content_id=236230660&content_type=Article&match_order=1&q=SFT&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkxMDAsInEiOiJTRlQiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyMzYyMzA2NjAsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.JGTbo2SAXf4NDmkdlLISl3L5h7UJOWTmjfEEXEco4H4&zhida_source=entity) 之后的模型_。这个比较好理解，如果我们选用 Pretrained Model 为起点的话，探索空间会非常大，同时也更加的不稳定（对 Reward Model 要求更高）。
  * **Critic Model**


一种很直觉的想法是：同样是「评判任务」，我们直接使用 Reward Model 来当作 Critic Model 就好了。
但其实这种想法不完全正确，从本质上来讲 Critic 需要对每一个 token 的状态进行打分，而 RM 是对整个句子进行综合得分评估，这两个任务还是存在一定的区别。
因此，一种更好的方式是：** _先训练 Critic Model一段时间，直到 Critic Loss 降的相对较低为止_ 。**
预先训练能够帮助在正式训练的初期 Critic 能够进行较为正确的 value 预估，从而稳定训练过程，
至于使用 SFT 还是 RM 作为 Critic 的结构，实验结果显示并没有非常明显的区别。
### 2.5 [最优策略](https://zhida.zhihu.com/search?content_id=236230660&content_type=Article&match_order=1&q=%E6%9C%80%E4%BC%98%E7%AD%96%E7%95%A5&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkxMDAsInEiOiLmnIDkvJjnrZbnlaUiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyMzYyMzA2NjAsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.Dj6ZrwLPceVD5ZGezHilIrE7aVXOKQSSNYjJjnXK9nU&zhida_source=entity)集合（PPO-max）
文章的末尾给出了作者汇聚了各种实验结果给出的一套推荐的策略：
  1. **reward[normalize](https://zhida.zhihu.com/search?content_id=236230660&content_type=Article&match_order=1&q=normalize&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkxMDAsInEiOiJub3JtYWxpemUiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyMzYyMzA2NjAsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.MqLgx6-5KIOXxMgcqUiKk_1CTUc_I56q8dcdtBv88ws&zhida_source=entity)：**使用历史获得过的所有 reward 的均值和[方差](https://zhida.zhihu.com/search?content_id=236230660&content_type=Article&match_order=1&q=%E6%96%B9%E5%B7%AE&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkxMDAsInEiOiLmlrnlt64iLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyMzYyMzA2NjAsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.tvfo4ytzic0L7tgSSa_zwjS8rzqor-84GSWYBZ1CUJ0&zhida_source=entity)进行标准化。
  2. **token KL penalty：** 限制模型更新方向。
  3. **Critic Model：** 使用 RM 初始化 Critic，并在 PPO 正式训练之前先进行 Critic 预训练。
  4. **Global Gradient Clipping**
  5. 使用相对较小的 Experience Buffer。
  6. **Pretrain Loss：** 在 PPO 训练 loss 中加入 Pretrain Language Model Loss，和 [[InstructGPT](https://link.zhihu.com/?target=https%3A//arxiv.org/pdf/2203.02155.pdf)] 中保持一致。


![](../images/011.jpg)
PPO-max 所使用的方法合集（标星的方法）
学习率设置：  
| 阶段（7B Model）  | 学习率  | batch size  |  
| --- | --- | --- |  
| SFT  | 9.5e-6（ ≈ 1e-5）  | 1024  |  
| RM  | 5e-6  | 4~128  |  
| Actor  | 5e-7  | sample：128  
training：32  |  
| Critic  | 1.65e-6  | sample：128  
training：32  |  
这里顺便贴出 [[Baichuan 2](https://link.zhihu.com/?target=https%3A//cdn.baichuan-ai.com/paper/Baichuan2-technical-report.pdf)] 中 PPO 的参数设置：  
| 参数  | 值  |  
| --- | --- |  
| critic pretraining step  | 20  |  
| learning rate（Actor & Critic）  | 5e-6  |  
| [gradient clipping](https://zhida.zhihu.com/search?content_id=236230660&content_type=Article&match_order=1&q=gradient+clipping&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkxMDAsInEiOiJncmFkaWVudCBjbGlwcGluZyIsInpoaWRhX3NvdXJjZSI6ImVudGl0eSIsImNvbnRlbnRfaWQiOjIzNjIzMDY2MCwiY29udGVudF90eXBlIjoiQXJ0aWNsZSIsIm1hdGNoX29yZGVyIjoxLCJ6ZF90b2tlbiI6bnVsbH0.5J3hiqldn5u41ZVnRz7jznH5Ih_JqMc72ZbzOLP4_Kg&zhida_source=entity)  | 0.5  |  
|  [ppo](https://zhida.zhihu.com/search?content_id=236230660&content_type=Article&match_order=1&q=ppo&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkxMDAsInEiOiJwcG8iLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyMzYyMzA2NjAsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.vyMxiauyRz4Zo4fdPb_7bGRavuXRv0T2SItD9SB-Jn4&zhida_source=entity) clip  | 0.1  |  
| KL penalty  | 0.2 -> 0.005  |  
| total training step  | 350  |  
  

_以上就是这篇文章的全部内容，感谢观看。_
编辑于 2023-12-26 04:29・北京
[RLHF](https://www.zhihu.com/topic/26859901)
[LLM](https://www.zhihu.com/topic/20660508)
[强化学习 (Reinforcement Learning)](https://www.zhihu.com/topic/20039099)
​赞同 374​​25 条评论​710 ​31 
​分享
​申请转载​
​
![](../images/012.jpeg)
未登录用户
  

25 条评论
默认
最新
[![浮生若梦](../images/013.jpg)](https://www.zhihu.com/people/002547db05bbbb95bb4b837b1268a3db)
[浮生若梦](https://www.zhihu.com/people/002547db05bbbb95bb4b837b1268a3db)
太真实了我的训练效果就像图一一样不学无术，有点难绷
2023-12-01 · 天津
​回复​5
展开其他 1 条回复​
[![xiandi](../images/014.jpg)](https://www.zhihu.com/people/9a4392d756712373749b01ede0aee0a1)
[xiandi](https://www.zhihu.com/people/9a4392d756712373749b01ede0aee0a1)
太高产了![\[赞\]](https://pic1.zhimg.com/v2-c71427010ca7866f9b08c37ec20672e0.png)
2023-11-13 · 北京
​回复​1
[![何枝](../images/016.jpg)](https://www.zhihu.com/people/61ce0376d0bc91b39ea4b06ae95a871d)
[何枝](https://www.zhihu.com/people/61ce0376d0bc91b39ea4b06ae95a871d)
作者
![](../images/body-ccffbf7f55d1b813102a.gif)
2023-11-14 · 北京
​回复​喜欢
[![定格](../images/017.jpg)](https://www.zhihu.com/people/076e0e93b815b14b7928ca88375b3de5)
[定格](https://www.zhihu.com/people/076e0e93b815b14b7928ca88375b3de5)
想请假下，回复的长度初期忽然变短，然后稳定了。是什么原因呢
2023-11-15 · 上海
​回复​喜欢
[![何枝](../images/026.jpg)](https://www.zhihu.com/people/61ce0376d0bc91b39ea4b06ae95a871d)
[何枝](https://www.zhihu.com/people/61ce0376d0bc91b39ea4b06ae95a871d)
作者
常见问题，推测可能是因为 response_mask 的存在，导致 Policy Model 发现生成长度越短，KL 的惩罚就越小，但此时 RM 对于这种短答案给不出明显的负惩罚（之前大概率没有见过这类负例），所以 Actor 就倾向于生成的更短的回复。可以尝试下在 RM 的偏序中加入短回复以告知模型这种回复应该打惩罚分。
2023-11-15 · 北京
​回复​4
查看全部 9 条回复​
[![Lance黄](../images/019.jpg)](https://www.zhihu.com/people/e61414276710635b81981e217ab0c524)
[Lance黄](https://www.zhihu.com/people/e61414276710635b81981e217ab0c524)
“至于 Advantages，在 PPO 的标准流程里已经会对其进行 Normalization，而 advantage clipping 和 reward clipping 在本质上其实很相似，则只用在 reward 阶段进行截断即可，所以对于 Advantage 来讲不需要做太多其他额外的操作。”  
  
原本PPO中的clipping不是在policy的更新步长上做限制吗？还是不太清楚为什么在reward上做clipping在本质上可以替换掉之前的操作……
2025-07-24 · 广东
​回复​喜欢
[![杨博](../images/020.jpg)](https://www.zhihu.com/people/8416c7e2d00436a80c0ba318cddc971b)
[杨博](https://www.zhihu.com/people/8416c7e2d00436a80c0ba318cddc971b)
“但其实这种想法不完全正确，从本质上来讲 Critic 需要对每一个 token 的状态进行打分，而 RM 是对整个句子进行综合得分评估，这两个任务还是存在一定的区别。”  
  
二者的区别在transformer架构重要吗？毕竟transformer的每个attention层里都有个softmax，相当于自动会对每个token的状态加权打分。
2024-06-20 · 美国
​回复​喜欢
[![adsjfhakjsdgfajdgfk](../images/021.jpg)](https://www.zhihu.com/people/9519029bb665070617006101f0724b7f)
[adsjfhakjsdgfajdgfk](https://www.zhihu.com/people/9519029bb665070617006101f0724b7f)
可以问一下你训练的是多大的模型呢？更大的模型训练的时候是否更稳定呢？
2024-02-25 · 美国
​回复​喜欢
[![贺茗风](../images/022.jpg)](https://www.zhihu.com/people/06900a904e7b0ed252c0630bd2c0c94d)
[贺茗风](https://www.zhihu.com/people/06900a904e7b0ed252c0630bd2c0c94d)
想问一下，加入的LM loss为什么前面是正号呢？是想在拉大正负样本间分差的同时，减小正样本的平均分吗？
2023-11-29 · 中国香港
​回复​喜欢
[![西红柿炒番茄](../images/025.jpg)](https://www.zhihu.com/people/27486a2ef6aeb62cb3e2a957dad52541)
[西红柿炒番茄](https://www.zhihu.com/people/27486a2ef6aeb62cb3e2a957dad52541)
您好，我想请教一下，这个里面出现了critc网络，优势函数，但是我看的instruct gpt.还有llma2使用的，都只是reword值，这篇是介绍的通用的强化学习？而不只是针对llm的？
2023-11-25 · 北京
​回复​喜欢
[![陈仲](../images/024.jpg)](https://www.zhihu.com/people/bfaf96c457227e4bdf0b2b446edbb814)
[陈仲](https://www.zhihu.com/people/bfaf96c457227e4bdf0b2b446edbb814)
第9个圆圈旁边的矩形里面不是value模型嘛？ 怎么变成policy 模型了？
2023-11-15 · 美国
​回复​喜欢
展开其他 1 条回复​
[![cerax](../images/025.jpg)](https://www.zhihu.com/people/52a755a55a6b231d28bfa584486f7bc3)
[cerax](https://www.zhihu.com/people/52a755a55a6b231d28bfa584486f7bc3)
完全理想的状况下，prefered - disprefered 应该都在 0 的右边（好样本的分数更高），  
但考虑到标注中的噪声、模型的拟合能力等，存在少小部分 0 左边的样本是合理的，拉出来人工评估下即可。  
  
这个应该都在 0 的右边怎么理解，为什么disprefered理想情况不小于0？ 
还有个问题 openai明确提到将rw socre控制在均值为0的区间 
2023-11-14 · 湖北
​回复​喜欢
[![何枝](../images/026.jpg)](https://www.zhihu.com/people/61ce0376d0bc91b39ea4b06ae95a871d)
[何枝](https://www.zhihu.com/people/61ce0376d0bc91b39ea4b06ae95a871d)
作者
我理解：prefered_score - disprefered_socre > 0 （在 0 的右边）代表 RM 对 prefered 样本打出的分比 disprefered 样本更高，更能对齐人类的偏好标准，反之如果差值 < 0 代表 RM 的评价标准和人类的偏好相悖
2023-11-14 · 北京
​回复​喜欢
展开其他 2 条回复​
![](../images/012.jpeg)
未登录用户
  

关于作者
[![何枝](../images/027.jpg)](https://www.zhihu.com/people/who-u)
[何枝](https://www.zhihu.com/people/who-u)
如果人人都做有意义的事，那有趣的事该由谁去做呢。
[ 回答 **60** ](https://www.zhihu.com/people/who-u/answers)[ 文章 **46** ](https://www.zhihu.com/people/who-u/posts)[ 关注者 **18,024** ](https://www.zhihu.com/people/who-u/followers)
​关注他​发私信
大家都在搜
换一换
[江歌妈妈发长文尘埃终将落定706 万](https://www.zhihu.com/search?q=%E6%B1%9F%E6%AD%8C%E5%A6%88%E5%A6%88%E5%8F%91%E9%95%BF%E6%96%87%E5%B0%98%E5%9F%83%E7%BB%88%E5%B0%86%E8%90%BD%E5%AE%9A&search_source=Trending&utm_content=search_hot&utm_medium=organic&utm_source=zhihu&type=content&request_click_id=c9346cf7-e1ea-4b5e-8fbc-923b722ad427)热
[中国男足 0-5 巴勒斯坦564 万](https://www.zhihu.com/search?q=%E4%B8%AD%E5%9B%BD%E7%94%B7%E8%B6%B3+0-5+%E5%B7%B4%E5%8B%92%E6%96%AF%E5%9D%A6&search_source=Trending&utm_content=search_hot&utm_medium=organic&utm_source=zhihu&type=content&request_click_id=c9346cf7-e1ea-4b5e-8fbc-923b722ad427)热
[原央视主持人阿丘回应被通报422 万](https://www.zhihu.com/search?q=%E5%8E%9F%E5%A4%AE%E8%A7%86%E4%B8%BB%E6%8C%81%E4%BA%BA%E9%98%BF%E4%B8%98%E5%9B%9E%E5%BA%94%E8%A2%AB%E9%80%9A%E6%8A%A5&search_source=Trending&utm_content=search_hot&utm_medium=organic&utm_source=zhihu&type=content&request_click_id=c9346cf7-e1ea-4b5e-8fbc-923b722ad427)热
[华为与赛力斯达成新五年合作411 万](https://www.zhihu.com/search?q=%E5%8D%8E%E4%B8%BA%E4%B8%8E%E8%B5%9B%E5%8A%9B%E6%96%AF%E8%BE%BE%E6%88%90%E6%96%B0%E4%BA%94%E5%B9%B4%E5%90%88%E4%BD%9C&search_source=Trending&utm_content=search_hot&utm_medium=organic&utm_source=zhihu&type=content&request_click_id=c9346cf7-e1ea-4b5e-8fbc-923b722ad427)热
[迪拜航空确认航班发生事故400 万](https://www.zhihu.com/search?q=%E8%BF%AA%E6%8B%9C%E8%88%AA%E7%A9%BA%E7%A1%AE%E8%AE%A4%E8%88%AA%E7%8F%AD%E5%8F%91%E7%94%9F%E4%BA%8B%E6%95%85&search_source=Trending&utm_content=search_hot&utm_medium=organic&utm_source=zhihu&type=content&request_click_id=c9346cf7-e1ea-4b5e-8fbc-923b722ad427)热
[东航回应网传空姐跪地道歉327 万](https://www.zhihu.com/search?q=%E4%B8%9C%E8%88%AA%E5%9B%9E%E5%BA%94%E7%BD%91%E4%BC%A0%E7%A9%BA%E5%A7%90%E8%B7%AA%E5%9C%B0%E9%81%93%E6%AD%89&search_source=Trending&utm_content=search_hot&utm_medium=organic&utm_source=zhihu&type=content&request_click_id=c9346cf7-e1ea-4b5e-8fbc-923b722ad427)
[王楚钦：不知道为什么就是感觉累320 万](https://www.zhihu.com/search?q=%E7%8E%8B%E6%A5%9A%E9%92%A6%EF%BC%9A%E4%B8%8D%E7%9F%A5%E9%81%93%E4%B8%BA%E4%BB%80%E4%B9%88%E5%B0%B1%E6%98%AF%E6%84%9F%E8%A7%89%E7%B4%AF&search_source=Trending&utm_content=search_hot&utm_medium=organic&utm_source=zhihu&type=content&request_click_id=c9346cf7-e1ea-4b5e-8fbc-923b722ad427)热
[江苏高考作文《衬衫的价格为 9 磅 15 便士》爆火268 万](https://www.zhihu.com/search?q=%E6%B1%9F%E8%8B%8F%E9%AB%98%E8%80%83%E4%BD%9C%E6%96%87%E3%80%8A%E8%A1%AC%E8%A1%AB%E7%9A%84%E4%BB%B7%E6%A0%BC%E4%B8%BA+9+%E7%A3%85+15+%E4%BE%BF%E5%A3%AB%E3%80%8B%E7%88%86%E7%81%AB&search_source=Trending&utm_content=search_hot&utm_medium=organic&utm_source=zhihu&type=content&request_click_id=c9346cf7-e1ea-4b5e-8fbc-923b722ad427)
[女装网店开始用防拆带了265 万](https://www.zhihu.com/search?q=%E5%A5%B3%E8%A3%85%E7%BD%91%E5%BA%97%E5%BC%80%E5%A7%8B%E7%94%A8%E9%98%B2%E6%8B%86%E5%B8%A6%E4%BA%86&search_source=Trending&utm_content=search_hot&utm_medium=organic&utm_source=zhihu&type=content&request_click_id=c9346cf7-e1ea-4b5e-8fbc-923b722ad427)
[孕妇骑车别车被司机踹翻258 万](https://www.zhihu.com/search?q=%E5%AD%95%E5%A6%87%E9%AA%91%E8%BD%A6%E5%88%AB%E8%BD%A6%E8%A2%AB%E5%8F%B8%E6%9C%BA%E8%B8%B9%E7%BF%BB&search_source=Trending&utm_content=search_hot&utm_medium=organic&utm_source=zhihu&type=content&request_click_id=c9346cf7-e1ea-4b5e-8fbc-923b722ad427)
### 推荐阅读
# [PPO训练方法 首先训练一个Reward模型来为模型的输出进行打分，提供奖励信号。 训练Reward模型需要的是偏好数据。格式如下： 当改造一个大语言模型成一个Reward model，最后一层LM Head（输出的维度是vca… 心灵的灯 ](https://zhuanlan.zhihu.com/p/13274952932)# [授人以渔：巧用 o1 学 ppo 这篇文章继续分享利用 OpenRLHF 学习 RLHF 的一些心得。我相信每个同学都已经看过无数篇的 ppo 科普文章，有些同学懂了，但一定也还有同学非常的挣扎，不管别人讲的多通俗依旧脑子一团浆糊… ybq ](https://zhuanlan.zhihu.com/p/12621744754)# [PPO训练笔记 为了加深对PPO训练时的代码理解，结合PPO算法原理，写一个笔记来记录stablebaslines3中PPO函数部分常用参数的含义以及训练过程中一些参数的含义，如有理解有误或者不透彻的还请指正。 PPO各… 墨木鸢 ](https://zhuanlan.zhihu.com/p/22530231545)[ ![无需RL基础理解 PPO 和 GRPO](../images/029.jpg)无需RL基础理解 PPO 和 GRPO JOYWI...发表于JOYWI... ](https://zhuanlan.zhihu.com/p/27704969958) 

_想来知乎工作？请发送邮件到 jobs@zhihu.com_
打开知乎App
在「我的页」右上角打开扫一扫
![](../images/body-0f9788d006ab0f4da762.png)
其他扫码方式：微信
下载知乎App
无障碍模式
验证码登录
密码登录
[开通机构号](https://zhuanlan.zhihu.com/org/signup)
中国 +86
获取短信验证码
忘记密码
登录/注册
其他方式登录
未注册手机验证后自动登录，注册即代表同意[《知乎协议》](https://www.zhihu.com/term/zhihu-terms)[《隐私保护指引》](https://www.zhihu.com/term/privacy)
扫码下载知乎 App
关闭二维码
