大模型的后訓練與邏輯能力

《DeepSeek原生應用與智能體開發實踐》【摘要 書評 試讀】- 京東圖書

在人工智能與機器學習領域,模型的后訓練階段不僅是技術流程中的關鍵環節,更是提升模型性能,尤其是數學邏輯能力的“黃金時期”。這一階段,通過對已初步訓練好的模型進行精細化調優,能夠顯著增強其處理復雜數學邏輯任務的能力,使模型在諸如數學推理、數據分析、決策優化等場景中展現出更高的智能水平。

模型的后訓練,本質上是對模型參數進行二次優化,旨在消除初次訓練中的偏差與不足,提升模型的泛化能力和邏輯推斷精度。特別是在數學邏輯能力方面,后訓練通過引入更高級的數學概念、邏輯規則以及問題求解策略,引導模型學習并掌握更深層次的數學邏輯結構。這一過程不僅要求模型能夠準確理解數學符號與表達式的含義,更需具備運用邏輯規則進行復雜推理和解決問題的能力。大模型后訓練全景圖如圖15-1所示。

圖15-1? 大模型后訓練全景圖

為了有效提升模型的數學邏輯能力,后訓練階段可采用多種策略。一方面,可以設計專門的數學邏輯任務集,如數學證明題、邏輯推理題等,作為模型訓練的數據源,通過大量實踐讓模型在“做中學”,逐步積累數學邏輯經驗。另一方面,可借鑒人類解決數學問題的思維方式,如歸納推理、演繹推理等,將這些思維方法融入模型的后訓練過程中,使模型能夠模擬人類的邏輯思考過程,提高解題效率和準確性。

15.1.1 ?大模型的后訓練概念與核心目標

大模型的后訓練是在預訓練階段之后,對模型進行進一步調整與優化的關鍵過程。預訓練通常利用海量無標注數據,讓模型學習到語言的通用模式、結構以及豐富的語義信息,使模型具備基礎的“語言能力”。

然而,預訓練模型就像是一個擁有廣泛知識但缺乏特定專業技能的“通才”,它雖然對語言有普遍的理解,但無法直接精準地處理各種具體的任務。后訓練的目的就是把這個“通才”培養成在特定領域或任務上表現出色的“專才”。

例如,在科學領域,預訓練模型可能知道很多通用的詞匯和句子結構,但對于數學術語、物理定理等專業內容理解有限。通過后訓練,使用大量科學領域的數據對模型進行微調,模型就能更好地理解和處理與邏輯計算相關的文本,比如準確解讀論文等。后訓練的核心目標就是提升模型在特定任務上的性能,使其能夠更精準、高效地完成任務,滿足實際應用的需求。

大模型后訓練有多種方法和策略,其中監督微調(Supervised Fine-Tuning,SFT)和強化學習等微調手段是比較常用和有效的方法。微調就像是在已經建好的房子基礎上進行局部裝修。預訓練模型就好比是建好的房子主體結構,而微調則是根據具體需求,對房子的內部布局、裝飾等進行調整。微調的方法如圖15-2所示。

在微調過程中,使用有標注的任務特定數據,對預訓練模型的參數進行輕微調整。比如,要將一個預訓練的語言模型用于情感分析任務,就會收集大量帶有情感標簽(積極、消極、中立)的文本數據,然后讓模型在這些數據上進行訓練,調整模型的參數,使其能夠準確判斷文本的情感傾向。

圖15-2? 微調的方法

除了微調,提示學習也是一種重要的后訓練方法。提示學習就像是給模型一個“提示語”,引導模型按照特定的方式生成輸出。例如,對于GLM系列模型,可以通過設計“請總結以下文章的主要內容”這樣的提示,讓模型對給定的文章進行摘要。這種方法不需要對模型進行大量的參數調整,只需要設計合適的提示,就能讓模型適應新的任務。此外,還有參數高效微調方法,它只微調模型中的部分參數,而不是全部參數,這樣可以在保證模型性能的同時,大大減少計算資源和時間成本。

大模型后訓練面臨著一些挑戰。數據稀缺是一個常見問題,特定任務的數據可能非常有限,這就像是要做一道美味的菜肴,但食材卻不夠。為了解決這個問題,研究人員會使用數據增強技術,比如對文本進行回譯、同義詞替換等,增加訓練數據的多樣性。計算資源限制也是一個挑戰,微調大型模型需要大量的計算資源,就像要建造一座大型建筑需要大量的人力和物力。

參數高效微調方法和模型壓縮技術可以在一定程度上緩解這個問題。

未來,大模型后訓練有著廣闊的發展前景。一方面,研究人員會不斷探索更高效的后訓練方法,進一步減少計算資源和時間成本,提高模型的訓練效率。另一方面,跨領域和跨任務學習將成為研究熱點,讓模型能夠更好地適應不同的領域和任務,實現更廣泛的應用。同時,提高模型的可解釋性和安全性也是未來的重要方向,讓模型不僅能夠做出準確的預測,還能讓用戶理解其決策過程,并且防止模型被惡意攻擊或濫用。

15.1.2 ?結果獎勵與過程獎勵:獎勵建模詳解

在上一節中,我們深入探討了大模型后訓練的多種方法與策略,其中最基礎的兩種便是監督微調(SFT)與強化學習。監督微調(SFT)我們已在前文(12.5節)有所闡述,它主要是通過標注好的數據對模型進行微調,使模型能夠初步適應特定的任務需求。而強化學習,尤其是以梯度正則化策略優化(GRPO)為代表的算法,則為大模型的后訓練提供了另一種高效的途徑。

在強化學習的框架下,獎勵建模扮演著至關重要的角色。獎勵建模的核心在于構建一個能夠準確反映人類偏好的獎勵函數,以此引導模型在訓練過程中不斷優化其行為策略。其中,結果獎勵與過程獎勵是獎勵建模中的兩個關鍵維度。結果獎勵關注的是模型最終輸出的質量,即模型生成的答案或決策是否符合人類的期望;而過程獎勵則側重于模型在生成過程中的行為表現,如是否遵循了合理的邏輯、是否展現了創造性等。

在訓練獎勵模型時,我們通常采用最小化負對數似然函數的方法,其目標函數可以表示為:

這個公式表明,我們希望獎勵模型給出的獎勵值能夠盡可能地接近真實(SFT),或者符合人類的偏好(GRPO)。例如,如果人類更喜歡yi 而不是yj ,那么我們希望模型的輸出盡可能地滿足R(x,yi) 輸出的概率大于(x,yj) 的輸出概率。

獎勵函數的設計在強化學習領域中占據著舉足輕重的地位。它就像一位精準的導航員,為模型在不同狀態下明確應得的獎勵,進而巧妙地引導模型逐步學習到我們所期望的行為模式。一個精心設計的獎勵函數,能夠如同明燈照亮模型前行的道路,使其在復雜多變的環境中迅速找到最優的行為策略。在強化學習的宏大框架里,獎勵函數的設計絕非可有可無的環節,而是決定模型訓練成敗與效果優劣的關鍵因素。

獎勵根據來源進行劃分,可以清晰地分為過程獎勵和結果獎勵兩大類別。

1. 過程獎勵(Process Reward)

過程獎勵,顧名思義,是在模型執行任務的每一個具體步驟中,依據其當下的行為表現所給予的獎勵。這種獎勵機制就像是一位時刻陪伴在模型身邊的嚴格導師,對模型每一步的操作都進行細致入微的評估與反饋。其顯著優勢在于能夠提供極為密集的反饋信號,模型無須等待漫長的任務結束,就能在每一個小步驟中及時知曉自己的行為是否正確、是否符合預期。這種即時反饋的特性,極大地加速了模型的學習進程,使其能夠更快地調整策略、優化行為。

下面我們用偽代碼模擬了一個過程獎勵,代碼如下所示:

def calculate_step_reward(response):# 1. 語法正確性檢查syntax = check_syntax(response)# 2. 邏輯連貫性評估coherence = model.predict_coherence(response)# 3. 事實一致性驗證fact_check = retrieve_evidence(response)return 0.3*syntax + 0.5*coherence + 0.2*fact_check

在這個例子中,獎勵函數考慮了三個方面:

  • 語法正確性檢查:檢查模型生成的文本是否符合語法規則。例如,可以使用語法分析器來判斷文本是否存在語法錯誤。
  • 邏輯連貫性評估:評估模型生成的文本是否邏輯連貫。例如,可以使用語言模型來預測文本的連貫性。
  • 事實一致性驗證:驗證模型生成的文本是否與事實相符。例如,可以使用知識庫來檢索相關信息,然后判斷模型生成的文本是否與知識庫中的信息一致。

對這三個方面進行加權求和,得到最終的獎勵值。權重的選擇需要根據實際情況進行調整。一般來說,更重要的方面應該分配更高的權重。

然而,過程獎勵并非完美無缺。其最大的挑戰在于設計難度極高,這要求設計者必須對任務有極為深入、透徹的理解。不同的任務具有獨特的規則、目標和約束條件,要設計出能夠精準反映模型在每個步驟中行為優劣的過程獎勵函數,需要綜合考慮諸多因素。例如,在一個復雜的機器人控制任務中,機器人的每一個動作都可能受到多種環境因素的影響,設計者需要精確衡量這些動作在不同情境下的合理性,才能制定出合適的過程獎勵規則。一旦過程獎勵設計不當,可能會誤導模型,使其學習到并非最優甚至錯誤的行為模式。

2. 結果獎勵(Outcome Reward)

與過程獎勵不同,結果獎勵關注的是模型在完成整個任務后所達成的最終成果。它更像是一位在終點等待的評判者,根據模型最終呈現的結果給予相應的獎勵或懲罰。結果獎勵的設計相對比較直觀,通常可以根據任務的明確目標來制定。比如,在一場棋類游戲中,贏得比賽即可獲得正獎勵,輸掉比賽則得到負獎勵。這種簡潔明了的獎勵方式,使得模型能夠清晰地了解最終需要追求的目標。

結果獎勵是指在任務完成后,根據模型的最終結果給出的獎勵。結果獎勵的設計比較簡單,只需要關注最終結果即可。但可能提供較稀疏的反饋信號,導致模型學習困難。典型應用場景包括:

  • 數學問題:最終答案正確性。例如,如果模型生成的答案與正確答案一致,則給出正獎勵,否則給出負獎勵。
  • 代碼生成:通過單元測試的比例。例如,如果模型生成的代碼能夠通過所有的單元測試,則給出正獎勵,否則給出負獎勵。
  • 對話系統:用戶滿意度評分。例如,如果用戶對模型的回復感到滿意,則給出正獎勵,否則給出負獎勵。

在實際應用中,為了充分發揮強化學習的優勢,往往需要綜合考慮過程獎勵和結果獎勵,將它們巧妙地結合起來。通過合理設計兩者的權重和交互方式,使模型既能在每個步驟中得到及時的反饋和指導,又能明確最終的目標方向,從而實現更高效、更優質的學習效果。

但結果獎勵也存在一定的局限性。由于它僅關注最終結果,模型在訓練過程中可能會缺乏足夠的指導,就像在黑暗中摸索前行,只能憑借最終的結果反饋來調整方向。這可能導致模型在探索過程中走很多彎路,學習效率相對較低。而且,對于一些復雜任務,單一的結果獎勵可能無法全面反映模型在整個過程中的表現,容易忽略一些重要的中間環節和行為細節。

最后需要提醒大家,結果獎勵與過程獎勵并不是孤立的,而是相互關聯、相互影響的。一個優秀的模型不僅需要在最終結果上符合人類的期望,還需要在生成過程中展現出合理的邏輯和創造性。因此,在構建獎勵模型時,我們需要綜合考慮結果獎勵和過程獎勵,以實現模型性能的全面提升。

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

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

相關文章

pycharm安裝教程-PyCharm2025安裝步驟【MAC版】附帶安裝包

pycharm安裝教程-PyCharm2025安裝詳細步驟【MAC版】安裝安裝包獲取(文章末尾)今天來給大家分享 Mac 系統安裝 PyCharm,附帶安裝包資源安裝, PyCharm 相關就不敘述了,直接開始安裝! 安裝 2024版本、2025年…

【React Native】路由跳轉

Link 跳轉的路徑,就在href里寫/details。路徑都是相對于app目錄來寫的,也就是說app目錄就是/。很多時候,需要跳轉的組件比較復雜。比方說,要在里面要嵌套按鈕,或者其他東西。這種情況下,就可以在Link組件里…

使用 Spring Boot + AbstractRoutingDataSource 實現動態切換數據源

1. 動態切換數據源的原理AbstractRoutingDataSource 是 Spring 提供的一個抽象類,它通過實現 determineCurrentLookupKey 方法,根據上下文信息決定當前使用的數據源。核心流程如下:定義多數據源配置:注冊多個數據源。實現動態數據…

Kubernetes (K8S)知識詳解

Kubernetes (K8S) 是什么? Kubernetes 是 Google 在 2014 年開源的生產級別的容器編排技術(編排也可以簡單理解為調度、管理),用于容器化應用的自動化部署、擴展和管理。它的前身是 Google 內部的 Borg 項目,Borg 是 …

在github上傳python項目,然后在另外一臺電腦下載下來后如何保障成功運行

如何在 GitHub 上傳并在另一臺電腦成功運行 Python 項目? 一、上傳前(本地準備) 在你的項目文件夾中進行以下準備: 1. 確保結構清晰 my_project/ ├── main.py ├── utils.py ├── config.yaml ├── requirements.txt └── README…

詳解Mysql Order by排序底層原理

MySQL 的 ORDER BY 子句實現排序是一個涉及查詢優化、內存管理和磁盤 I/O 的復雜過程。其核心目標是高效地將結果集按照指定列和順序排列。一、確定排序模式 (Sort Mode)MySQL 根據查詢特性和系統變量決定采用哪種排序策略&#xff1a;1.1 Rowid 排序<sort_key, rowid> 模…

SpringBoot的介紹和項目搭建

SpringBoot是簡化Spring應用開發的一個框架&#xff0c;他是Spring技術棧的整合。優點&#xff1a;能夠快速創建獨立運行的Spring項目以及與主流框架集成使用嵌入式的Servlet容器&#xff0c;應用無需打成war包&#xff0c;內嵌tomcatStarters自動依賴和版本控制大量的自動裝配…

Selenium 攻略:從元素操作到 WebDriver 實戰

在自動化測試、網頁數據爬取、批量操作網頁等場景中&#xff0c;Selenium 無疑是最受歡迎的工具之一。作為一款強大的 Web 自動化工具&#xff0c;它能模擬人類操作瀏覽器的行為&#xff0c;實現點擊、輸入、跳轉等一系列動作。本文將從基礎到進階&#xff0c;全面解析 Seleniu…

【算法訓練營Day14】二叉樹part4

文章目錄找樹左下角的值路徑總和總結&#xff1a;遞歸函數的返回值路徑總和 II總結&#xff1a;二叉樹遞歸的思考從中序與后序遍歷序列構造二叉樹找樹左下角的值 題目鏈接&#xff1a;513. 找樹左下角的值 解題邏輯&#xff1a; 使用層序遍歷&#xff0c;將最后一層的第一個元…

工資系統如何計算工資

工資系統計算工資是一個集成數據收集、規則應用、自動核算和合規審核的自動化過程&#xff0c;以下是其核心原理和步驟&#xff0c;結合技術實現與法規要求進行說明&#xff1a;?? 一、工資系統的基本框架與數據準備系統初始化與規則配置企業信息設置&#xff1a;錄入公司名稱…

車載通信架構 --- DoIP協議通信

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 鈍感力的“鈍”,不是木訥、遲鈍,而是直面困境的韌勁和耐力,是面對外界噪音的通透淡然。 生活中有兩種人,一種人格外在意別人的眼光;另一種人無論…

基于Event Sourcing和CQRS的微服務架構設計與實戰

基于Event Sourcing和CQRS的微服務架構設計與實戰 業務場景描述 在電商系統中&#xff0c;訂單的高并發寫入與復雜的狀態流轉&#xff08;下單、支付、發貨、退貨等&#xff09;給傳統的CRUD模型帶來了挑戰&#xff1a; 數據一致性難保證&#xff1a;跨服務事務處理復雜&#x…

初級安全課第二次作業

&#xff08;一&#xff09;xss-labs 1~8關 1、前期準備 &#xff08;1&#xff09;打開小皮面板&#xff0c;并啟動Apache和MySQL&#xff08;2&#xff09;將 xss-labs放到 phpstudy_pro 的 WWW 目錄下&#xff08;3&#xff09;訪問連接&#xff1a;http://localhost/xss-la…

從零搭建智能搜索代理:LangGraph + 實時搜索 + PDF導出完整項目實戰

傳統的AI聊天系統往往局限于預訓練數據的知識范圍&#xff0c;無法獲取實時信息。本文將詳細闡述如何構建一個基于LangGraph的智能代理系統&#xff0c;該系統能夠智能判斷何時需要進行網絡搜索、有效維護對話上下文&#xff0c;并具備將對話內容導出為PDF文檔的功能。 本系統…

C語言分支和循環語句——猜數字游戲

分支語句的語法形式1. if(表達式)語句;2. if(表達式)語句1;else語句2;3. Switch(表達式){ case 1: break;case 2: break;case 3: break; default: break; }循環語句的語法形式1. while(表達式)語句 ;2. for&#xff08;表達…

Python設計模式深度解析:原型模式(Prototype Pattern)完全指南

Python設計模式深度解析&#xff1a;原型模式&#xff08;Prototype Pattern&#xff09;完全指南前言什么是原型模式&#xff1f;模式的核心組成實際案例&#xff1a;游泳比賽管理系統游泳者數據結構原型模式的實現深拷貝 vs 淺拷貝&#xff1a;核心概念解析淺拷貝&#xff08…

SAP-ABAP:SAP萬能長度計算:DYNAMIC_OUTPUT_LENGTH 深度解析

&#x1f4cf; SAP ABAP 萬能長度計算&#xff1a;DYNAMIC_OUTPUT_LENGTH 深度解析核心作用&#xff1a;智能計算數據對象在列表/ALV中的實際顯示寬度 | 關鍵優勢&#xff1a;多字節字符處理 | 格式感知 | 動態適配&#x1f50d; 一、核心功能與技術特性 &#x1f4ca; 數據類型…

20250720-2-Kubernetes 調度-資源限制對Pod調度的影響(1)_筆記

一、創建一個Pod的工作流程&#xfeff;1. k8s架構解析&#xfeff;組件交互模式: Kubernetes采用list-watch機制的控制器架構&#xff0c;實現組件間交互的解耦。各組件通過監控自己負責的資源&#xff0c;當資源發生變化時由kube-apiserver通知相關組件。類比說明: 類似小賣鋪…

mobaxteam x11傳輸界面避坑

mobaxteam x11傳輸界面避坑 文章目錄mobaxteam x11傳輸界面避坑1 windows系統必須下載xing2 配置1 windows系統必須下載xing 因為windows系統本身沒有x服務。 2 配置 如圖

flink sql如何對hive string類型的時間戳進行排序

在 Flink SQL 中對 Hive 表的 STRING 類型時間戳進行排序&#xff0c;需要先將字符串轉換為時間類型&#xff0c;再基于時間類型排序。以下是具體方法和示例&#xff1a; 一、核心解決方案 1. 字符串轉 TIMESTAMP 后排序 若 Hive 中的時間戳格式為 yyyy-MM-dd HH:mm:ss&#xf…