微軟提出 Logic-RL:基于規則的強化學習釋放大語言模型推理能力

?

更多 LLM 架構文章點擊查看:
LLM 架構專欄
大模型架構專欄文章閱讀指南
1. AI 智能體,顛覆還是賦能?一文讀懂!
2. 1W8000 字 解鎖 AI 高效運作密碼:工作流與智能體如何協同?
3. 萬字深度剖析 AI 代理:類型、應用及優勢與局限全解析
4. 1W5000 字 深度剖析大模型 Agent 框架
5. Agent 系列 1W 字用 Python 從零搭建 AI 智能體

在大推理模型中,基于規則的強化學習(RL)潛力幾何?今天咱們就來深入探討一篇與之相關的研究。研究人員選用合成邏輯謎題作為訓練數據,這是因為其復雜度可控,答案驗證也簡單直接。

研究發現,參數量 70 億的模型在訓練后,發展出了反思、驗證和總結等先進推理技能,而這些技能在原始邏輯語料庫中是不存在的。令人驚喜的是,僅在 5000 道邏輯題上訓練后,該模型就在具有挑戰性的數學基準測試 AIME 和 AMC 中展現出了泛化能力。

下面,就為大家詳細解讀這項研究中的有趣發現。

  1. 更長的回復不一定意味著更好的推理:回復長度并不能作為衡量訓練效果的有效指標,最有效的推理往往來自最短路徑。
  2. 語言混合會阻礙推理:這一現象表明,在獎勵建模中需要引入語言一致性懲罰機制。
  3. 增加 “思考” 標記有幫助:強化學習訓練會自然提高與反思相關詞匯的出現頻率,這顯示出某些標記的頻率與模型表現之間存在關聯。
  4. 監督微調(SFT)靠記憶,強化學習能泛化:監督微調嚴重依賴記憶,常導致表面的捷徑學習;而強化學習能自我進化,對數據集結構的依賴極小。
  5. 冷啟動是加分項,但不是必需的:無論從基礎模型還是指令模型開始訓練,訓練動態都驚人地相似,不過指令模型表現稍好。
  6. 課程學習仍然重要:在固定的數據整理比例下,精心設計的課程學習方法總是優于隨機打亂數據的方式。

數據合成

“騎士與無賴(K&K)” 謎題是通過算法生成的推理數據集。在這些謎題中,角色要么是騎士(總是說真話),要么是無賴(總是說謊)。玩家需要根據角色的陳述來判斷每個角色的身份。這個數據集有以下幾個顯著特點:

  1. 程序生成:謎題由邏輯模板系統生成,既保證了一致性,又具有無限的可變性。而且,這些謎題對原始模型來說是全新的數據,非常適合測試模型的泛化能力。
  2. 可控的難度級別:謎題難度可以精確調整,便于設計課程學習策略。通過改變角色數量(2 - 8 個)和邏輯運算的復雜度(1 - 4 種布爾運算符組合)來調節難度。更復雜的謎題還能作為分布外測試,檢驗在簡單謎題上訓練的模型的泛化能力。
  3. 易于驗證:每個謎題都有唯一確定的正確答案,生成算法保證了答案的正確性。解題需要嚴格的演繹推理,能準確評估模型的回答,降低獎勵作弊的風險。

基于規則的獎勵建模

在監測模型輸出的作弊行為過程中,研究人員不斷迭代優化獎勵設計,最終形成了兩種類型的獎勵。

  1. 格式獎勵:利用正則表達式提取,強制模型采用結構化的回復格式。模型需要將推理過程放在 <think></think>標簽內,最終結論放在 <answer></answer>標簽內。在提示末尾直接加上 <think>標簽,能顯著降低基礎模型遵循指令的難度。

在早期不完善的規則設計下,出現了一系列問題: - 跳過<think></think>過程直接回答。 - 在<answer></answer>標簽內進行推理。 - 反復猜測答案,沒有合理推理。 - 除了給出答案,還包含不相關的內容。 - 以錯誤的方式組織正確答案,導致無法提取。 - 由于推理不充分,在輸出<answer>后又回到思考階段。 - 重復原始問題或使用 “思考過程在此” 之類的短語來避免真正的推理。

針對這些問題,研究人員不斷改進規則設計。例如,每個標簽只能出現一次且順序正確,思考過程必須包含真正的推理,結論要以可提取且易讀的方式呈現。通過這些約束,模型的不同行為會根據對格式的遵守程度獲得相應獎勵。

  1. 答案獎勵:在格式驗證通過后,檢查模型的答案是否與正確答案匹配。

實驗設置

實驗最初選用 Qwen2.5 系列的多個模型作為潛在基線候選。比如,Qwen2.5 - Math - 7B 模型生成 Python 代碼塊的傾向很強,這常常與嚴格的格式要求沖突。盡管研究人員嘗試通過去除系統提示和懲罰特定的 Markdown 樣式來緩解這一問題,但仍難以完全解決。

隨后,對 Qwen2.5–7B-Base 和 Qwen2.5–7B-Instruct 模型進行測試。令人驚訝的是,在強化學習訓練過程中,基礎模型和指令模型的訓練指標幾乎相同,包括驗證準確率、回復長度增長曲線和獎勵曲線。不過,指令模型的測試準確率略高,因此成為更優選擇。

評估

  1. 不同模型在 K&K 邏輯謎題上的表現:研究人員對比了推理模型和通用模型在不同難度的 K&K 邏輯謎題上的表現。盡管訓練數據集僅包含不到 5000 個 3 - 7 人 K&K 邏輯謎題的合成樣本,但模型在分布外(OOD)場景(如 8 人謎題)中展現出了驚人的泛化能力。
  2. 回復長度的變化:在強化學習訓練 1000 步后,模型輸出的平均長度從最初的 500 個標記幾乎線性穩定增長到 2000 個標記,增長了 4 倍。隨著回復長度增加,模型開始表現出更復雜的行為,如反思和探索其他解決方案。
  3. 研究問題相關評估
    • RQ 1:GRPO 與其他強化學習算法相比如何?:在訓練速度、準確率和獎勵增益方面(通過滑動窗口 = 50 取平均值)進行比較,近端策略優化算法(PPO)達到了最高的準確率和獎勵,但訓練速度比 REINFORCE++慢 138%。REINFORCE++在穩定性、性能提升和訓練效率方面均優于廣義策略優化算法(GRPO),在幾乎所有指標上都超過了 GRPO,而 GRPO 在這三種算法中表現最差。
    • RQ 2:特定的思考標記和語言混合現象會提高推理能力嗎?:語言混合會顯著降低推理能力。像“wait”“verify”“yet”“re - evaluate”等詞匯能顯著提升推理能力,但并非所有復雜思考標記都有此效果,例如“recheck”。“recheck”會明顯降低推理能力,可能是因為它表明模型對自己的答案不確定。“re - evaluate”和“reevaluate”也有明顯差異,前者能帶來更高的答案得分,而后者會降低得分。從原始回復來看,“reevaluate”幾乎從未出現,“re - evaluate”則頻繁出現,這可能意味著模型對在預訓練語料庫中出現頻率更高的詞匯更適應。
    • RQ 3:訓練過程中會出現 “頓悟時刻” 嗎?:通過跟蹤前 1800 個訓練步驟中詞匯的頻率發現,復雜推理行為(自我反思、探索、驗證、總結)在訓練過程中逐漸出現,早在第 10 步就已顯現,并沒有出現某個突然的 “頓悟時刻” 使這些行為突然出現。
    • RQ 4:模型能泛化到分布外(OOD)任務嗎?:研究人員在 AIME 2021 - 2024 和 AMC 2022 - 2023 數據集上測試模型性能,這些數據集因其具有挑戰性和問題的多樣性被視為 “超級分布外” 測試。模型展現出了強大的超級分布外泛化能力,在 AIME 數據集上性能提升了 125%,在 AMC 數據集上提升了 38%。強化學習過程不僅提高了模型在分布內的性能,還促進了強大且可遷移的推理策略的發展,模型的推理技能能夠超越訓練數據的特定模式,凸顯了強化學習在更廣泛泛化方面的潛力。
    • RQ 5:監督微調(SFT)和強化學習(RL)哪個泛化能力更好?:研究人員在原始訓練數據和略有擾動的數據上評估模型性能,使用了兩種擾動類型:改變陳述的布爾邏輯和重新排列陳述順序。結果表明,監督微調(以 RFT 為代表)具有更高的記憶得分,對擾動更敏感,說明它只是表面上適應訓練數據格式;而強化學習的記憶得分較低,但對未見過的測試數據泛化能力更好,意味著它具有更強的推理能力,對表面模式的依賴更少,更鼓勵獨立探索,從而實現更好的泛化。
    • RQ 6:課程學習在強化學習中仍然必要嗎?:對比課程學習和混合難度訓練的測試分數發現,在訓練中期,課程學習的測試分數略高,但隨著時間推移,這種優勢逐漸減弱,幾乎可以忽略不計。在訓練早期,兩者的性能差異在統計上可以忽略不計,對初始收斂影響不大。雖然課程學習在樣本效率上可能有微弱的理論優勢,但由于在實際應用中性能差異極小,且分階段訓練增加了復雜性,其實際必要性值得商榷。
    • RQ 7:更長的回復長度能保證更好的推理嗎?:研究人員對比了兩個使用相同算法和基礎模型,但超參數和數據集難度不同的模型:正例模型(藍色,回復長度隨時間減少)和負例模型(紅色,回復長度隨時間增加)。正例模型盡管回復長度減少,但驗證準確率和獎勵都有所提高,推理和泛化能力更好;負例模型回復長度增加,驗證準確率和獎勵卻沒有提升,這表明回復長度本身并不能提升推理能力。回復長度的變化更可能是訓練動態(如強化學習動態)的副產品,而非推理能力提升的直接原因。從統計數據來看,沒有顯著證據表明回復長度的增加幅度與推理性能的提升成正比。更長的回復不一定意味著更好的推理,雖然推理能力的提升可能會導致更詳細、更長的解釋,但人為增加回復長度并不一定能提高性能。

論文鏈接:Logic - RL: Unleashing LLM Reasoning with Rule - Based Reinforcement Learning 2502.14768[1]

推薦閱讀

1. DeepSeek-R1 的頓悟時刻是如何出現的? 背后的數學原理
2. 微調 DeepSeek LLM:使用監督微調(SFT)與 Hugging Face 數據
3. 使用 DeepSeek-R1 等推理模型將 RAG 轉換為 RAT
4. DeepSeek R1:了解 GRPO 和多階段訓練
5. 深度探索:DeepSeek-R1 如何從零開始訓練
6. DeepSeek 發布 Janus Pro 7B 多模態模型,免費又強大!

Reference
[1]

Logic - RL: Unleashing LLM Reasoning with Rule - Based Reinforcement Learning 2502.14768: https://arxiv.org/abs/2502.14768

本文由 mdnice 多平臺發布

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

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

相關文章

STM32八股【1】-----啟動流程和startup文件理解

啟動流程 知識點 MCU 上電復位。MSP從向量表第0個地址讀取一個32位&#xff08;2字節&#xff09;的值并保存&#xff0c;該值為棧頂地址。PC計數器從第1個地址讀取一個兩字節的值并保存&#xff0c;該值為程序入口&#xff0c;一般是Reset_Handler。想了解FLASH地址映射可以…

詳解c++20的協程,自定義可等待對象,生成器詳解

協程 c20的協程三大標簽&#xff1a;“性能之優秀”&#xff0c;“開發之靈活”&#xff0c;“門檻之高” 在講解c的協程使用前&#xff0c;我們需要先明白協程是什么&#xff0c;協程可以理解為用戶態的線程&#xff0c;它需要由程序來進行調度&#xff0c;如上下文切換與調…

JavaEE企業級開發 延遲雙刪+版本號機制(樂觀鎖) 事務保證redis和mysql的數據一致性 示例

提醒 要求了解或者熟練掌握以下知識點 spring 事務mysql 臟讀如何保證緩存和數據庫數據一致性延遲雙刪分布式鎖并發編程 原子操作類 前言 在起草這篇博客之前 我做了點功課 這邊我寫的是一個示例代碼 數據層都寫成了 mock 的形式(來源于 JUnit5) // Dduo import java.u…

A2 最佳學習方法

記錄自己想法的最好理由是發現自己的想法&#xff0c;并將其組織成可傳播的形式 (The best reason for recording what one thinks is to discover what one thinks and to organize it in transmittable form.) Prof Ackoff 經驗之談&#xff1a; 做培訓或者寫文章&#xff…

嵌入式硬件工程師從小白到入門-PCB繪制(二)

PCB繪制從小白到入門&#xff1a;知識點速通與面試指南 一、PCB設計核心流程 需求分析 明確電路功能&#xff08;如電源、信號處理、通信&#xff09;。確定關鍵參數&#xff08;電壓、電流、頻率、接口類型&#xff09;。 原理圖設計 元器件選型&#xff1a;匹配封裝、電壓、…

vue創建子組件步驟及注意事項

在 Vue 中創建子組件需要遵循組件化開發的核心原則&#xff0c;并注意數據流、通信機制、復用性等關鍵點。以下是詳細步驟和注意事項&#xff0c;結合代碼示例說明&#xff1a; 一、創建子組件的步驟 1. 定義子組件 創建一個 .vue 文件&#xff08;單文件組件&#xff09;&am…

Cocos Creator版本發布時間線

官網找不到&#xff0c;DeepSeek給的答案&#xff0c;這里做個記錄。 Cocos Creator 1.x 系列 發布時間&#xff1a;2016 年 - 2018 年 1.0&#xff08;2016 年 3 月&#xff09;&#xff1a; 首個正式版本&#xff0c;基于 Cocos2d-x 的 2D 游戲開發工具鏈&#xff0c;集成可…

【Spring AI】基于專屬知識庫的RAG智能問答小程序開發——功能優化:用戶鑒權主體功能開發

系列文章目錄 【Spring AI】基于專屬知識庫的RAG智能問答小程序開發——完整項目&#xff08;含完整前端后端代碼&#xff09;【Spring AI】基于專屬知識庫的RAG智能問答小程序開發——代碼逐行精講&#xff1a;核心ChatClient對象相關構造函數【Spring AI】基于專屬知識庫的R…

【AI神經網絡】深度神經網絡(DNN)技術解析:從原理到實踐

引言 深度神經網絡&#xff08;Deep Neural Network, DNN&#xff09;作為人工智能領域的核心技術&#xff0c;近年來在計算機視覺、自然語言處理、醫療診斷等領域取得了突破性進展。與傳統機器學習模型相比&#xff0c;DNN通過多層非線性變換自動提取數據特征&#xff0c;解決…

目標跟蹤——deepsort算法詳細闡述

deepsort 算法詳解 Unmatched Tracks(未匹配的軌跡) 本質角色: 是已存在的軌跡在當前幀中“失聯”的狀態,即預測位置與檢測結果不匹配。 生命周期階段: 已初始化: 軌跡已存在多幀,可能攜帶歷史信息(如外觀特征、運動模型)。 未被觀測到: 當前幀中未找到對應的檢測框…

Vue-admin-template安裝教程

#今天配置后臺管理模板發現官方文檔的鏡像網站好像早失效了&#xff0c;自己稍稍總結了一下方法# 該項目環境需要node17及以下&#xff0c;如果npm install這一步報錯可能是這個原因 git clone https://github.com/PanJiaChen/vue-admin-template.git cd vue-admin-template n…

Rust從入門到精通之進階篇:14.并發編程

并發編程 并發編程允許程序同時執行多個獨立的任務&#xff0c;充分利用現代多核處理器的性能。Rust 提供了強大的并發原語&#xff0c;同時通過類型系統和所有權規則在編譯時防止數據競爭和其他常見的并發錯誤。在本章中&#xff0c;我們將探索 Rust 的并發編程模型。 線程基…

算法訓練營第二十三天 | 貪心算法(一)

文章目錄 一、貪心算法理論基礎二、Leetcode 455.分發餅干二、Leetcode 376. 擺動序列三、Leetcode 53. 最大子序和 一、貪心算法理論基礎 貪心算法是一種在每一步選擇中都采取當前狀態下的最優決策&#xff0c;從而希望最終達到全局最優解的算法設計技術。 基本思想 貪心算…

css基礎-display 常用布局

CSS display 屬性詳解 屬性設置元素是否被視為塊級或行級盒子以及用于子元素的布局&#xff0c;例如流式布局、網格布局或彈性布局。 一、基礎顯示模式 1. block 作用&#xff1a; 元素獨占一行可設置寬高和內外邊距默認寬度撐滿父容器 應用場景&#xff1a; 布局容器&a…

速賣通API數據清洗實戰:從原始JSON到結構化商品數據庫

下面將詳細介紹如何把速賣通 API 返回的原始 JSON 數據清洗并轉換為結構化商品數據庫。 1. 數據獲取 首先要借助速賣通 API 獲取商品數據&#xff0c;以 Python 為例&#xff0c;可使用requests庫發送請求并得到 JSON 數據。 import requests# 替換為你的 API Key 和 Secret …

【零基礎入門unity游戲開發——2D篇】2D物理系統 —— 2D剛體組件(Rigidbody2D)

考慮到每個人基礎可能不一樣,且并不是所有人都有同時做2D、3D開發的需求,所以我把 【零基礎入門unity游戲開發】 分為成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要講解C#的基礎語法,包括變量、數據類型、運算符、流程控制、面向對象等,適合沒有編程基礎的…

Collectors.toMap / list 轉 map

前言 略 Collectors.toMap List<User> userList ...; Map<Long, User> userMap userList.stream().collect(Collectors.toMap(User::getUserId, Function.identity()));假如id存在重復值&#xff0c;則會報錯Duplicate key xxx, 解決方案 兩個重復id中&#…

熱門面試題第13天|Leetcode 110.平衡二叉樹 257. 二叉樹的所有路徑 404.左葉子之和 222.完全二叉樹的節點個數

222.完全二叉樹的節點個數&#xff08;優先掌握遞歸&#xff09; 需要了解&#xff0c;普通二叉樹 怎么求&#xff0c;完全二叉樹又怎么求 題目鏈接/文章講解/視頻講解&#xff1a;https://programmercarl.com/0222.%E5%AE%8C%E5%85%A8%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E8…

關于Object.assign

Object.assign 基本用法 Object.assign() 方法用于將所有可枚舉屬性的值從一個或者多個源對象source復制到目標對象。它將返回目標對象target const target { a: 1, b: 2 } const source { b: 4, c: 5 }const returnedTarget Object.assign(target, source)target // { a…

GitHub高級篩選小白使用手冊

GitHub高級篩選小白使用手冊 GitHub 提供了強大的搜索功能&#xff0c;允許用戶通過高級篩選器來精確查找倉庫、Issues、Pull Requests、代碼等。下面是一些常用的高級篩選用法&#xff0c;幫助你更高效地使用 GitHub 搜索功能。 目錄 搜索倉庫搜索Issues搜索Pull Requests搜…