【強化學習】Reward Model(獎勵模型)詳細介紹

????????📢本篇文章是博主強化學習(RL)領域學習時,用于個人學習、研究或者欣賞使用,并基于博主對相關等領域的一些理解而記錄的學習摘錄和筆記,若有不當和侵權之處,指出后將會立即改正,還望諒解。文章分類在👉強化學習專欄:

? ? ? ?【強化學習】- 【RL Latest Tech】(15)---《Reward Model(獎勵模型)詳細介紹》

Reward Model(獎勵模型)詳細介紹

目錄

1.?背景和起源

2.?與強化學習的結合

3.?不同類型的獎勵模型

4.Reward Model原理

5.應用實例

6.論文解讀

7.論文建模

獎勵建模(RM)

PPO算法

結合方式

總結

[Notice]? 常見誤區:

8.?面臨的挑戰與發展方向

9.?未來展望


????????Reward Model(獎勵模型)是近年來在深度學習和強化學習領域廣泛應用的一種技術,特別是在生成式模型(如大型語言模型)和強化學習(RL)結合的場景中,起到了至關重要的作用。它在多個領域的應用中,尤其是在自然語言處理(NLP)和數學推理領域,展現了顯著的潛力。

1.?背景和起源

????????隨著深度學習技術的發展,尤其是大型語言模型(LLMs)的崛起,如何有效地評估模型生成的響應質量成為一個重要的問題。早期,監督學習方法通過標注數據訓練模型來生成高質量的響應,但這種方法難以處理復雜的偏好和評估機制。此時,Reward Model的提出為此提供了新的解決方案。

????????Reward Model的核心思想是利用強化學習中的“獎勵信號”來引導模型生成更符合人類偏好的輸出。在這種框架下,Reward Model通過為每個生成的響應分配一個獎勵值,反饋模型生成的質量或人類偏好。

????????例如,生成的文本被賦予一個標量獎勵值,作為模型進一步優化的依據


2.?與強化學習的結合

????????Reward Model與強化學習的結合,特別是在強化學習從人類反饋(RLHF, Reinforcement Learning from Human Feedback)中的應用,極大地推動了該技術的進展。在RLHF的框架中,Reward Model發揮著核心作用,步驟如下:

  • Step 1:使用監督微調(SFT)對預訓練語言模型進行優化,使其能夠根據提示生成較高質量的響應。
  • Step 2:利用經過SFT訓練的基礎模型,生成多個候選響應,并由人類評估這些響應的質量,基于人類反饋訓練一個Reward Model。
  • Step 3:通過強化學習算法(如PPO),基于Reward Model的評分進一步優化基礎模型

????????在這個過程中,Reward Model通過對生成響應的質量打分,幫助模型學習人類的偏好,進而提升生成內容的質量。


3.?不同類型的獎勵模型

????????隨著研究的深入,Reward Model的形式不斷多樣化,出現了多種不同類型的獎勵模型。最常見的有兩種:

  • Outcome Reward Model (ORM):這種模型關注的是最終結果的質量,即模型生成的輸出是否滿足目標要求。ORM通過對生成的最終答案進行評分,來評估模型的表現。

  • Process Reward Model (PRM):與ORM不同,PRM不僅僅關注最終答案,還對模型的推理過程進行評分。PRM在生成答案的過程中逐步激勵或懲罰模型,引導模型朝著更可解釋、更穩定的推理路徑發展。然而,PRM在大規模推理場景中的效果尚不理想,面臨一些挑戰,如計算復雜度和推理的可解釋性。


4.Reward Model原理

????????Reward Model(獎勵模型)是人工智能訓練中的關鍵組件,簡單來說就像給AI定制的"評分老師"。用小朋友學畫畫的例子幫你理解:

核心原理:通過給AI的行為打分,告訴它"什么是對的/好的",就像老師批改作業時給分數和評語。

實際案例——訓練聊天機器人:

  1. 收集數據:記錄1000條人類客服與客戶的真實對話

  2. 定義評分標準:

    • 正確性(+3分)
    • 響應速度(+1分)
    • 語氣友好(+2分)
    • 提供錯誤信息(-5分)
  3. 訓練獎勵模型過程:

# 模擬訓練代碼
class RewardModel:def __init__(self):self.weights = {"正確性": 0.3, "響應速度": 0.1, "語氣友好": 0.2}def calculate_reward(self, response):score = 0if check_accuracy(response):  # 正確性檢查score += 3 * self.weights["正確性"]if check_speed(response):     # 響應速度檢查score += 1 * self.weights["響應速度"]if check_tone(response):      # 語氣檢查score += 2 * self.weights["語氣友好"]return score

? 4.應用場景: 當AI生成回復"您的問題需要聯系技術部門"時:

  • 正確性:?(+3×0.3=0.9)
  • 響應速度:?(+1×0.1=0.1)
  • 語氣友好:?(0) 總分:1.0 → 獎勵模型會建議改進語氣

關鍵特點

  • 像體育比賽的評分規則(但更復雜)
  • 需要平衡不同評分標準(就像跳水比賽的難度系數)
  • 會不斷進化(隨著數據積累調整權重)

? ? ? ? RM這個模型就像給AI裝了個"價值指南針",雖然看不見摸不著,但決定了AI的行為方向。就像教小朋友時,我們不會直接代他做作業,而是通過表揚和糾正來引導他學會正確的方法。


5.應用實例

????????目前已經有許多工作將強化學習與獎勵模型進行結合使用,例如存在多個重要工作將PPO與reward model結合使用,特別是在需要人類反饋或復雜獎勵建模的場景中:

1.OpenAI的InstructGPT/ChatGPT

# 典型實現架構:
def train_ppo_with_reward_model():# 1. 預訓練語言模型作為策略policy_model = LanguageModel()# 2. 單獨訓練獎勵模型(基于人類偏好數據)reward_model = train_reward_model(human_feedback_data)# 3. PPO使用獎勵模型生成獎勵信號ppo_trainer = PPOTrainer(policy=policy_model,reward_fn=reward_model.predict  # 關鍵集成點)

?2.DeepMind的Sparrow

// ... existing code ...
# 獎勵模型整合到PPO訓練循環中
for episode in training_loop:responses = policy.generate()rewards = reward_model.score(responses)  # 使用RM評分advantages = calculate_advantages(rewards)policy.update_with_ppo(advantages)
// ... existing code ...

3.Anthropic的Constitutional AI

  • 使用多個reward model組合(安全性、有用性等)
  • PPO同時優化多個獎勵信號
  • 通過加權組合不同reward model的輸出

技術特點

  • Reward model通常獨立于PPO訓練(預訓練或同步更新)
  • 常見于自然語言處理任務(對話系統、文本生成)
  • 解決稀疏獎勵/復雜獎勵建模問題
  • 論文參考:OpenAI的《Training language models to follow instructions with human feedback》(2022)---OpenAI的InstructGPT/ChatGPT

這些實現保持PPO的核心算法不變,但將環境獎勵替換為reward model的輸出,形成:策略網絡 → 生成行為 → reward model評分 → PPO更新的閉環。


6.論文解讀

摘要:

  • 大型語言模型雖然能夠執行多種自然語言處理任務,但往往表現出與用戶意圖不一致的行為,如編造事實、生成有害內容等。因此,需要對這些模型進行對齊,使其更好地遵循用戶的指示。

  • 本文提出了一種通過對人類反饋進行微調來對齊語言模型的方法,主要分為三個步驟:監督微調、獎勵模型訓練和基于獎勵模型的強化學習。

  • 實驗結果表明,經過對齊的InstructGPT模型在遵循用戶指示、減少有害輸出和提高真實性方面優于原始的GPT-3模型,且在大多數情況下,13億參數的InstructGPT模型的表現優于1750億參數的GPT-3模型。

引言:

  • 大型語言模型雖然能夠執行多種自然語言處理任務,但往往表現出與用戶意圖不一致的行為,如編造事實、生成有害內容等。因此,需要對這些模型進行對齊,使其更好地遵循用戶的指示。

  • 本文提出了一種通過對人類反饋進行微調來對齊語言模型的方法,主要分為三個步驟:監督微調、獎勵模型訓練和基于獎勵模型的強化學習。

相關工作:

  • 研究了與模型對齊和從人類反饋中學習相關的技術,如強化學習從人類反饋(RLHF)、跨任務泛化等。

  • 探討了語言模型遵循指令的訓練方法,以及在自然語言處理任務中的應用。

方法和實驗細節:

  • 高階方法論: 采用與Ziegler等人和Stiennon等人類似的方法,通過對人類反饋進行微調來對齊語言模型,具體步驟包括收集演示數據、訓練監督策略、收集比較數據和訓練獎勵模型,最后使用PPO算法對監督策略進行優化。

  • 數據集: 主要包括通過OpenAI API提交的文本提示,以及由標注者編寫的提示。數據集涵蓋了多種自然語言任務,如生成、問答、對話、總結等。

  • 任務: 訓練任務來自兩個來源:標注者編寫的提示和通過早期InstructGPT模型提交的提示。

  • 人類數據收集: 聘請了約40名標注者來收集演示和比較數據,并進行主要評估。標注者的選擇基于其在篩選測試中的表現,以確保他們對不同人群的偏好敏感,并能夠識別潛在的有害輸出。

模型:

  • 從GPT-3預訓練語言模型開始,使用三種不同的技術進行訓練:監督微調(SFT)、獎勵建模(RM)和強化學習(RL)。

  • 監督微調(SFT): 使用標注者的演示數據對GPT-3進行微調,訓練了16個epoch,使用余弦學習率衰減和0.2的殘差dropout。

  • 獎勵建模(RM): 使用標注者的比較數據訓練獎勵模型,預測人類標注者偏好的輸出。使用6B的獎勵模型,因為其訓練更穩定。

  • 強化學習(RL): 使用PPO算法對SFT模型進行微調,將獎勵模型的輸出作為獎勵信號。同時,引入預訓練數據的更新,以減少在公共NLP數據集上的性能退化。

結果:

  • API分布上的結果: 標注者顯著偏好InstructGPT模型的輸出,其在遵循用戶指示、減少有害輸出和提高真實性方面優于GPT-3模型。例如,175B InstructGPT模型的輸出在85±3%的情況下優于GPT-3模型。

  • 公共NLP數據集上的結果: InstructGPT模型在TruthfulQA數據集上生成更真實和信息豐富的答案,在RealToxicityPrompts數據集上生成的有害內容較少,但在Winogender和CrowSPairs數據集上沒有顯著改進。

  • 定性結果: InstructGPT模型在非英語語言任務和代碼相關任務上表現出一定的泛化能力,但仍然存在簡單錯誤,如未能遵循具有錯誤前提的指令、過度對沖等。

討論:

  • 對齊研究的影響: 該研究為對齊研究提供了現實世界的基礎,驗證了RLHF作為一種低稅收對齊技術的有效性。

  • 我們對齊的對象是誰: 模型的對齊受到多種因素的影響,包括標注者的偏好、研究人員的指示等。需要進一步研究如何設計一種公平、透明且具有問責機制的對齊過程。

  • 局限性: InstructGPT模型仍然存在生成有害或有偏見內容、編造事實等問題。此外,模型的大小和性能之間存在權衡,需要進一步優化。

結論:

  • 通過對人類反饋進行微調,可以顯著提高語言模型在遵循用戶指示、減少有害輸出和提高真實性方面的表現。然而,仍有許多工作需要完成,以進一步提高模型的安全性和可靠性。


7.論文建模

????????在論文《Training language models to follow instructions with human feedback》中,獎勵建模(RM)和PPO算法的結合方式如下:

獎勵建模(RM)

  1. 數據收集:收集人類標注者對模型輸出的比較和排名數據。這些數據包括對同一輸入的不同模型輸出的偏好排名。
  2. 訓練目標:訓練獎勵模型來預測人類標注者更偏好的輸出。獎勵模型的輸入是提示(prompt)和模型的輸出(completion),輸出是一個標量值,表示該輸出的獎勵。
  3. 模型架構:獎勵模型基于GPT-3的架構,但輸出層被修改為一個標量輸出,用于表示獎勵。
  4. 損失函數:使用交叉熵損失函數來訓練獎勵模型。具體來說,對于每一對輸出(preferred completion和less preferred completion),獎勵模型的損失函數如下:
    ?

PPO算法

  1. 初始化:從監督微調(SFT)模型初始化PPO策略模型。

  2. 獎勵信號:使用訓練好的獎勵模型作為獎勵函數,為策略模型的輸出提供獎勵信號。

  3. 強化學習優化:使用PPO算法優化策略模型,以最大化獎勵模型提供的獎勵。具體來說,策略模型的更新目標是:

?

結合方式

  • 獎勵模型作為獎勵信號:獎勵模型的輸出直接作為PPO算法中的獎勵信號,指導策略模型的優化方向。獎勵模型替代了環境提供的獎勵函數,成為策略模型優化的唯一獎勵來源。

  • 獎勵模型的訓練數據:獎勵模型的訓練數據來自人類標注者的比較和排名,而不是環境交互數據。這使得獎勵模型能夠更好地捕捉人類的偏好。

  • 策略模型的更新:策略模型在PPO算法中通過與獎勵模型交互,不斷調整其輸出以最大化獎勵模型提供的獎勵。獎勵模型的輸出作為標量獎勵,直接用于計算策略梯度。

總結

????????獎勵模型(RM)在強化學習過程中替代了環境提供的獎勵函數,成為策略模型優化的唯一獎勵來源。獎勵模型的輸出是一個標量值,表示模型輸出的獎勵,這個獎勵值用于指導策略模型的優化方向。通過這種方式,獎勵模型和PPO算法緊密結合,共同實現了對語言模型的對齊和優化。


[Notice]? 常見誤區

  1. RM不是簡單的打分器,而是復雜的價值判斷系統
  2. RM需要避免"分數欺騙"(比如為了快速回復犧牲正確性)
  3. RM需要定期更新(就像考試大綱會變化)

8.?面臨的挑戰與發展方向

盡管Reward Model在多個領域展現了其強大的潛力,但其發展仍然面臨諸多挑戰:

  • 模型偏差與可解釋性:Reward Model在處理復雜任務時,容易受到數據偏差的影響,并且模型的決策過程往往缺乏可解釋性。
  • 跨任務泛化能力:Reward Model是否能有效地適應不同任務或領域,仍然是一個未解之謎。尤其是在跨領域任務的應用中,Reward Model的泛化能力和穩定性有待進一步驗證。
  • PRM的局限性:盡管PRM在一些任務中表現出色,但其在處理大規模推理任務時仍然存在很多局限性。研究者正在探索如何改進PRM,提升其在復雜推理任務中的表現。

9.?未來展望

Reward Model的未來發展方向主要集中在以下幾個方面:

  • 優化算法:如何設計更高效的算法,以解決Reward Model在推理過程中的計算復雜度和可擴展性問題。
  • 多模態學習:Reward Model未來可能與圖像、視頻等多模態數據結合,進一步推動跨領域的應用。
  • 自監督學習:通過自監督學習,Reward Model可能能夠減少對人工標注數據的依賴,提高訓練效率。

????????綜上所述,Reward Model作為強化學習與深度學習結合的產物,已經在多個領域得到廣泛應用,并展現出強大的潛力。隨著技術的不斷進步,Reward Model有望在更廣泛的應用場景中發揮更大作用

?更多強化學習文章,請前往:【強化學習(RL)】專欄


????????博客都是給自己看的筆記,如有誤導深表抱歉。文章若有不當和不正確之處,還望理解與指出。由于部分文字、圖片等來源于互聯網,無法核實真實出處,如涉及相關爭議,請聯系博主刪除。如有錯誤、疑問和侵權,歡迎評論留言聯系作者,或者添加VX:Rainbook_2,聯系作者。?

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

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

相關文章

國家雪亮工程政策護航,互聯網監控管理平臺鑄就安全防線

在當今社會,公共安全是國家發展的重要基石,也是人民安居樂業的基本保障。為了打造更高水平的平安中國,國家推出了意義深遠的雪亮工程,并出臺了一系列相關政策,為公共安全事業保駕護航。而互聯網監控管理平臺作為雪亮工…

藍橋杯 第十天 2019國賽第4題 矩陣計數

最后一個用例超時了,還是記錄一下 import java.util.Scanner;public class Main {static int visited[][];static int count 0;static int n,m;public static void main(String[]args) {Scanner scan new Scanner(System.in);n scan.nextInt();//2m scan.nextIn…

coding ability 展開第五幕(二分查找算法)超詳細!!!!

. . 文章目錄 前言二分查找搜索插入的位置思路 x的平方根思路 山脈數組的峰頂索引思路 尋找旋轉排序數組中的最小值思路 總結 前言 本專欄上篇博客已經把滑動指針收尾啦 現在還是想到核心——一段連續的區間,有時候加上哈希表用起來很爽 今天我們來學習新的算法知識…

BEVFormer報錯(預測場景與真值場景的sample_token不匹配)

在運行test.py時報錯: BEVFormer/projects/mmdet3d_plugin/datasets/nuscnes_eval.py: init()函數報錯 assert set(self.pred_boxes.sample_tokens) set(self.gt_boxes.sample_tokens), \"Samples in split doesnt match samples in predictions…

網絡安全威脅與防護措施(下)

8. 惡意軟件(Malware) **惡意軟件(Malware,Malicious Software)**是指旨在通過破壞、破壞或未經授權訪問計算機系統、網絡或設備的程序或代碼。惡意軟件通常用于竊取敏感信息、破壞系統、竊取資源、干擾正常操作&…

基于springboot的母嬰商城系統(018)

摘 要 現代經濟快節奏發展以及不斷完善升級的信息化技術,讓傳統數據信息的管理升級為軟件存儲,歸納,集中處理數據信息的管理方式。本母嬰商城系統就是在這樣的大環境下誕生,其可以幫助管理者在短時間內處理完畢龐大的數據信息&am…

shell 腳本搭建apache

#!/bin/bash # Set Apache version to install ## author: yuan# 檢查外網連接 echo "檢查外網連接..." ping www.baidu.com -c 3 > /dev/null 2>&1 if [ $? -eq 0 ]; thenecho "外網通訊良好!" elseecho "網絡連接失敗&#x…

使用OBS進行webRTC推流參考

參考騰訊云官方文檔: 云直播 OBS WebRTC 推流_騰訊云 說明非常詳細,分為通過WHIP和OBS插件的形式進行推流。 注意:通過OBS插件的形式進行推流需要使用較低的版本,文檔里有說明,需要仔細閱讀。

Excel 小黑第18套

對應大貓18 .txt 文本文件,點數據 -現有鏈接 -瀏覽更多 (文件類型:可以點開文件看是什么分隔的) 雙擊修改工作表名稱 為表格添加序號:在數字那修改格式為文本,輸入第一個序號樣式(如001&#…

快速入手-基于Django的mysql配置(三)

Django開發操作數據庫更簡單,內部提供了ORM框架。比如mysql,舊版本用pymysql對比較多,新的版本采用mysqlclient。 1、安裝mysql模塊 pip install mysqlclient 2、Django的ORM主要做了兩件事 (1)CRUD數據庫中的表&am…

【總結篇】java多線程,新建線程有幾種寫法,以及每種寫法的優劣勢

java多線程 新建線程有幾種寫法,以及每種寫法的優劣勢 [1/5]java多線程 新建線程有幾種寫法–繼承Thread類以及他的優劣勢[2/5]java多線程-新建線程有幾種寫法–實現Runnable接口以及他的優劣勢[3/5]java多線程 新建線程有幾種寫法–實現Callable接口結合FutureTask使用以及他的…

基于YOLOv8與ByteTrack的車輛行人多目標檢測與追蹤系統

作者主頁:編程千紙鶴 作者簡介:Java領域優質創作者、CSDN博客專家 、CSDN內容合伙人、掘金特邀作者、阿里云博客專家、51CTO特邀作者、多年架構師設計經驗、多年校企合作經驗,被多個學校常年聘為校外企業導師,指導學生畢業設計并參…

【芯片驗證】面試題·對深度為60的數組進行復雜約束的技巧

朋友發給我的芯片驗證筆試題,覺得很有意思,和大家分享一下。 面試題目 class A中一個長度為60的隨機數組rand int arr[60],如何寫約束使得: 1.每個元素的值都在(0,100]之間,且互不相等; 2.最少有三個元素滿足勾股數要求,比如數組中包含3,4,5三個點; 請以解約束最快…

springmvc中使用interceptor攔截

HandlerInterceptor 是Spring MVC中用于在請求處理之前、之后以及完成之后執行邏輯的接口。它與Servlet的Filter類似,但更加靈活,因為它可以訪問Spring的上下文和模型數據。HandlerInterceptor 常用于日志記錄、權限驗證、性能監控等場景。 ### **1. 創…

【網絡協議】基于UDP的可靠協議:KCP

TCP是為流量設計的(每秒內可以傳輸多少KB的數據),講究的是充分利用帶寬。而 KCP是為流速設計的(單個數據包從一端發送到一端需要多少時間),以10%-20%帶寬浪費的代價換取了比 TCP快30%-40%的傳輸速度。TCP信…

【論文閱讀】Contrastive Clustering Learning for Multi-Behavior Recommendation

論文地址:Contrastive Clustering Learning for Multi-Behavior Recommendation | ACM Transactions on Information Systems 摘要 近年來,多行為推薦模型取得了顯著成功。然而,許多模型未充分考慮不同行為之間的共性與差異性,以…

藍橋杯2023年第十四屆省賽真題-子矩陣

題目來自DOTCPP: 暴力思路(兩個測試點超時): 題目要求我們求出子矩陣的最大值和最小值的乘積,我們可以枚舉矩陣中的所有點,以這個點為其子矩陣的左上頂點,然后判斷一下能不能構成子矩陣。如果可…

centos 磁盤重新分割,將原來/home 下部分空間轉移到 / 根目錄下

上次重裝系統時,不小心將一半磁盤放在了 /home 下面,運行一段時間后,發現/home 空間沒有怎么用,反而是/ 目錄報警說磁盤用完了,準備將 /home下的空間分一部分給主目錄 / 先查看下 空間分布情況 df -lh 可以看到&…

【C#語言】C#同步與異步編程深度解析:讓程序學會“一心多用“

文章目錄 ?前言?一、同步編程:單線程的線性世界🌟1、尋找合適的對象?1) 🌟7、設計應支持變化 ?二、異步編程:多任務的協奏曲?三、async/await工作原理揭秘?四、最佳實踐與性能陷阱?五、異步編程適用場景?六、性能對比實測…

Redis命令詳解--集合

Redis set 是string類型的無序集合。集合成員是唯一的,這就意味著集合中不能出現重復的數據,常用命令: SADD key member1 [member2...] 向集合添加一個或多個成員 SREM key member1 [member2...] 移除集合中一個或多個成員 SMEMBERS key 獲…