【LLM】大模型之RLHF和替代方法(DPO、RAILF、ReST等)

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):

  1. 獎勵模型(Reward Model):獎勵模型是強化學習中一個基本元素,它定義了智能體執行特定動作后將得到的獎勵。換句話說,獎勵模型為智能體在其環境中執行的每個動作提供獎勵(正面)或懲罰(負面)。這個模型幫助智能體理解哪些動作是有利的,哪些不是,因此,智能體嘗試通過最大化獲得的總獎勵來找到最優策略。

  2. 評論模型(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?)))]
      • 每個樣本包括questionresponse_chosenresponse_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?(yx)/πSFT(yx))]+γExDpretrain???[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πθ?(yx)?[f(r??,πref?,β) r??(x,y)?βlogy?πref?exp(β1?r??(x,y))???KL βlogπref?(yx)πθ?(yx)???]
    • 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πθ?(yx)?[f(r??,πref?,β) r??(x,y)?βlogy?πref?exp(β1?r??(x,y))???KL βlogπref?(yx)πθ?(yx)???]

實驗結果分析:
(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 論文也使用了該流程。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/214601.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/214601.shtml
英文地址,請注明出處:http://en.pswp.cn/news/214601.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

火山引擎邊緣計算用硬核助力賽事直播

經過一個多月激烈爭奪,2023英雄聯盟全球總決賽終于在11月19日落下帷幕。精彩的對決和高熱話題使得直播平臺觀賽人數暴增,給直播平臺穩定性和資源儲備提出了巨大的考驗。

推薦3dmax常用15款插件,快來了解一下吧!

推薦3dmax常用15款插件,快來了解一下吧! 插件是3ds MAX軟件的重要組成部分,提供了太多便利,也提升了建模、渲染和動畫的效率,下面就給大家推薦25款常用的3dMax插件。 1)DashedShape DashedShape實線轉虛線…

CentOS修改SSH端口號和禁止root用戶直接登錄

原文在 https://cloud.tencent.com/developer/article/1124500 1、使用vi編輯器打開ssh配置文件 /etc/ssh/sshd_config Port 22 #在第三行或第四行,如果前面有井號,請刪除,修改為65534以下即可 2、更加安全的設置,禁止ROOT登陸…

3c分支語句和循環語句(非重點)

文章目錄 1. 什么是語句?2. 分支語句(選擇結構)2.1 if語句2.1.1 懸空else2.1.2 if書寫形式的對比 2.2 switch語句2.2.1 在switch語句中的 break2.2.2 default子句 3. 循環語句3.1 while循環3.1.1 while語句中的break和continue3.2 for循環3.2…

C++(17):invoke_result聲明函數的返回值類型

通常的C++程序,函數的返回值是確定的類型,那么為什么需要通過invoke_result來聲明函數的返回值類型呢? 用一個簡單但不一定實際的例子進行說明: #include <iostream> using namespace std;int funcAdd(int a, int b) {return a + b; }int wrapFuncAdd(int a, int b…

研表究明,文字的序順并不定一能響影GPT-4讀閱

深度學習自然語言處理 原創作者&#xff1a;yy 很多年前&#xff0c;你一定在互聯網上看過這張圖&#xff0c;展示了人腦能夠閱讀和理解打亂順序的單詞和句子&#xff01;而最近東京大學的研究發現&#xff0c;大語言模型&#xff08;LLMs&#xff09; 尤其是 GPT-4&#xff0c…

對象與對象數組

對象與對象數組 實驗介紹 本章節主要介紹對象數組和對象成員。在實際的開發中&#xff0c;對象數組和對象成員是經常使用的&#xff0c;所以首先需要學習對象數組與對象成員的各種使用方法。 提示&#xff1a;為了方便課程講解&#xff0c;示例代碼使用類內定義的方式實現&a…

19 redis緩存數據同步問題

1、緩存穿透 指緩存和數據庫中都沒有的數據&#xff0c;而用戶不斷發起請求。由于緩存不命中&#xff0c;并且出于容錯考慮&#xff0c;如果從存儲層查不到數據則不寫入緩存&#xff0c;這將導致這個不存在的數據每次請求都要到存儲層去查詢&#xff0c;緩存就沒有意義了。 在…

掌控安全 -- header注入

http header注入 該注入是指利用后端驗證客戶端口信息&#xff08;比如常用的cookie驗證&#xff09;或者通過http header中獲取客戶端的一些信息&#xff08;比如useragent用戶代理等其他http header字段信息&#xff09;&#xff0c;因為這些信息是會重新返回拼接到后臺中的&…

JAVA定時任務技術總結

在日常的項目開發中&#xff0c;多多少少都會涉及到一些定時任務的需求。例如每分鐘掃描超時支付的訂單&#xff0c;每小時清理一次數據庫歷史數據&#xff0c;每天統計前一天的數據并生成報表&#xff0c;定時去掃描某個表的異常信息&#xff08;最終一致性的方案也可能涉及&a…

java面試題-描述下Object中常用的方法

遠離八股文&#xff0c;面試大白話&#xff0c;通俗且易懂 看完后試著用自己的話復述出來。有問題請指出&#xff0c;有需要幫助理解的或者遇到的真實面試題不知道怎么總結的也請評論中寫出來&#xff0c;大家一起解決。 java面試題匯總-目錄-持續更新中 這個沒辦法&#xff0c…

31、卷積 - 參數 dilation 以及空洞卷積

在卷積算法中,還有一個不常見的參數叫做dilation(中文:膨脹)。 很多同學可能沒聽說過這個參數,下面看看這個參數有什么作用,用來控制什么的。 我們還是放這個經典的卷積運算圖,圖中是看不出 dilation 這個參數的存在的。 如果再換一張圖呢,發現兩圖的區別了嗎? 沒錯…

怎么去評估數據資產?一個典型的政務數據資產評估案例

據中國資產評估協會《數據資產評估指導意見》&#xff0c;數據資產評估主要是三個方法&#xff1a;市場法、成本法和收益法。之前小億和大家分享了數據資產評估方法以及價值發揮的路徑&#xff0c;今天結合一個案例來具體講解一下怎么去評估數據資產。 這個案例是一個典型的一個…

tmux常見會話管理命令

tmux常見會話管理命令 新建會話 tmux new -s <session-name> 查看會話 會話內外都可以用tmux ls或者tmux list-session 分離會話 如果命令行可以輸入命令&#xff0c;則可以選擇輸入命令tmux detach 如果命令行沒法輸入命令&#xff0c;可以按下commandb以后按d …

SAM+使用SAM應用數據集完成分割

什么是SAM&#xff1f; SAM(Segment Anything Model&#xff09;是由 Meta 的研究人員團隊創建和訓練的深度學習模型。在 Segment everything 研究論文中&#xff0c;SAM 被稱為“基礎模型”。 基礎模型是在大量數據上訓練的機器學習模型&#xff08;通常通過自監督或半監督學習…

CV計算機視覺每日開源代碼Paper with code速覽-2023.12.6

點擊計算機視覺&#xff0c;關注更多CV干貨 論文已打包&#xff0c;點擊進入—>下載界面 點擊加入—>CV計算機視覺交流群 1.【基礎網絡架構&#xff1a;Transformer】Rejuvenating image-GPT as Strong Visual Representation Learners 論文地址&#xff1a;https://a…

云原生Kubernetes系列 | Docker/Kubernetes的卷管理

云原生Kubernetes系列 | Docker/Kubernetes的卷管理 1. Docker卷管理2. Kubernetes卷管理2.1. 本地存儲2.1.1. emptyDir2.1.2. hostPath2.2. 網絡存儲2.2.1. 使用NFS2.2.2. 使用ISCSI2.3. 持久化存儲2.3.1. PV和PVC2.3.2. 訪問模式2.3.3. 回收策略1. Docker卷管理

從零開始搭建企業管理系統(六):RBAC 權限管理設計

RBAC 權限管理設計 前言權限分類功能權限設計什么是 RBACRBAC 組成RBAC 模型分類基本模型RBAC0角色分層模型RBAC1角色限制模型RBAC2統一模型RBAC3 RBAC0 權限設計用戶管理角色管理權限管理關聯表 總結 前言 作為一個后臺管理系統&#xff0c;權限管理是一個繞不開的話題&#…

視頻剪輯:視頻創意制作,背景圖片融合視頻制作畫中畫效果

隨著社交媒體的興起&#xff0c;視頻制作不再僅僅是專業人士的專利。每個人都可以通過一些技巧&#xff0c;創作出獨特而富有吸引力的視頻內容。視頻剪輯是一種非常重要的技術&#xff0c;它能讓視頻從平淡無奇變為生動有趣。背景圖片融合視頻制作畫中畫效果&#xff0c;也能增…

vm的centos本地配置yum

vm的centos本地配置yum 關于上篇文章vmware安裝centos7總結 出現關于配置yum源wget找不到命令&#xff0c;但是沒安裝yum就沒法下載wget&#xff0c;也就沒法使用wget 所以我們本地配置yum源&#xff0c;不用wget那個命令了 &#x1f4d5;步驟&#xff1a; cd /etc/yum.repo…