note
- SFT使用交叉熵損失函數,目標是調整參數使模型輸出與標準答案一致,不能從整體把控output質量,RLHF(分為獎勵模型訓練、近端策略優化兩個步驟)則是將output作為一個整體考慮,優化目標是使模型生成高質量回復。
- 啟發1:像可以用6b、66b依次得到差一點、好一點的target構造排序數據集,進行DPO直接偏好學習或者其他RLHF替代方法(RAILF、ReST等),比直接RLHF更方便訓練
- 啟發2:為了減少幻覺(如拒絕回答),可以構造排序數據集(如good response為拒絕話術,bad response是沒拒絕的胡亂回答)進行RLHF
- 實驗:基于chatglm 6b、gpt4構造排序數據集,然后對微調6b后的sft模型進行dpo直接偏好學習訓練
- 獎勵模型訓練:獎勵模型通常也采用基于 Transformer 架構的預訓練語言模型。在獎勵模型中,移除最后一個
非嵌入層,并在最終的 Transformer 層上疊加了一個額外的線性層。無論輸入的是何種文本,獎勵
模型都能為文本序列中的最后一個標記分配一個標量獎勵值,樣本質量越高,獎勵值越大。 - 在RLHF中(比如MOSS-RLHF)是使用獎勵模型來初始化評論家模型(critic model)和獎勵模型(reward model),評論家模型也使用獎勵模型初始化,便于在早期提供較準確的狀態值估計;但是注意PPO會對策略模型、評論家模型訓練并更新;獎勵模型、參考模型不參與訓練。
- 異策略:固定一個演員和環境交互(不需要更新),將交互得到的軌跡交給另一個負責學習的演員訓練。PPO就是策略梯度的異策略版本。通過重要性采樣(這里使用KL散度)進行策略梯度的更新。PPO解決了傳統策略梯度方法的缺點:高方差、低數據效率、易發散等問題。
- PPO-clip算法通過引入裁剪機制來限制策略更新的幅度,使得策略更新更加穩定
文章目錄
- note
- 零、強化學習基礎知識
- 1. 強化學習框架的六要素
- 一、RLHF對齊
- 1. 訓練獎勵模型和RL
- 2. RLHF
- 3. 常見的公開偏好數據集
- 二、PPO近端策略優化
- 1. PPO介紹
- 2. PPO效果
- 三、Llama2中的RLHF
- 1. 兩個獎勵模型
- 2. 拒絕采樣步驟
- 四、RLHF的替代技術
- (一)DPO直接偏好優化
- 1. DPO模型
- 2. DPO實驗
- 3. 微軟的PPO實踐
- 4. DPO、PPO、BPO區別
- (二)RLAIF模型
- (三)ReST模型
- (四)Constitutional AI
- (五)RRHF模型
- (六)ReMax模型
- (七)RSO模型
- Reference
零、強化學習基礎知識
1. 強化學習框架的六要素
(1)一句話:RL是研究agent智能體和環境交互的問題,目標是使agent在復雜而不確定的環境中最大化獎勵值。
- 智能體(Agent):強化學習的主體也就是作出決定的“大腦”;
- 環境(Environment):智能體所在的環境,智能體交互的對象;
- 行動(Action):由智能體做出的行動;
- 獎勵(Reward):智能體作出行動后,該行動帶來的獎勵;
- 狀態(State):智能體自身當前所處的狀態;
- 目標(Objective):指智能體希望達成的目標。
串起6要素:一個在不斷變化的【環境】中的【智能體】,為了達成某個【目標】,需要不斷【行動】,行動給予反饋即【獎勵】,智能體對這些獎勵進行學習,改變自己所處的【狀態】,再進行下一步行動,即持續這個【行動-獎勵-更新狀態】的過程,直到達到目標。
(2)策略與價值:
- agent在嘗試各種行為時,就是在學習一個策略policy(一套指導agent在特定狀態下行動的規則)
- agent會估計價值value,即預測未來采取某個行為后所能帶來的獎勵
任何一個有智力的個體,它的學習過程都遵循強化學習所描述的原理。比如說,嬰兒學走路就是通過與環境交互,不斷從失敗中學習,來改進自己的下一步的動作才最終成功的。再比如說,在機器人領域,一個智能機器人控制機械臂來完成一個指定的任務,或者協調全身的動作來學習跑步,本質上都符合強化學習的過程。
(3)獎勵模型(Reward Model)和評論模型(Critic Model):
-
獎勵模型(Reward Model):獎勵模型是強化學習中一個基本元素,它定義了智能體執行特定動作后將得到的獎勵。換句話說,獎勵模型為智能體在其環境中執行的每個動作提供獎勵(正面)或懲罰(負面)。這個模型幫助智能體理解哪些動作是有利的,哪些不是,因此,智能體嘗試通過最大化獲得的總獎勵來找到最優策略。
-
評論模型(Critic Model):評論模型是一種基于值迭代的方法,它在每個狀態或動作上評估(或者"評論")期望的未來獎勵。評論者用來估計一個動作或狀態的長期價值,通常在演員-評論者模型(Actor-Critic Models)中使用,演員選擇動作,評論者評估動作。
兩者的主要區別在于,獎勵模型直接反映了每個動作的即時反饋,而評論模型是對未來獎勵的一個預測或估計,關注的是長期價值,通常基于數學期望來進行評估。
一、RLHF對齊
1. 訓練獎勵模型和RL
用獎勵模型訓練sft模型,生成模型使用獎勵或懲罰來更新策略,以便生成更高質量、符合人類偏好的文本。
獎勵模型 | RL強化學習 | |
---|---|---|
作用 | (1)學習人類興趣偏好,訓練獎勵模型。由于需要學習到偏好答案,訓練語料中含有response_rejected不符合問題的答案。 (2)獎勵模型能夠在RL強化學習階段對多個答案進行打分排序。 | 根據獎勵模型,訓練之前的sft微調模型,RL強化學習階段可以復用sft的數據集 |
訓練語料 | {‘question’: ‘土源性線蟲感染的多發地區是哪里?’, ‘response_chosen’: ‘蘇北地區;貴州省劍河縣;西南貧困地區;桂東;江西省鄱陽湖區;江西省’, ‘response_rejected’: ‘在熱帶和亞熱帶地區的農村。’}, | {‘qustion’:‘這是一個自然語言推理問題:\n前提:要繼續做好扶貧工作,幫助貧困地區脫貧致富\n假設:中國有扶貧工作\n選項:矛盾,蘊含,中立’ ‘answer’:‘蘊含。因為前提中提到了要繼續做好扶貧工作,這表明中國存在扶貧工作。因此,前提蘊含了假設。’} |
2. RLHF
RLHF(reinforcement learning from human feedback)
- 分為三個步驟
- step1 我做你看:有監督學習,從訓練集中挑出一批prompt,人工對prompt寫答案。其實就是構造sft數據集進行微調。
- step2 你做我看:獎勵模型訓練,這次不人工寫答案了,而是讓GPT或其他大模型給出幾個候選答案,人工對其質量排序,Reward model學習一個打分器;這個讓機器學習人類偏好的過程就是【對齊】,但可能會導致胡說八道,可以通過KL Divergence等方法解決。
- instructGPT中獎勵模型的損失函數如下,其中 rθ(x,y) 是獎勵模型對提示x和完成y的標量輸出,具有參數θ, y w y_w yw?是 y w y_w yw?和 y l y_l yl?中更受歡迎的補全,D是人類比較的數據集。 loss ? ( θ ) = ? 1 ( K 2 ) E ( x , y w , y l ) ~ D [ log ? ( σ ( r θ ( x , y w ) ? r θ ( x , y l ) ) ) ] \operatorname{loss}(\theta)=-\frac{1}{\left(\begin{array}{c} K \\ 2 \end{array}\right)} E_{\left(x, y_w, y_l\right) \sim D}\left[\log \left(\sigma\left(r_\theta\left(x, y_w\right)-r_\theta\left(x, y_l\right)\right)\right)\right] loss(θ)=?(K2?)1?E(x,yw?,yl?)~D?[log(σ(rθ?(x,yw?)?rθ?(x,yl?)))]
- 每個樣本包括
question
、response_chosen
、response_rejected
鍵值對,每對樣本的loss定義: L ( ψ ) = log ? σ ( r ( x , y w ) ? r ( x , y l ) ) \mathcal{L}(\psi)=\log \sigma\left(r\left(x, y_w\right)-r\left(x, y_l\right)\right) L(ψ)=logσ(r(x,yw?)?r(x,yl?))- 其中上面的符號: σ \sigma σ 是 sigmoid 函數, r r r 代表參數為 ψ \psi ψ 的獎勵模型的值, r ( x , y ) r(x, y) r(x,y) 表示針對輸入提示 x x x 和輸出 y y y所預測出的單一標量獎勵值。
- 上面是instructGPT的ranking loss,但是llama2中增加一個離散函數 m ( r ) m(r) m(r)
- step3 自學成才:PPO訓練,利用第二階段的獎勵模型RM計算獎勵分數,同時使用PPO(近端策略優化)更新第一步訓練得到的sft模型,最大優化該目標函數: objective? ( ? ) = E ( x , y ) ~ D π ? R L [ r θ ( x , y ) ? β log ? ( π ? R L ( y ∣ x ) / π S F T ( y ∣ x ) ) ] + γ E x ~ D pretrain? [ log ? ( π ? R L ( x ) ) ] \begin{aligned} \text { objective }(\phi)= & E_{(x, y) \sim D_{\pi_\phi^{\mathrm{RL}}}}\left[r_\theta(x, y)-\beta \log \left(\pi_\phi^{\mathrm{RL}}(y \mid x) / \pi^{\mathrm{SFT}}(y \mid x)\right)\right]+ \\ & \gamma E_{x \sim D_{\text {pretrain }}}\left[\log \left(\pi_\phi^{\mathrm{RL}}(x)\right)\right] \end{aligned} ?objective?(?)=?E(x,y)~Dπ?RL???[rθ?(x,y)?βlog(π?RL?(y∣x)/πSFT(y∣x))]+γEx~Dpretrain???[log(π?RL?(x))]?
- π φ R L π^{RL}_φ πφRL?是學習到的RL策略,
- π S F T π^{SFT} πSFT是監督訓練模型,
- D p r e t r a i n D_pretrain Dp?retrain 是預訓練分布。
- KL獎勵系數β和預訓練損失系數γ分別控制KL懲罰和預訓練梯度的強度。對于“PPO”模型,γ 設為 0。
3. 常見的公開偏好數據集
源自《Llama 2: Open Foundation and Fine-Tuned Chat Models》Table 6:
如:https://huggingface.co/datasets/lvwerra/stack-exchange-paired
二、PPO近端策略優化
1. PPO介紹
- 思想:保證策略改進同時,通過一些約束來控制策略更新的幅度;在每次迭代中,通過采樣多個軌跡數據來更新策略:
- 使用當前策略對環境交互,收集多個軌跡數據
- 利用第一步的軌跡數據計算當前策略和舊策略之間的KL散度,通過控制KL散度大小來限制策略更新的幅度
- 使用優化器對策略進行更新,使其更加接近當前的樣本策略
- 近端策略優化PPO涉及到四個模型:
- (1)策略模型(Policy Model),生成模型回復。
- (2)獎勵模型(Reward Model),輸出獎勵分數來評估回復質量的好壞。
- (3)評論模型(Critic Model/value model),來預測回復的好壞,可以在訓練過程中實時調整模型,選擇對未來累積收益最大的行為。
- (4)參考模型(Reference Model)提供了一個 SFT 模型的備份,幫助模型不會出現過于極端的變化。
- 近端策略優化PPO的實施流程如下:
- 環境采樣:策略模型基于給定輸入生成一系列的回復,獎勵模型則對這些回復進行打分獲得獎勵。
- 優勢估計:利用評論模型預測生成回復的未來累積獎勵,并借助廣義優勢估計(Generalized Advantage Estimation,GAE)算法來估計優勢函數,能夠有助于更準確地評估每次行動的好處。
- GAE:基于優勢函數加權估計的GAE可以減少策略梯度估計方差
- 優化調整:使用優勢函數來優化和調整策略模型,同時利用參考模型確保更新的策略不會有太大的變化,從而維持模型的穩定性。
- 相關強化學習概念對應:
- Policy:現有LLM接受輸入,進行輸出的過程。
- State:當前生成的文本序列。
- Action Space:即vocab,也就是從vocab中選取一個作為本次生成的token。
- KL散度(Kullback-Leibler Divergence),可以衡量兩個概率分布之間的差異程度。在 PPO 算法中,KL 散度(Kullback-Leibler Divergence)的計算公式如下:
K L ( π o l d ∣ ∣ π n e w ) = ∑ i π o l d ( i ) l o g ( π o l d ( i ) / π n e w ( i ) ) KL(π_old || π_new) = ∑i π_old(i) log(π_old(i) / π_new(i)) KL(πo?ld∣∣πn?ew)=∑iπo?ld(i)log(πo?ld(i)/πn?ew(i))- 其中,π_old 表示舊的策略,π_new 表示當前的樣本策略。KL 散度的含義是用 π_old 的分布對 π_new 的分布進行加權,然后計算兩個分布之間的差異程度。
- 具體來說,KL 散度的計算方法是首先計算 π_old(i) / π_new(i) 的比值,然后對其取對數并乘以 π_old(i) 來進行加權。最后將所有加權后的結果相加,即可得到 KL 散度的值。這里的KL散度值是一個【懲罰項】,即經過RL訓練后模型和SFT后模型的KL散度(繁殖兩個模型偏差太多,導致模型效果下降,RLHF的主要目的是alignment)。
注意:KL 散度是一個非對稱的度量,即 KL(π_old || π_new) 與 KL(π_new || π_old) 的值可能不相等。在 PPO 算法中,我們通常使用 KL(π_old || π_new) 來控制策略更新的幅度,因為 KL(π_old || π_new) 的值通常比 KL(π_new || π_old) 更容易控制,并且更能夠反映出策略改變的方向。
2. PPO效果
在instructGPT論文實驗中,效果最好的是GPT-3 + supervised finetuning + RLHF的模型:
三、Llama2中的RLHF
1. 兩個獎勵模型
- 核心一:兩個獎勵模型。Llama-2-chat 遵循與 InstructGPT 的 RLHF 第 1 步相同的基于指令數據的監督式微調步驟。然而,在 RLHF 第 2 步,Llama-2-chat 是創建兩個獎勵模型,而不是一個(因為有用性、安全性某種程度上是對立關系)。
- 一個是基于有用性
- 一個是基于安全性
2. 拒絕采樣步驟
- 核心二:拒絕采樣(rejection sampling)。Llama-2-chat 模型會經歷多個演進階段,獎勵模型也會根據 Llama-2-chat 中涌現的錯誤而獲得更新。它還有一個額外的拒絕采樣步驟。即有多個輸出,選擇獎勵函數值最高的一個用于梯度更新。即用RM篩選出當前模型最好的結果進行sft。實驗中是將llama2-chat迭代了5輪(前4輪采用拒絕采樣,最后一輪使用PPO)。
- 拒絕采樣:是蒙特卡洛方法的一種
- 下圖:左邊是llama2的reward model,右邊是gpt4進行judge;都是基于llama2-chat模型進行微調或PPO。
參考維基百科:https://en.wikipedia.org/wiki/Rejection_sampling
四、RLHF的替代技術
(一)DPO直接偏好優化
1. DPO模型
- 論文:《Direct Preference Optimization: Your Language Model is Secretly a Reward Model 》
- 論文地址:https://arxiv.org/abs/2305.18290
- 背景:RLHF是一個復雜、不穩定、難訓練的過程(用reward model進行ppo強化學習等),而DPO可以避開訓練獎勵模型這個步驟,直接對排序數據集進行直接偏好學習。將對獎勵函數的損失轉為對策略的損失,優化和RLHF相同的目標函數(KL散度限制下,最大化reward)。
- 相關原理: 和RRHF相似,但帶有一個sft模型約束(KL散度),保證不加sft Loss情況下訓練不崩潰。原本基于RL的目標,現在通過BCE二元交叉熵來優化(不需要再訓練期間明確學習獎勵函數or從策略中采樣)。
- 有監督損失函數,DPO優化的目標函數: max ? π θ E π θ ( y ∣ x ) [ r ? ( x , y ) ? β log ? ∑ y π r e f exp ? ( 1 β r ? ( x , y ) ) ? f ( r ? , π r e f , β ) ? β log ? π θ ( y ∣ x ) π r e f ( y ∣ x ) ? K L ] \max _{\pi_\theta} \mathbb{E}_{\pi_\theta(y \mid x)}[\underbrace{r_\phi(x, y)-\beta \log \sum_y \pi_{\mathrm{ref}} \exp \left(\frac{1}{\beta} r_\phi(x, y)\right)}_{f\left(r_\phi, \pi_{\mathrm{ref}}, \beta\right)}-\underbrace{\beta \log \frac{\pi_\theta(y \mid x)}{\pi_{\mathrm{ref}}(y \mid x)}}_{\mathrm{KL}}] πθ?max?Eπθ?(y∣x)?[f(r??,πref?,β) r??(x,y)?βlogy∑?πref?exp(β1?r??(x,y))???KL βlogπref?(y∣x)πθ?(y∣x)???]
- DPO更新參數,目標函數: L D P O ( π θ ; π r e f ) = ? E ( x , y w , y l ) ~ D [ log ? σ ( β log ? π θ ( y w ∣ x ) π r e f ( y w ∣ x ) ? β log ? π θ ( y l ∣ x ) π r e f ( y l ∣ x ) ) ] \mathcal{L}_{\mathrm{DPO}}\left(\pi_\theta ; \pi_{\mathrm{ref}}\right)=-\mathbb{E}_{\left(x, y_w, y_l\right) \sim \mathcal{D}}\left[\log \sigma\left(\beta \log \frac{\pi_\theta\left(y_w \mid x\right)}{\pi_{\mathrm{ref}}\left(y_w \mid x\right)}-\beta \log \frac{\pi_\theta\left(y_l \mid x\right)}{\pi_{\mathrm{ref}}\left(y_l \mid x\right)}\right)\right] LDPO?(πθ?;πref?)=?E(x,yw?,yl?)~D?[logσ(βlogπref?(yw?∣x)πθ?(yw?∣x)??βlogπref?(yl?∣x)πθ?(yl?∣x)?)]
- 注意:獎勵函數 r r r和策略 π π π的關系推倒出來后,就能把ranking loss中的獎勵函數 r r r替換
- 目標函數含義:如果是好答案,則盡可能增大被policy策略模型生成的概率
- 對上面的目標函數的梯度: ? θ L D P O ( π θ ; π r e f ) = ? β E ( x , y w , y l ) ~ D [ σ ( r ^ θ ( x , y l ) ? r ^ θ ( x , y w ) ) ? higher?weight?when?reward?estimate?is?wrong? [ ? θ log ? π ( y w ∣ x ) ? increase?likelihood?of? y w ? ? θ log ? π ( y l ∣ x ) ? decrease?likelihood?of? y l ] ] , \begin{aligned} & \nabla_\theta \mathcal{L}_{\mathrm{DPO}}\left(\pi_\theta ; \pi_{\mathrm{ref}}\right)= \\ & -\beta \mathbb{E}_{\left(x, y_w, y_l\right) \sim \mathcal{D}}[\underbrace{\sigma\left(\hat{r}_\theta\left(x, y_l\right)-\hat{r}_\theta\left(x, y_w\right)\right)}_{\text {higher weight when reward estimate is wrong }}[\underbrace{\nabla_\theta \log \pi\left(y_w \mid x\right)}_{\text {increase likelihood of } y_w}-\underbrace{\nabla_\theta \log \pi\left(y_l \mid x\right)}_{\text {decrease likelihood of } y_l}]], \end{aligned} ??θ?LDPO?(πθ?;πref?)=?βE(x,yw?,yl?)~D?[higher?weight?when?reward?estimate?is?wrong? σ(r^θ?(x,yl?)?r^θ?(x,yw?))??[increase?likelihood?of?yw? ?θ?logπ(yw?∣x)???decrease?likelihood?of?yl? ?θ?logπ(yl?∣x)??]],?
- 啟發思想:利用chatglm6b、s66b依次得到差一點的target、好一點的target的排序數據集,在這個排序數據集上對sft model直接進行dpo直接偏好學習,比直接rlhf更方便訓練(繞過訓練reward model的步驟)
# 數據樣例
{"question": "我的女兒快兩歲了好動是怎么回事,我的女兒快兩歲了,還不會坐的時候,當大人抱著坐時(90度),她會把兩條腿抬起來使勁,繃直腿和腳尖,累了就放下來歇一下,然后再繃,表情專注還會累得出汗,當時人們說是孩子長身體呢,沒有在意。",
"response_chosen": "你好,有的孩子可能會有些小問題,但是大多數孩子是無大礙的,因為這個年齡段正是孩子好動的年齡段,而且每個孩子的性格和秉性不一樣,有的孩子天生就是活潑,但是也有極少數可能會有關,至于出汗多,晚上睡眠出汗多,那可能是缺乏鈣或其它營養元素。可以給寶寶進行一下和缺鈣有關的檢查,微量元素和血鉛鎘化驗也很重要。",
"response_rejected": "這個現象可能是由于嬰兒發育過程中的骨骼生長造成的。"}
結果:在 RLHF 用于擬合獎勵模型的交叉熵損失也可用于直接微調 LLM。根據他們的基準測試,使用 DPO 的效率更高,而且在響應質量方面也通常優于 RLHF/PPO。
2. DPO實驗
實驗:
- 論文中的實驗:探索DPO在參考策略中權衡獎勵最大化和 KL-divergence 最小化的效率;并且評估DPO在更大模型和更困難的 RLHF 任務 (包括摘要和對話) 上的性能
- 我的簡單實驗:直接使用bloomz-560m模型(預訓練權重選擇Bloom-560m(pretrain),不是Bloomz-560m(pretrain+ft on xP3)),不需要reward_model,使用dpo直接偏好優化,loss如下圖,僅100條偏好數據集就能較好收斂。
- 可以使用trl庫中的DPOTrainer庫:
- 數據:準備排序數據集(我在bloom模型上實驗是用的100條公開數據集)
- 原本基于RL的目標,現在通過BCE二元交叉熵來優化
- 有監督損失函數,DPO優化的目標函數: max ? π θ E π θ ( y ∣ x ) [ r ? ( x , y ) ? β log ? ∑ y π r e f exp ? ( 1 β r ? ( x , y ) ) ? f ( r ? , π r e f , β ) ? β log ? π θ ( y ∣ x ) π r e f ( y ∣ x ) ? K L ] \max _{\pi_\theta} \mathbb{E}_{\pi_\theta(y \mid x)}[\underbrace{r_\phi(x, y)-\beta \log \sum_y \pi_{\mathrm{ref}} \exp \left(\frac{1}{\beta} r_\phi(x, y)\right)}_{f\left(r_\phi, \pi_{\mathrm{ref}}, \beta\right)}-\underbrace{\beta \log \frac{\pi_\theta(y \mid x)}{\pi_{\mathrm{ref}}(y \mid x)}}_{\mathrm{KL}}] πθ?max?Eπθ?(y∣x)?[f(r??,πref?,β) r??(x,y)?βlogy∑?πref?exp(β1?r??(x,y))???KL βlogπref?(y∣x)πθ?(y∣x)???]
實驗結果分析:
(1)文中在多個數據集任務上進行對比實驗(下圖):
- 使用偏好數據集 D = { x ( i ) , y w ( i ) , y l ( i ) } i = 1 N \mathcal{D}=\left\{x^{(i)}, y_w^{(i)}, y_l^{(i)}\right\}_{i=1}^N D={x(i),yw(i)?,yl(i)?}i=1N?
- 左圖(情感分類任務):在sentiment generation任務中,在所有的KL散度下,DPO都取得了最大的reward;
- 右圖(文本摘要任務):在DR summarization任務中,DPO也超過PPO(使用了GPT4進行評估),并且在不同的temperature下,魯棒性也更好。
(2)結果分析(下圖):
- 左圖:在單輪對話任務中,采用GPT-4計算win rate,DPO在temperature=0.75-1.00時,均取得了最好的win rate
- 右圖:DPO在訓練過程中,表現出了較快的收斂速度,訓練較為平穩;在不同temperature(實驗分別取0.7和1.0)時DPO的勝率都是接近的,證明了DPO的可靠性。
3. 微軟的PPO實踐
論文:Contrastive Post-training Large Language Models on Data Curriculum
鏈接:https://arxiv.org/abs/2310.02263
核心:考慮到排序數據成本,他們直接默認GPT4 > ChatGPT > InstructGPT的效果順序構造排序數據集,實驗后得到以下結論:
(1)用DPO在 GPT4 vs InstructGPT 上訓練的效果 > 直接在GPT-4數據精調的效果
(2)先在簡單的pair上訓練后,再在困難的pair上訓練會有更好的效果
實驗細節:
(1)訓練參數:
- model:llama-7b
- deepspeed zero-3
- temp=0.1
(2)實驗結果:
- 排序數據集使用GPT-4 vs. InstructGPT作為pair時效果最好(因為大部分gpt4生成的target都好于后者)
- 用sft model訓練DPO,比llama base model直接進行DPO效果好
4. DPO、PPO、BPO區別
BPO實驗結果:在 VicunaEval 上使用 GPT-4 進行自動評估,BPO 能夠大幅提升 ChatGPT、Claude 等模型的人類偏好,并助力 llama2-13b 模型大幅超過 llama2-70b 的版本。
(二)RLAIF模型
谷歌-RLAIF:Scaling Reinforcement Learning from Human Feedbak with AI Feadback
論文地址:https://arxiv.org/abs/2309.00267
- 核心:之前的是RLHF,這里將H(human)替換為AI給予reward;在Constitutional AI中就提出過RLAIF了(通過混合使用人類與AI偏好,組合Constitutional AI自我修正技術);deepmind貢獻則是做實驗比較RLAIF和RLHF在文本摘要任務的表現。
- 解決的問題:收集高質量人類偏好標簽的瓶頸問題。在 RLHF 中用于訓練獎勵模型的評分并不一定非要由人類提供,也可以使用 LLM(這里是 PaLM 2)生成。在人類評估者看來,用傳統 RLHF 方法和 RLAIF 方法訓練的模型得到的結果都差不多。
實驗過程:
(1)通過LLM(實驗直接使用了PaLM)對兩個target按照一定的prompt確定所偏好的target(對應的prompt如下,few-shot):
(2)實驗細節:
- position bias:將兩個target調換位置再判斷一次,最后結果求平均值(經過LLM后得到的是target1和target2的概率)
- 實驗細節:labeling preference LLM=PaLM 2;temp=0,top-k的k=40
- RL:使用reward model進行RL,RL沒有使用復雜的PPO,而是使用更簡單的A2C(Actor Critic)進行RL。
(3)實驗結果:
- 證明AI反饋的有效性,當比較RLAIF和RLHF摘要時,人類對兩者都表示出相同的偏好。這意味著使用AI反饋進行訓練可以達到與使用人類反饋相似的性能,從而為RLHF的可擴展性問題提供了一個潛在的解決方案
- 提供一個潛在的替代方案:RLAIF使用現成的LLM來標記偏好,而不是依賴人類。研究發現,RLAIF和RLHF在改進方面產生了類似的結果。具體來說,對于摘要任務,人類評估者在大約70%的情況下更喜歡RLAIF和RLHF的輸出,而不是基線的有監督微調模型。
- 3個評測指標:AI Labeler Alignment、Pairwise Accuracy、WinRate
(三)ReST模型
論文:《Reinforced Self-Training (ReST) for Language Modeling》谷歌 deepmind
論文地址:https://arxiv.org/abs/2308.08998
核心:在之前人類對序列的偏好是使用學得的獎勵函數來建模的。ReST 算法將典型 RL pipeline 的數據集增長(Grow)和策略改進(Improve)解耦成兩個單獨的離線階段。避免了在線RL方法計算成本高、易受到攻擊的問題
ReST優勢:
- 與在線 RL 相比,ReST 由于在 Improve step 中利用了 Grow step 的輸出,因此計算負擔大大減少;
- 策略的質量不在受原始數據集質量的限制(如離線 RL),因為新的訓練數據是從 Grow step 中經過采樣得到的;
- 檢查數據質量并判斷對齊變得更加容易,因為 Improve step 和 Grow step 這兩個過程是解耦的;
- ReST 簡單、穩定,并且只有少量的超參數需要調優。
- ReST能用于對齊 LLM 與人類偏好。ReST 使用一種采樣方法來創建一個改進版數據集,然后在質量越來越高的子集上不斷迭代訓練,從而實現對獎勵函數的微調。
- ReST 的效率高于標準的在線 RLHF 方法(比如使用 PPO 的 RLHF),因為其能以離線方式生成訓練數據集,但他們并未全面地比較這種方法與 InstructGPT 和 Llama 2 等中使用的標準 RLHF PPO 方法。
算法過程:
(四)Constitutional AI
論文:《Constitutional AI: Harmlessness from AI Feedback》
鏈接:https://arxiv.org/abs/2212.08073
(五)RRHF模型
RRHF(Rank Responses to align Human Feedback)
論文:RRHF: Rank Responses to Align Language Models with Human Feedback without tears 阿里、清華 NeurIPS 2023
鏈接:https://arxiv.org/pdf/2304.05302.pdf
核心:在RM數據上優化LM,讓chosen回答的概率大于rejected回答的概率。在計算句子的條件概率后加上一個ranking loss
(2)數據實驗:嘗試了不同的數據采樣策略:
- 直接用開源RM的數據
- 用自己的模型生成response,用開源RM進行排序,做出新的RM數據
- 循環執行2,類似強化的思維不斷靠自身采樣到更好的答案
最后的結論也比較符合直接,是3>2>1。
(六)ReMax模型
論文:ReMax: A Simple, Effective, and Efficient Reinforcement Learning Method for Aligning Large Language Models 香港大學
核心:RL難點,將多步后的最終目標轉為模型loss。傳統RL中可能會導致學習不穩定,所以PPO中使用Actor-Critic網絡(引入一個助教給模型的每一步打分)。作者提出用強化中的REINFORCE算法來代替PPO,去掉了Critic模型,但作者在實驗中同樣發現了梯度方差較大優化不穩定的問題,于是增加了一項bias來降低方差。
實驗效果:經過ReMax的1.3b模型超過了只經過sft的llama2-7b模型。
(七)RSO模型
論文:Statistical rejection sampling improves preference optimization
Reference
[1] Rafael Rafailov, Archit Sharma, Eric Mitchell, StefanoErmon, Christopher D Manning, and Chelsea Finn.2023. Direct preference optimization: Your language model is secretly a reward model.arXiv preprintarXiv:2305.18290
[2] DPO(Direct Preference Optimization):LLM的直接偏好優化. 筆記
[3] https://github.com/LAION-AI/Open-Assistant/discussions/3347
[4] DPO——RLHF 的替代之《Direct Preference Optimization: Your Language Model is Secretly a Reward Model》論文閱讀
[5] RLAIF細節分享&個人想法
[6] RLHF中的PPO算法原理及其實現
[7] InstructGPT pairwise logloss: https://arxiv.org/abs/2203.02155
[8] DPO:Direct Preference Optimization: Your Language Model is Secretly a Reward Model
[9] RLAIF:Scaling Reinforcement Learning from Human Feedbak with AI Feadback
[10] BPO:靈活的 Prompt 對齊優化技術
[11] LLM成功不可或缺的基石:RLHF及其替代技術
[12] Reinforced Self-Training (ReST) for Language Modeling翻譯
[13] 大規模語言模型人類反饋對齊–RLAIF
[14] 谷歌團隊提出用AI反饋強化學習 (RLAIF) ,替代人類進行偏好標注,這會對AI研究產生什么影響
[15] 大規模語言模型從理論到實踐.第六章.復旦大學
[16] A Survey of Large Language Models.人大綜述
[17] LLM Training: RLHF and Its Alternatives. SEBASTIAN RASCHKA, PHD
[18] Llama 2: Open Foundation and Fine-Tuned Chat Models:https://huggingface.co/papers/2307.09288#64c6961115bd12e5798b9e3f
[19] spinningup中文文檔:https://spinningup.qiwihui.com/zh_CN/latest/
[20] RLHF中的「RL」是必需的嗎?有人用二進制交叉熵直接微調LLM,效果更好
[21] RLHF的替代算法之DPO原理解析:從RLHF、Claude的RAILF到DPO、Zephyr
[22] DPO: Direct Preference Optimization訓練目標推導
[23] 強化學習極簡入門:通俗理解MDP、DP MC TC和Q學習、策略梯度、PPO
[24] KL-Divergence詳解
[25] ChatGPT調研報告.哈工大實驗室HIT-NLP
[26] 多 Agent 深度強化學習綜述.《自動化學報》
[27] 一些RLHF的平替匯總
[28] Contrastive Post-training Large Language Models on Data Curriculum: https://arxiv.org/abs/2310.02263
[29] 理解Rejection Sampling: https://gaolei786.github.io/statistics/reject.html
[30] DeepMind新研究:ReST讓大模型與人類偏好對齊,比在線RLHF更有效
[31] 影響PPO算法性能的10個關鍵技巧(附PPO算法簡潔Pytorch實現)
[32] 論文閱讀-MOSS-RLHF:PPO
[33] https://github.com/GanjinZero/RRHF
[34] 論文閱讀-MOSS-RLHF:PPO
[35] https://github.com/OpenLMLab/MOSS-RLHF
[36] 添加鏈接描述影響PPO算法性能的10個關鍵技巧(附PPO算法簡潔Pytorch實現)
[37] DPO——RLHF 的替代之《Direct Preference Optimization: Your Language Model is Secretly a Reward Model》論文閱讀
[38] Llama 2:開源RHLF微調對話模型
[39] Secrets of RLHF in Large Language Models Part I: PPO
[40] 大模型訓練的一些坑點和判斷.包包
[41] Fine-tuning OpenAI GPT-3 using a custom reward model
基礎:
[1] 強化學習極簡入門:通俗理解MDP、DP MC TC和Q學習、策略梯度、PPO
[2] “StackLLaMA”: 用 RLHF 訓練 LLaMA 的手把手教程.huggingface
[3] ChatGPT的RLHF:AI時代的“調速器”,讓AI真正可用的關鍵
[4] 【他山之石】如何正確復現 Instruct GPT / RLHF?
[5] https://en.wikipedia.org/wiki/Reinforcement_learning_from_human_feedback
[7] Training language models to follow instructions with human feedback(2022)
[8] InstructGPT論文解讀.李響
[9] ChatGPT訓練三階段與RLHF的威力.oneflow
在 InstructGPT 論文之前的這四篇論文中找到PPO的相關數學細節:
(1) 《Asynchronous Methods for Deep Reinforcement Learning》引入了策略梯度方法來替代基于深度學習的強化學習中的 Q 學習。
(2) 《Proximal Policy Optimization Algorithms》提出了一種基于修改版近端策略的強化學習流程,其數據效率和可擴展性均優于上面的基礎版策略優化算法。
(3) 《Fine-Tuning Language Models from Human Preferences》闡釋了 PPO 的概念以及對預訓練語言模型的獎勵學習,包括 KL 正則化,以防止策略偏離自然語言太遠。
(4) 《Learning to Summarize from Human Feedback》引入了現在常用的 RLHF 三步流程,后來的 InstructGPT 論文也使用了該流程。