0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣讓PPO訓練更穩(wěn)定?早期人類征服RLHF的馴化經(jīng)驗

深度學習自然語言處理 ? 來源:NLP工作站 ? 2023-11-16 11:41 ? 次閱讀

做一個專門面向年輕NLPer的每周在線論文分享平臺

寫在前面

今天給大家?guī)硪黄?strong>“如何穩(wěn)定且有效地訓練 PPO”的論文解讀,來自知乎@何枝(已授權)。在這篇文章中我們將學習:哪些技巧能夠穩(wěn)定訓練過程、哪些指標能夠代表著訓練的順利進行等內(nèi)容。

作為 Reinforcement Learning 中的頂流算法,PPO 已經(jīng)統(tǒng)領這個領域多年。直到InstructGPT的爆火,PPO 開始進軍 LLM 領域,憑借其 label-free 的特性不斷拔高基座的性能,在 Llama2 、 Baichuan 的工作中都能看到 RLHF 的身影。

于是你開始摩拳擦掌,躍躍欲試,準備利用這項強大的技術來進化自己的基座。但當你信心滿滿地跑通訓練任務時,你看到的情況很有可能是這樣的:

5e8862de-82f6-11ee-939d-92fbcf53809c.png各種形形色色的失敗案例

盡管魯迅先生曾言:真的強化敢于直面慘淡的結果,敢于正視崩壞的曲線。但日復一復地開盲盒難免會讓人心臟承受不了,好在前人們留下了寶貴的馴化經(jīng)驗,今天讓我們一起看看“如何穩(wěn)定且有效地訓練PPO”。

知乎:https://zhuanlan.zhihu.com/p/666455333
Paper:https://arxiv.org/pdf/2307.04964.pdf
Code:https://github.com/OpenLMLab/MOSS-RLHF/tree/main

1. Reward Model 訓練

RL 的整個訓練目標都是圍繞著 reward 來進行,傳統(tǒng) RM 的訓練公式為拉開好/壞樣本之間的得分差:

5ea2d948-82f6-11ee-939d-92fbcf53809c.pngy_w 為 selected 樣本,y_l 為 rejecte 樣本

但是,僅僅是「拉開得分差」這一個目標很有可能讓 RM 陷入到「鉆牛角尖」的困境中。

為了保持住 RM 的本質還是一個「語言模型」,文章在原本的 loss 中加入了對「好樣本」的 LM loss:

5eb1d8ee-82f6-11ee-939d-92fbcf53809c.png在原來的 loss 基礎上順便學習寫出「優(yōu)秀樣本」,保持住模型能寫句子的能力

值得一提的是:文章中的 r' 是用了另外一個 RM' 來算 loss 的,RM' 的結構和 RM 一樣,只不過輸出的維度不是 1,而是 vocab_size。但其實我認為也可以使用一個帶有 ValueHead 的模型來既訓練打分又訓練寫句子,畢竟這 2 個任務都需要模型知道什么的句子是「好句子」—— 還能省顯存。

以下是論文訓練 RM 的詳細參數(shù)

5ec18b2c-82f6-11ee-939d-92fbcf53809c.png

一般的,我們會使用 prefered sample - disprefered sample 的分差來衡量 RM 的效果:

5ecb9770-82f6-11ee-939d-92fbcf53809c.png圖左為在中文標注數(shù)據(jù)集上的分差分布,圖右為在英文數(shù)據(jù)集上的分差分布(區(qū)分度不如中文)

完全理想的狀況下,prefered - disprefered 應該都在 0 的右邊(好樣本的分數(shù)更高),但考慮到標注中的噪聲、模型的擬合能力等,存在少小部分 0 左邊的樣本是合理的,拉出來人工評估下即可。

此外,文中還提到:只看 Acc 并不能夠很好的衡量 RM 的性能,但尚未給出其他可以衡量的指標。

2. PPO 的穩(wěn)定訓練方法

2.1 及時發(fā)現(xiàn)訓練過程中的異常

PPO 訓練中很常見的一個問題是「模式崩潰」,其典型特征為:長度很長且無意義的文字。

5ee7a942-82f6-11ee-939d-92fbcf53809c.png

而對于這種「崩潰的輸出」Reward Model 往往還容易打出一個很高的分數(shù),這將導致我們無法在訓練過程中及時的發(fā)現(xiàn)問題,等訓完對著一個滿意分數(shù)的 checkpoint 看生成結果的時候才發(fā)現(xiàn)空歡喜一場。

對于上述這種問題,我們可以通過 3 個指標來監(jiān)控:KL、Response Length、Perplexity。

5eff1ffa-82f6-11ee-939d-92fbcf53809c.png訓練過程中的各種指標,從約第 420 step 開始: 1. reward 出現(xiàn)驟增。2. KL 出現(xiàn)驟增。3. Perplexity 出現(xiàn)驟降。4. Response Length 出現(xiàn)驟增。5. 訓練效果出現(xiàn)驟降(圖左上紅線)

因此我們可以總結出幾種指標異常的情況:

  • Reward 出現(xiàn)驟增:很可能 Policy Model 找到了某條 shortcut,比如通過模式崩潰來獲得更高的分數(shù)。
  • KL 出現(xiàn)驟增:同上,很可能此時的輸出模式已經(jīng)完全崩潰。
  • Perplexity 驟降:由于 PPL 是指代模式對當前生成結果的「確定性」,一般來講,句子的生成都會帶有一定的不確定性,當 Policy Model 對某一個生成結果突然「非常確定」的時候(無論是什么樣的上文都很確定接下來應該輸出什么),那么它大概率是已經(jīng)擬合到了一個確定的「崩壞模式」上了。
  • Response Length 驟增:這個對應我們之前給的 bad case,回復長度的驟增也可能代表當前輸出已經(jīng)崩潰。

2.2 Score Normalization & Clipping

PPO 的整個訓練都是圍繞優(yōu)化 Score 作為目標來進行的,和 Score 相關的變量有 2 個:

  • Reward:由 RM(≈ Human) 直接給出的反饋。
  • Advantages:由 Reward 和 Critic Model 共同決定的優(yōu)勢值,最終用于 loss 計算。

對于這 2 個值,我們都可以對其進行「歸一化」和「裁剪」。

Reward 的處理公式如下:

5f18e160-82f6-11ee-939d-92fbcf53809c.pngReward Normalization & Clipping

上述式子將 reward 化成了一個均值為 0 的標準分布,均值為 0 是為了保證在訓練過程中得到的正負獎勵能夠盡可能的均勻,如果一段時間內(nèi)全為負或全為正從直覺上來講不太利于模型學習。

文中提到,使用 clipping 可以限制模型進化的「最終分數(shù)」沒有那么高,鑒于之前「分數(shù)越高,并不一定有更好的效果」的結論,作者認為使用 clipping 對最終的效果是有益的。

至于 Advantages,在 PPO 的標準流程里已經(jīng)會對其進行 Normalization,而 advantage clipping 和 reward clipping 在本質上其實很相似,則只用在 reward 階段進行截斷即可,所以對于 Advantage 來講不需要做太多其他額外的操作。

2.3 Policy Loss 設計

在傳統(tǒng)的 PPO 流程中,我們通常會對 Policy Molde 的 Loss 上做以下 2 種操作:

  • Importance Sampling:這是 PPO 中加快 On-Policy 算法訓練速度的關鍵步驟,即一次采樣的數(shù)據(jù)可以進行多次更新(通過系數(shù)補償)。這種方法通常和 KL 懲罰一起使用,實驗表明這樣能夠更加穩(wěn)定 PPO 的訓練,但對最終的效果會存在一定折損(所以最好的還是 1 輪 sample 只做一次 update,退化為原始的 PG 流程)。
  • Entropy Loss:一般為了鼓勵 Policy 在進化的同時保留「探索」的能力,我們會在 loss 中加入 entropy(確定性)loss,但在 RLHF 中這項設置對超參非常敏感,很容易就崩掉。鑒于 KL 和 Entropy 有著相似的效果,因此作者更推薦使用 KL 來代替 Entropy Loss。

除了上述 2 個傳統(tǒng)設置外,RLHF 中加入一個新的指標:Token Level KL-Penalty。

在傳統(tǒng)的 RL 流程中,agent 每采取一個 action 后都會得到一個 action reward,對比到文本生成任務中,每新生成一個 token 就等于做出了一次 action,但實際上我們無法每生成一個 token 就打出一個分數(shù),我們只能在一個完整句子(Trajectory)生成完成之后打出一個 Total Reward。

這就比較痛苦了,當我們只有一個長序列的最后得分時,前面的每一個 step 的得分估計就變得非常困難。因此,為了避免「sparse reward」的同時限制 Policy Model 朝著「相對合理的方向」進化,我們會通過計算每個生成 token 與參考模型之間的 KL 來作為單個 token 的 reward 分數(shù)。

5f245072-82f6-11ee-939d-92fbcf53809c.png式子的前半部分為 reward(discounted)后半部分為 KL 懲罰分數(shù)

2.4 模型初始化

PPO 繼承自 Actor-Critic 框架,因此算法中一共包含 2 個模型:Actor 和 Critic。

  • Actor Model(Policy Model)

Policy Model 是指我們最終訓練后使用的生成模型,Policy Model 需要具備一定基本的能力才能保證訓練的穩(wěn)定性,通常會選用 SFT 之后的模型。這個比較好理解,如果我們選用 Pretrained Model 為起點的話,探索空間會非常大,同時也更加的不穩(wěn)定(對 Reward Model 要求更高)。

  • Critic Model

一種很直覺的想法是:同樣是「評判任務」,我們直接使用 Reward Model 來當作 Critic Model 就好了。

但其實這種想法不完全正確,從本質上來講 Critic 需要對每一個 token 的狀態(tài)進行打分,而 RM 是對整個句子進行綜合得分評估,這兩個任務還是存在一定的區(qū)別。

因此,一種更好的方式是:先訓練 Critic Model一段時間,直到 Critic Loss 降的相對較低為止。預先訓練能夠幫助在正式訓練的初期 Critic 能夠進行較為正確的 value 預估,從而穩(wěn)定訓練過程,至于使用 SFT 還是 RM 作為 Critic 的結構,實驗結果顯示并沒有非常明顯的區(qū)別。

2.5 最優(yōu)策略集合(PPO-max)

文章的末尾給出了作者匯聚了各種實驗結果給出的一套推薦的策略:

  • reward normalize:使用歷史獲得過的所有 reward 的均值和方差進行標準化。
  • token KL penalty:限制模型更新方向。
  • Critic Model:使用 RM 初始化 Critic,并在 PPO 正式訓練之前先進行 Critic 預訓練。
  • Global Gradient Clipping
  • 使用相對較小的 Experience Buffer。
  • Pretrain Loss:在 PPO 訓練 loss 中加入 Pretrain Language Model Loss,和 [InstructGPT] 中保持一致。
5f3b6cc6-82f6-11ee-939d-92fbcf53809c.pngPPO-max 所使用的方法合集(標星的方法)



聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 噪聲
    +關注

    關注

    13

    文章

    1099

    瀏覽量

    47281
  • 語言模型
    +關注

    關注

    0

    文章

    487

    瀏覽量

    10201
  • LLM
    LLM
    +關注

    關注

    0

    文章

    247

    瀏覽量

    279

原文標題:怎樣讓 PPO 訓練更穩(wěn)定?早期人類征服 RLHF 的馴化經(jīng)驗

文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    拆解大語言模型RLHF中的PPO算法

    由于本文以大語言模型 RLHFPPO 算法為主,所以希望你在閱讀前先弄明白大語言模型 RLHF 的前兩步,即 SFT Model 和 Reward Model 的訓練過程。另外因
    的頭像 發(fā)表于 12-11 18:30 ?1837次閱讀
    拆解大語言模型<b class='flag-5'>RLHF</b>中的<b class='flag-5'>PPO</b>算法

    altium designer 哪個版本更穩(wěn)定好用?

    各位高手覺得altium designer 哪個版本更穩(wěn)定好用???推薦一個唄、、
    發(fā)表于 05-09 10:38

    C-Load TM運算放大器征服穩(wěn)定

    DN107-C-Load TM運算放大器征服穩(wěn)定
    發(fā)表于 06-24 10:08

    請問怎么組件更穩(wěn)定?

    嗨!我們有一些不穩(wěn)定的元件,例如電容器*“pF”*和電阻器*“M Ohm”*。您是否有任何提示可以這種類型的組件更穩(wěn)定?有誰知道如何做這樣的事情,在調(diào)試行中結合多個測試,以便更有可能測試該組件
    發(fā)表于 08-30 09:52

    STM32與PIC對比分析?哪個更穩(wěn)定?

    有人做過:STM32與PIC比較嗎?那個更穩(wěn)定?我發(fā)現(xiàn)PIC經(jīng)常有程序飛出,STM32有嗎?
    發(fā)表于 10-19 07:27

    如何AGP顯卡工作得更穩(wěn)定

    如何AGP顯卡工作得更穩(wěn)定   隨著新顯示卡的不斷上市,顯卡和主板的兼容性問題時有發(fā)生, 其中采用非Intel芯片組的主板“發(fā)
    發(fā)表于 01-12 11:14 ?615次閱讀

    如何WindowsXP跑得更快更穩(wěn)

    如何WindowsXP跑得更快更穩(wěn)  微軟的XP系統(tǒng)被大多數(shù)網(wǎng)民稱為是歷史上最優(yōu)秀的操作系統(tǒng),有眼花繚亂的功能、更快的速度,當然這
    發(fā)表于 02-23 13:53 ?791次閱讀

    了解如何您的汽車電池更穩(wěn)定、運行時間更長

    了解如何您的汽車電池更穩(wěn)定、運行時間更長
    發(fā)表于 11-01 08:27 ?0次下載
    了解如何<b class='flag-5'>讓</b>您的汽車電池<b class='flag-5'>更穩(wěn)定</b>、運行時間更長

    微軟開源“傻瓜式”類ChatGPT模型訓練工具

    DeepSpeed-RLHF 模塊:DeepSpeed-RLHF 復刻了 InstructGPT 論文中的訓練模式,并確保包括 a) 監(jiān)督微調(diào)(SFT),b) 獎勵模型微調(diào)和 c) 基于人類
    的頭像 發(fā)表于 04-14 09:36 ?968次閱讀

    怎么直流調(diào)速更穩(wěn)?

    直流調(diào)速的穩(wěn)定性。直流調(diào)速更穩(wěn)有多種方法,即可控硅調(diào)速、PWM場效管調(diào)速,直流斬波調(diào)速等等。根據(jù)實際要求來選配合適的直流調(diào)速最為必要?,F(xiàn)以常規(guī)直流DC220V~440V/2000A以下為例。一、要有精
    的頭像 發(fā)表于 03-10 14:42 ?967次閱讀
    怎么<b class='flag-5'>讓</b>直流調(diào)速<b class='flag-5'>更穩(wěn)</b>?

    RLHF實踐中的框架使用與一些坑 (TRL, LMFlow)

    我們主要用一個具體的例子展示如何在兩個框架下做RLHF,并且記錄下訓練過程中我們踩到的主要的坑。這個例子包括完整的SFT,獎勵建模和 RLHF, 其中RLHF包括通過 RAFT 算法(
    的頭像 發(fā)表于 06-20 14:36 ?1774次閱讀
    <b class='flag-5'>RLHF</b>實踐中的框架使用與一些坑 (TRL, LMFlow)

    大語言模型(LLM)預訓練數(shù)據(jù)集調(diào)研分析

    model 訓練完成后,使用 instruction 以及其他高質量的私域數(shù)據(jù)集來提升 LLM 在特定領域的性能;而 rlhf 是 openAI 用來model 對齊人類價值觀的一
    的頭像 發(fā)表于 09-19 10:00 ?938次閱讀
    大語言模型(LLM)預<b class='flag-5'>訓練</b>數(shù)據(jù)集調(diào)研分析

    插卡路由器設置教程,家庭網(wǎng)絡更穩(wěn)定高速!

    插卡路由器設置,家庭網(wǎng)絡更穩(wěn)定高速!
    的頭像 發(fā)表于 11-29 17:17 ?1655次閱讀

    一種基于表征工程的生成式語言大模型人類偏好對齊策略

    學習算法RLHF[1]的代替方法之一,其性能上超過其他現(xiàn)有的替代方案,媲美RLHF。實現(xiàn)較為簡單,訓練時對于硬件資源要求也相對較低。
    的頭像 發(fā)表于 01-03 14:25 ?388次閱讀
    一種基于表征工程的生成式語言大模型<b class='flag-5'>人類</b>偏好對齊策略

    圖解大模型RLHF系列之:人人都能看懂的PPO原理與源碼解讀

    回想一下我們對NLP任務做強化學習(RLHF)的目的:我們希望給模型一個prompt,模型能生成符合人類喜好的response。再回想一下gpt模型做推理的過程:每個時刻只產(chǎn)生一個token,即token是一個一個蹦出來的,先
    的頭像 發(fā)表于 01-14 11:19 ?2205次閱讀
    圖解大模型<b class='flag-5'>RLHF</b>系列之:人人都能看懂的<b class='flag-5'>PPO</b>原理與源碼解讀