前三章都圍繞指令微調,這一章來嘮嘮RLHF,何為優秀的人工智能?抽象說是可以幫助人類解決問題的AI, 也可以簡化成3H原則:Helpful + Honesty + Harmless,面向以上1個或多個原則,RLHF只是其中一種對齊方案,把模型輸出和人類偏好進行對齊,大體分成3個步驟
- 人類偏好資料的標注
- 基于標注資料訓練獎勵模型
- 基于獎勵模型使用RL微調語言模型
以OpenAI為基礎,本章會對比DeepMind, Anthropic在以上3個步驟上的異同,并嘗試回答以下幾個問題
- RLHF究竟做了什么
- 偏好對齊用RL和SFT有什么差異
- 什么模型適合作為RL的起點
考慮篇幅已經超出了我自己的閱讀耐心,RL演算法和其他偏好對齊方案會再用兩章來說,只關注以上問題的同學,也可以直接劃到文末去看~
OpenAI
- paper: InstructGPT, Training language models to follow instructions with human feedback
- paper: Learning to summarize from human feedback
- https://openai.com/blog/chatgpt
解密Prompt系列4介紹了InstructGPT指令微調的部分,這里只看偏好對齊的部分
樣本構建
RL的資料來源有兩塊,一部分是用戶在playground里面真實請求的資料,另一部分來自標注同學自己寫的指令樣本,標注指令樣本包括3種形式:單一指令,few-shot指令,根據用戶之前提交的使用場景撰寫的指令,量級分布如下
在標注偏好樣本上,OpenAI基于3H原則,設計了詳細的標注標準詳見論文,需要注意的一點是在訓練樣本標注時Helpful比Harmless和honest更重要,但是在評估樣本的標注上Harmless和honest更重要,這樣區別標注是OpenAI發現Helpful和Harmless存在沖突,如果模型過度擬合無害性,會導致模型拒絕回答很多問題,OpenAI認為不同場景下風險的定義是不同的,應該把拒絕回答的能力放到下游場景中, 后面Anthropic也碰到了相似的問題,我個人更偏好Anthropic的方案,
在標注程序中,模型會生成4-7個回復,標注同學需要綜合考慮有用性,無害性和真實性,對模型的每一個回復進行絕對打分后續用于評估,同時給出多個模型回復間的相對排序用于RM模型訓練,標注界面如下:
ChatGPT對話訓練部分未公開細節,從官網能獲得細節是,ChatGPT的樣本是人工寫的對話樣本+InstructGPT樣本轉換成對話格式的混合樣本,更多基于對話形式的標注可以參考后面的DeepMind和Anthropic,
獎勵模型
OpenAI使用了指令微調16個epoch的6B模型作為獎勵模型的初始模型,訓練方式是兩兩對比計算crossentropy,其中\(r_\theta\)是獎勵函式對指令x和回復y的打分,如下
不過OpenAI發現如果對資料進行Shuffle,則訓練一輪就會過擬合,但如果把針對1個指令模型的K個回復,K在4~9之間,得到的\(C_k^2\)個pairwise對,放在一個batch里進行訓練,會得到顯著更高的準確率,這里一個batch包括64個指令生成的所有回復對,其中排名相同的樣本對被剔除,
這里感覺和對比學習要用大batch_size進行擬合的思路有些相似,是為了保證對比的全面性和充分性,使用全面對比后計算的梯度對模型進行更新,另一個原因可能是不同標注人員之間的偏好差異,shuffle之后這種偏好差異帶來的樣本之間的沖突性更高,
之所以選擇6B的模型,論文指出盡管175B的RM模型有更高的準確率和更小的驗證集loss,但是訓練程序并不穩定,以及太大的RM模型會導致RL部分的訓練成本太高,
RLHF
- RL初始模型
OpenAI使用了SFT指令微調之后的模型作為RL的起點,RL初始模型的訓練細節在附錄C.3和E.8,基于GPT3的預訓練模型,SFT微調2個epoch并混入10%的預訓練資料進行訓練得到,這里混入預訓練是因為在RL微調的程序中發現加入預訓練資料可以防止RL微調降低模型語言能力,因此在SFT微調程序中也做了相同的處理,這里我好奇的是,指令微調和預訓練的核心差異其實只在指令輸入的部分是否計算梯度,因此是否可以直接把指令微調和預訓練混合變成一個步驟"文本+指令預訓練",我們準備沿這個方向去嘗試下~
- RL樣本
OpenAI是完全基于在playground里用戶真實提交的指令請求來進行訓練,沒有使用人工標注,為了完全面向用戶使用進行偏好優化,
- RL訓練
RL微調的部分,OpenAI使用了PPO演算法,基于Reward模型的打分進行微調,微調了2個epoch,在此基礎上加入了兩個目標:
- 微調模型和原始模型在token預測上的KL散度:避免模型過度擬合獎勵函式偏離原始模型,后面也論證了KL的加入,可以加速RL收斂,核心是在相同的KL下最大化模型偏好的提升
- 10%的預訓練目標(PPO-PTX): 降低RL對模型語言能力的影響

且論文提到樣本的收集和RL訓練是多次迭代的,也就是使用RL微調后的模型上線收集更多的用戶請求,重新訓練RM,再更新模型,不停在優化后的模型上收集用戶反饋,會讓RM模型學習到更充分的高偏好樣本,強者愈強,
- 效果
對比175B指令微調的模型,1.3B的模型經過RLHF微調,在喜愛度上就能打過175B的SFT模型!2點Insights如下
- RLHF對齊帶來的模型有用性的提升,效率遠超訓練更大的模型
- 使用PPO-PTX的RLHF微調沒有產生很大的Alignment-Tax
DeepMind
- paper: Teaching language models to support answers with verified quotes
- paper: Sparrow, Improving alignment of dialogue agents via
DeepMind的Sparrow使用了基于Google搜索的事實性資訊的引入,這部分我們放到Agent呼叫的章節一起說,這里只關注偏好對齊的部分,
樣本構建
不考慮搜索呼叫的部分,DeepMind的偏好對齊部分只關注2H,有用性和無害性,樣本標注的基礎模型是Chinchilla-70B,和OpenAI的差異在于,DeepMind把人類偏好和違反2H原則拆成了兩個標注任務
- 人類偏好標注:基于進行中的對話,從模型多個回復中選擇最喜歡的一條,這里對話中的人機問答都是由模型生成的
- 對抗標注/釣魚執法:基于隨機分配的標注規則,標注同學需要刻意引導模型給出違反該規則的回答,和風控紅藍對抗的思路相似
獎勵模型
基于以上兩份樣本,論文通過微調Chinchilla-70B,分別訓練了兩個模型PM和RM, 微調的方式都是固定前64層,只微調后16層,
- PM:Preference Reward Model
PM的資料是在以上每輪對話多選一的基礎上,從其他對話中隨機采樣更多的負樣本構成的多分類任務,這里補充負樣本是為了懲罰off-topic的模型回復,因此損失函式是多分類的CrossEntropy,以及在此基礎上加入了Bradley-Taley(Elo)和正則項,如下

其中\(r_i\)是所有回復的模型打分,因此正則項是為了保證最終模型輸出的打分是以0為中心的,而Elo部分是為了優化兩兩對比排序,更多細節>>Fitting the Bradley-Terry model to large and potentially sparse datasets
- RM:Rule Violation Model
RM模型是一個多標簽任務,判斷對話當前是否違反其中一條標注規則,輸出違反該規則的條件概率,以上5檔標簽被分成兩類,definitely break和probably break]是違反,probably follow和definitely follow是未違反,unsure樣本被丟棄,這里DeepMind使用如下Hard Prompt Tunning來構建模型,其實就是引入一些前置語意資訊,讓模型在小樣本上表現更好,更多細節>>解密Prompt系列2. 凍結Prompt微調LM
- 整體打分
基于以上兩個模型,整體打分=偏好打分+所有規則的未違反概率之和+長度懲罰(保證回答簡潔)+is_valid(模板檢查),其中模板檢查包括要求Agent回復以\n\nSparrow:開始,以\n\nUser:結束,保證所有模型回復有相同的格式
個人感覺分開標注,以及引導式的標注沒啥問題,但分開建模再直接打分融合可能不一定是最優的方案,因為兩個模型的scale不同,很難對比違反部分規則,和偏好程度要如何balance才是最優的整體打分,
RLHF
-
RL起點:和OpenAI相同,DeepMmind也使用監督微調模型作為初始模型,不過DeepMind直接使用了以上RM的標注資料中,多選一標注有用的回復,和未違反規則的回復來進行監督微調,
-
RL樣本
對比OpenAI使用純人機對話的樣本,DeepMind的RL的樣本來源包括以下四個部分
- 問題集:GopherCite的Eli5子集
- 人機對話:以上RM和PM的人機對話的樣本集
- 對抗樣本擴充:使用Prompt模板引導Sparrow生成有害問題,擴充有害對話樣本
- self-play:類似self-instruct,會采樣已有對話作為背景關系,讓sparrow繼續生成回復
- RL訓練
DeepMind使用了Actor-Critic演算法進行RL微調, RL演算法我們會單獨一章來講,整體上A2C可能略弱于PPO,除了演算法不同,DeepMind的RL微調也只微調Chinchilla模型的后16層,
都選擇微調16層,其實是為了節省訓練顯存,這樣PM,RM,初始SFT模型,和最終的RL微調模型都共享前64層,后16層通過不同head來實作,從而達到降低顯存占用的目的,
- Insight:偏好和遵守規則的矛盾統一
人類偏好和遵守規則的要求存在一定沖突,只使用更偏好的資料訓練會得到更高的規則違反率,只使用遵守規則的資料訓練會降低模型回復的偏好率,混合樣本的微調效果最好,
Anthropic
- paper: Red Teaming Language Models to Reduce Harms Methods,Scaling Behaviors and Lessons Learned
- paper: A General Language Assistant as a Laboratory for Alignment
- paper:Training a Helpful and Harmless Assistant with Reinforcement Learning from Human Feedback
- 資料:https://huggingface.co/datasets/Anthropic/hh-rlhf
樣本構建
從論文標題不難看出,Anthropic也只考慮了2H,有害性和有用性,并且著重研究了對抗有害樣本的生成,受限于篇幅這里不展開,我個人也更偏好2H,因為我始終沒太想明白Honesty如何能通過對齊實作,因為部分非事實性是來自預訓練樣本中的噪聲,例如預訓練樣本中是"鯤之大一鍋燉不下",如何通過對齊讓模型學到"鯤之大,不知其幾千里也"?部分非事實性來自訓練樣本的有限性,需要像Bing一樣通過引入實時資訊來解決,要是大家有不一樣的觀點也歡迎留言評論,
同樣是拆分了2個標注任務,和DeepMind的差異是,Anthropic是把有害性和有用性分成了兩個標注任務,針對開放的對話主題進行4輪左右的對話,
- 有害性標注:和DeepMind相同使用了紅藍對抗的方案,目標是引導模型生成有害回復,每一輪模型會生成2個回答,選擇更有害的一個
- 有用性標注:同樣是每輪2選一,選擇更有幫助的一潭訓復,并不強制進行事實性檢查
對抗/引導式的資料標注方式,對比OpenAI直接標注,可以更充分挖掘偏好中更有用和更有害的資料,對于解決模型安全性有更大的幫助,但感覺可能缺少中間部分偏好的樣本,如果能和OpenAI直接標注的方案結合是否會更好?
除了2H的任務分開標注之外,每個標注同學進行對話的模型雖然都是52B的模型,但會隨機來自3個不同版本的模型
- HHH Context-Ditill:類似3Hprompt(helpful,harmless, honest)加持的基礎模型,最初只有這個模型
- Rejection Sampling(RS):使用3H模型生成16個回復,使用訓練后的PM模型對結果排序,選擇有害性最小的2個回復
- RLHF微調后的模型:后續的資料收集會基于微調后多個版本的模型持續進行
獎勵模型
Anthropic的獎勵模型同樣是基于樣本排序進行訓練的,有用得分高于無用,無害得分高于有害,并且更詳細論證了相對排序模型的效果要好于二分類模型,要好于語言模型,
\[L_{PM} = log(1+e^{r_{bad}}-e^{r_{good}}) \]為了降低對微調資料的需求,Anthropic加入了Preference Model Pretraining(PMP)的繼續預訓練程序,使用Reddit, StackExchange等開源問答的資料讓模型先部分學習什么是好的什么是壞的回答,
除此之外Anthropic還討論了PM模型大小對模型穩健性的影響,通過把資料集一分為二,一半訓練,一半驗證,越穩健的PM模型應該在不同資料上有相似的打分分布,論文使用PM模型在兩份資料上打分的KL散度來衡量穩定性,得到兩個結論
- PM模型越大,KL散度越低
- PM模型打分在低磁區一致性較高,在高磁區一致性較低
第二個結論很符合直覺,因為有害內容的標注一致性更高更易識別,而優質回復的評價更模糊,另一個原因是模型當前的能力可能導致高磁區的樣本比較稀疏,
但第一個結論,感覺有可能是因為越大的模型預測的置信度越高,打分更容易聚集在一起,才導致的KL散度更低,這個置信度的差異似乎沒有被考慮進去,
RLHF
- RL起點
Anthropic選擇了3H Context Distillation的模型,通過在樣本前加入3H指令詞,引導模型生成更安全有用的回復,并記錄模型生成的每個位置Top50的詞和概率,把這個概率作為Teacher;然后去掉3H指令詞,對預訓練模型進行微調,微調目標就是去擬合之前有3H時Top50 Token的預測概率,其實就是Teacher-Student蒸餾的思路,
- RL樣本
為了讓模型在更大范圍的指令樣本上進行偏好學習,使用了Self-Instruct,隨機采樣10個已有的真實請求讓模型來生成新的請求,最終是137K真實請求和369K模型生成請求混合作為訓練樣本
- RL訓練:整體和openAI類似
和OpenAI相同,Anthropic也提到了online iter訓練,但論文的出發點是前面提到的PM模型在高分部分不穩定的問題,因為微調后的模型生成的回復會更好,在更優的模型中持續收集樣本,可以持續補充高分樣本,注意這里的online和常規意義的online不同,這里每次訓練會混合多個snapshot模型收集的偏好資料和最初的偏好樣本,重頭訓練PM,并重新微調RLHF,
- Insight:有用性和無害性的矛盾統一
和OpenAI相似,Anthropic也舉報了有用性和無害性的標注矛盾,在RLHF微調程序中,只要用戶的請求有輕微不滿,模型就讓用戶去看醫生哈哈哈哈~其實我們在不充分微調的ChatGLM中也發現了類似的現象,經過分析模型是過度擬合了有害性,而對有用性欠擬合,導致模型雖然無害但也沒啥用
論文給出了的解決思路是遇到有害性請求,模型只學到拒絕回答是很簡單的,這就是無用但無害,但是如果模型能學到在拒絕回答的同時,給到拒絕的原因,并勸說用戶不要有類似的有害的請求的話,就是有用且無害了,這部分標注資料當前是缺失的, 個人感覺這個思路比OpenAI適配場景去拒絕請求,似乎可行性更高一些,不過論文沒有重新標樣本,而是選擇了折中的方案,加入更大比例Helpful樣本來提升模型有用性
對比總結
- paper: Scaling Laws for Reward Model Over optimization
- paper: WebGPT: Browser-assisted question-answering with
human feedback- https://openai.com/research/measuring-goodharts-law
粗略看完以上3家超長無比的系列RLHF論文,結合OpenAI對RM模型的一些觀點,我們來討論下文首問題,感悟很玄學!!不一定靠譜!!僅提供一種思路~
RLHF究竟學了啥?
- 可類比拒絕采樣(Best-of-N):讓模型隨機采樣生成N個回復,選擇RM打分最高的回復
在WebGPT中OpenAI就把Best-of-N和RL進行了對比,best-of-64的效果甚至超過RLHF,而DeepMind在RL微調后加入best-of-n效果會有進一步提升,感覺RLHF和Best-of-N的差異就是前者把排序擇優放在了微調階段訓練耗時,后者放在了推理階段推理耗時,本質上二者是相似的,都是讓模型在相似文本打分的文本序列中,挑選偏好打分更高的序列
那再想一步,Best-of-N的本質是啥?是Rejection-Sampling,啥是拒絕采樣?簡單說,就是針對無法直接采樣的分布F,可以從G采樣,例如G服從正態分布, 再通過特定的拒絕策略,拒絕不符合F分布的樣本,則得到的樣本可以近似F分布,對應到RLHF中,G其實就是RL初始模型生成的回復,拒絕策略是拒絕RM打分低的回復,則得到的就是符合人類偏好F的回復,
偏好對齊使用RL和SFT的差異?
- 優化整個文本序列 vs 優化token級別的偏好:類似序列標注任務中CrossEntropy對比CRF
同樣使用偏好標注資料來進行微調,RL微調是針對整個文本序列的RM打分進行優化,而SFT是對每個token的預測概率進行優化,SFT在偏好優化場景上有幾個問題
- 每個token在損失函式中的權重是相同的
- 沒有考慮文本整體對偏好的影響
- 針對很多開放問題,最優答案是不固定的,只對1潭訓答做token級別的擬合,可能會影響泛化
綜合以上3點RL似乎更合適,但是針對有標準答案的場景,例如所有非開放生成的NLP任務,摘要,分類,抽取等等,用SFT來擬合偏好似乎也沒啥毛病,就像序列標注任務用CrossEntropy效果也不會比CRF差太多,
除此之外RL的另一個優點是可以部分降低人工標注,因為訓練的RM模型后續可用于偏好打分,而SFT的每一個偏好樣本都需要人工標注,
什么模型適合作為RLHF的初始模型?
- 從拒絕采樣的本質出發,RL的初始模型需要有能夠生成人類偏好回答的能力
拒絕采樣的前提假設是F分布的集合是G分布集合的子集,因為拒絕采樣只是拒絕G采樣的部分樣本來得到F分布,對應到RLHF其實就是RL的初始模型要有能夠生成人類偏好回復的能力,因此通過指令微調來解鎖指令理解能力,似乎是RL初始模型的必須條件,畢竟純續寫模型是無法生成人類偏好的回復的,
當前的RL其實還存在很多問題,首先人類偏好本身就是存在噪聲的,標注的一致率不到80%;其次獎勵模型是對標注偏好的進一步抽象,又受到一步準確率的限制;而使用不完美的獎勵模型進一步微調模型,則可能帶來更進一步的擬合問題,這些問題還有待進一步解決,這一章我們就先說這么多啦
想看更全的大模型相關論文梳理·微調及預訓練資料和框架·AIGC應用,移步Github >> DecryptPropmt
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/553095.html
標籤:其他
上一篇:AIGC持續火爆大模型爭相推出,龐大市場造就算力供應模式演變
下一篇:返回列表
