解密prompt系列34. RLHF之訓練另闢蹊徑:循序漸進 & 青出於藍

风雨中的小七發表於2024-07-23

前幾章我們討論了RLHF的樣本構建最佳化和訓練策略最佳化,這一章我們討論兩種不同的RL訓練方案,分別是基於過程訓練,和使用弱Teacher來監督強Student

循序漸進:PRM & ORM

  • Solving math word problems with processand
    outcome-based feedback
  • PRM:Let's verify step by step
  • https://github.com/openai/prm800k

image.png

### 資料標註

想要獲得過程監督所需的標註樣本,其實是一件成本很高事情,因為需要對解題的每一個步驟是否正確進行標註。論文選擇了3分類的label,positive是推理正確合理,negative是步驟錯誤或邏輯錯誤,neural是模糊或者存在誤導。如下

image.png

為了讓高昂的標註過程產生最大的價值,這裡需要保證生成解題樣本的格式規範(容易拆分成多個解題步驟),以及樣本不能全是easy negative或者easy positive。也就是我們需要解決推理格式樣本篩選問題。

為了保證穩定的推理格式,這裡論文訓練了Generator,使用'\n'來分割每一步解題步驟。為了避免這一步微調導致樣本資訊洩露,論文使用few-shot構建格式正確的推理樣本後,過濾了答案正確的樣本,只使用答案錯誤但格式正確的樣本訓練Generator。更大程度保證微調只注入推理格式,不注入額外數學知識和推理資訊。

在樣本篩選步驟,論文使用當前最優的PRM模型篩選打分高,但是答案錯誤的Convincing wrong answer答案,來構建更難,過程監督訊號更多,且PRM對當前解題過程一定存在至少一步判斷錯誤的樣本,來進行人工標註。

既然看到這裡是使用PRM打分篩選樣本來訓練PRM,自然使用到了Iterated Training,也就是會先構建一波樣本訓練一個PRM,用新訓練好的PRM,對問題的N個回答進行打分,再篩選Top K的Convincing wrong answer去進行人工標註,再訓練PRM,這個過程總共迭代了10次。最終得到了PRM800K解題步驟的訓練樣本,包括從12K問題中取樣得到的75K答案。

ORM的訓練樣本就簡單很多,只需要用到問題的答案即可。不過考慮到上面PRM對樣本進行了有偏篩選得到的大多是答案錯誤的樣本,因此ORM的樣本是在相同問題上用Generator重新隨機生成的。所以ORM和PRM的回答樣本並不相同。

訓練和推理

訓練階段,ORM是預測最終答案正確與否的positive/negative分類目標;PRM的目標是預測每一個解題步驟的positive/neural/negative,這裡論文沒有做任何解題步驟前後關聯,單純把每個解題步驟獨立作為一個分類樣本進行訓練,因此和ORM一樣是分類任務。論文同時提到因為預訓練LM和分類CLM的目標差異巨大,因此低LR的訓練得到的PRM更加穩定,不論模型大小都只訓練2個Epoch

這裡雖然感覺PRM這個每個解題步驟條件獨立的假設有一些強,但確實如果按不獨立來標註,那標註成本會再高一個數量級,也是不太現實~

推理階段,論文給出了兩種PRM的推理方案。一種是使用PRM計算每一步推理正確的機率,再把多個推理步驟的得分求積,得到每個答案唯一的打分,用來比較同一個問題多個回答之間的優劣。一種是預測第一個錯誤的步驟,這樣PRM和ORM會先對可比,對於對的回答二者的預測都是全對,對於錯的回答,二者的預測都是存在有錯誤的步驟,只不過PRM會進一步給出錯誤的具體位置。

效果

效果上論文使用Best-of-N的Major Voting作為基準,來對比PRM和ORM篩選答案的正確率,如下圖,隨著取樣答案N的數量增加,PRM相比ORM和Major-Voting的相對優勢會越來越顯著。

image.png

考慮以上ORM和PRM訓練資料集並不相同,不算嚴格的對比實驗,之後論文還做了相對可比的消融實驗,這裡不再贅述。

除了直觀的效果對比,PRM相比ORM還有幾個對齊優勢

  • redit Assignment :針對複雜問題PRM能提供錯誤具體產生的位置使得進一步的迭代修改,變得更加容易,因此PRM的獎勵打分的邊際價值更高
  • Safer:PRM針對COT的過程進行對齊,相比只對齊結果(可能存在過程錯誤)的一致性更高,個人感覺是reward hacking的機率會相對更低,因為對齊的顆粒度更細
  • negative Alignment Tax: 論文發現PRM似乎不存在對齊帶來的效果下降,甚至還有效果提升。

青出於藍:weak-to-strong

  • WEAK-TO-STRONG GENERALIZATION: ELICITING STRONG CAPABILITIES WITH WEAK SUPERVISION
  • https://github.com/openai/weak-to-strong

Clipboard_2024-06-25-08-21-38.png

weak-to-strong是openAI對齊團隊在23年年終交出的答卷。論文的本質是對超級對齊問題進行一個簡化的討論,也就是當大模型的能力越來越強甚至超越人類的時候,人類的監督是否還能有效指導模型行為,保證模型的安全性和指令遵從性。以及這種弱監督該如何進行?

所以超級對齊本質是一個“弱-監督-強”的問題,而論文進行的簡化,就是把人類監督超級模型的問題,類比簡化成一個弱模型監督強模型的過程,即所謂“Weak-to-Strong Generalization”

論文的思路其實和前幾年曾經火過的弱監督,半監督,帶噪學習的思路非常相似。就是在任務標籤上訓練弱模型,然後使用訓練後的弱模型進行打標,再使用模型打標的標籤來訓練強模型,看強模型的效果能否超越弱模型。邏輯上弱監督半監督,其實是提高模型在unseen樣本上的泛化能力,而OpenAI這裡研究的Weak-to-Strong更多是模型能的泛化。

論文可以分成兩個部分,使用常規微調測試weak-to-strong的泛化效果,以及探索如何提升weak-to-strong的泛化,下面我們來分別說下

Experiment

首先論文選擇了三種任務型別來測試模型泛化效果

  • NLP分類任務: 22個包括NLI,分類,CR,SA在內的NLP分類任務。這類任務可能大小模型表現都不錯,模型越大效果會有提升但不明顯
  • Chees Puzzles:象棋挑戰預測下一步最佳下法的。這類任務可能有比較明顯的模型規模效應,小模型做不了,得模型大到一定程度後效果會越來越好
  • ChatGPT Reward Model: 預測pair-wise的人類更偏好的模型回答。這類任務現在沒啥模型效果好,大的小的都一般

其次就是在以上資料集上,分別進行以下訓練

  • weak supervisor:使用以上資料訓練小模型得到Teacher模型
  • Weak-to-strong:使用以上弱模型在held-out資料集上預測得到label,並使用這些弱監督的標籤來訓練一個更大更強的模型
  • strong ceiling:使用以上任務的樣本直接訓練強模型得到模型能力上限

以上得到的三個模型效果理論上應該是weak-supervisor < weak-to-strong < strong-ceiling,最後論文透過計算弱監督訓練幫助強模型恢復的能力佔比來衡量weak-to-strong監督的泛化效果,既Performance-Gap-Recovered(PGR)

Clipboard_2024-06-28-08-32-37.png

以下為直接微調的實驗結果,下圖分別展示了不同模型大小的strong student(橫軸),weak teacher(顏色),在以上三個任務上的任務準確率,和對應的PGR用來衡量weak-to-strong的泛化效果。

  • NLP任務:最小的Teacher訓練大許多倍的Student也能恢復20%以上的能力,隨Teacher和Student的大小增大,PGR都會有提升
  • Chess Puzzle任務上,當Teacher模型較小的時候,Student幾乎學不到任何資訊。而隨著Teacher變大,PGR會有顯著提升,但是隨著Student變大任務準確率和PGR反而會有下降。可能存在inverse scaling
  • ChatGPT Reward任務上,隨著Teacher增大,Student的任務準確率會有提升,但泛化PGR幾乎都不會超過20%。

Clipboard_2024-06-25-08-56-10.png

這裡三種任務的泛化差異,其實和前面提到的三種任務本身難度,以及和模型大小的相關性有關。如果從噪聲學習的角度來討論的話,NLP任務和模型大小相關性低,且標籤噪聲較小;Chess Puzzle和單模型大小以及stduent-teacher之間的gap相關性都很大,teacher標籤噪聲,以及student-teacher預測的一致性都隨模型scale變化;reward任務都很一般,和模型大小沒啥關係。

整體上透過直接微調,能穩定獲得一定的能力泛化(PGR>0),但泛化效果並不好。於是下面論文討論了能否透過改變訓練方案來提高weak-to-strong的泛化效果。

Improvement

方案一:Bootstraping

採用漸進訓練的方案,也就是我們可以先用小模型對齊略大一些的模型,再用略大一些的模型來對齊更大一些的模型,然後逐步迭代下去。這種訓練方式可能更適合上面Chess Puzzle的任務,考慮該任務存在Inverse Scaling,既當Student比Teacher大的越多,weak-to-strong的泛化效果越差,那我們可以逐步放大Student模型的大小,保持Teacher和Student之間的gap不要太大。

效果上不難發現對比以上的inverse scaling的PGR變化,在相同的Teacher模型上,我們可以獲得幾乎持平的PGR泛化效果,也就意味著更小的模型可以幫助更大的模型恢復相同比例(但絕對值更大) 的能力。這裡論文統一採用了3次迭代,也就是會訓練兩個中間大小的模型。

Clipboard_2024-06-27-07-58-50.png

方案二:Regularization

如果我們想讓大模型學習的時候,只學習小模型在任務上獲得的Insight,而不是簡單的去模仿小模型,可以透過加入正則項的方法。用的是半監督學習裡面的最小熵原則,和Pseudo Label的損失函式是近似的,不熟悉的同學看這裡小樣本利器3. 半監督最小熵正則

也就是在原始的交叉熵(左)的基礎上,加上了student模型的預測熵值,這裡f(x)是訓練中的大模型,而t是一個動態閾值,是batch內樣本預測機率的中位數,這樣大模型即便不去學習Teacher模型,透過提高自己對預測樣本的置信度(自信一點!你是對的),也可以降低損失函式。

\[Lconf(f) = (1 − α) · CE(f(x), fw(x)) + α · CE(f(x), \hat{f}_t(x)) \]

以上損失函式還可以改寫為噪聲損失函式中的Bootstrap Loss, 不熟悉的同學看這裡聊聊損失函式1. 噪聲魯棒損失函式。也就是Student學習的label是由Teacher的預測label,和student模型自己預測的label混合得到的。邏輯也是一樣,如果這個問題你對自己的預測很自信,那請繼續自信下去!

\[Lconf(f) = CE(f(x), (1 − α) · fw(x) + α · \hat{f}_t(x)) \]

以上正則項的加入在NLP任務上,當student和teacher之間的gap較大時,能顯著提高weak-to-strong的泛化效果,即便最小的Teacher也能恢復近80%的大模型效果,說明降低student無腦模仿teacher的機率是很有效的一種學習策略。

Clipboard_2024-06-27-08-25-08.png

Why Generalization

最後論文討論了為何存在weak-to-strong泛化,以及在什麼場景下存在。這是一個很大的問題,論文不可能窮盡所有的場景,因此有針對性的討論了模仿行為和student模型本身對該任務是否擅長。這裡簡單說下主要的結論吧

  1. Imitation
    這裡論文分別透過過擬合程度,以及student和teacher的預測一致性來衡量大模型是否無腦擬合了teacher模型。並提出了合適的正則項,以及early stopping機制可以降低模仿,提高泛化

  2. Sailency
    論文提出當強模型本身透過預訓練對該任務已經有很好的任務學習(表徵)的情況下,泛化會更好。這裡個人感覺有些像DAPT,TAPT(domain/taskadaptive pretraining)的思路,不熟悉的同學看這裡預訓練不要停!Continue Pretraining。從文字表徵空間分佈的角度來說,就是當模型對該任務文字所在空間分佈本身表徵更加高維線性可分,邊界更加清晰平滑時,模型更容易泛化到該任務上。

想看更全的大模型相關論文梳理·微調及預訓練資料和框架·AIGC應用,移步Github >> DecryPrompt

相關文章