讓大模型“更懂人話”:對齊訓練(RLHF DPO)全流程實戰解析

網羅開發 (小紅書、快手、視頻號同名)

??大家好,我是 展菲,目前在上市企業從事人工智能項目研發管理工作,平時熱衷于分享各種編程領域的軟硬技能知識以及前沿技術,包括iOS、前端、Harmony OS、Java、Python等方向。在移動端開發、鴻蒙開發、物聯網、嵌入式、云原生、開源等領域有深厚造詣。

圖書作者:《ESP32-C3 物聯網工程開發實戰》
圖書作者:《SwiftUI 入門,進階與實戰》
超級個體:COC上海社區主理人
特約講師:大學講師,谷歌亞馬遜分享嘉賓
科技博主:華為HDE/HDG

我的博客內容涵蓋廣泛,主要分享技術教程、Bug解決方案、開發工具使用、前沿科技資訊、產品評測與使用體驗。我特別關注云服務產品評測、AI 產品對比、開發板性能測試以及技術報告,同時也會提供產品優缺點分析、橫向對比,并分享技術沙龍與行業大會的參會體驗。我的目標是為讀者提供有深度、有實用價值的技術洞察與分析。

展菲:您的前沿技術領航員
👋 大家好,我是展菲!
📱 全網搜索“展菲”,即可縱覽我在各大平臺的知識足跡。
📣 公眾號“Swift社區”,每周定時推送干貨滿滿的技術長文,從新興框架的剖析到運維實戰的復盤,助您技術進階之路暢通無阻。
💬 微信端添加好友“fzhanfei”,與我直接交流,不管是項目瓶頸的求助,還是行業趨勢的探討,隨時暢所欲言。
📅 最新動態:2025 年 3 月 17 日
快來加入技術社區,一起挖掘技術的無限潛能,攜手邁向數字化新征程!


文章目錄

    • 摘要
    • 引言
    • 對齊訓練的三大階段
      • 監督微調(SFT)
      • 獎勵模型訓練(RM)
      • 策略優化(PPO / DPO)
        • PPO
        • DPO(更輕量)
    • 應用場景與代碼示例
      • 場景一:客服對話系統
      • 場景二:內容安全助手
      • 場景三:醫療助手
    • QA 環節
    • 總結

摘要

在大語言模型日益強大的今天,我們會發現一個問題:它們雖然“能說會道”,但有時候卻說得不靠譜——比如編造事實、回答偏激,甚至出現違背常識和倫理的問題。

為了讓模型“聽得懂話、說得靠譜”,我們就需要對齊訓練(Alignment Training)。這背后的核心方法是 人類反饋強化學習(RLHF),它通過人類偏好來調整模型行為,確保模型輸出不僅正確,而且符合價值觀。

本文將系統介紹 RLHF 的三個階段:監督微調(SFT)、獎勵模型訓練(RM)、策略優化(如PPO、DPO),結合 HuggingFace + TRL + DPO 框架進行實戰演示,幫助你掌握一整套對齊訓練的開發流程。

引言

大語言模型訓練分兩步走:

  1. 預訓練(Pretraining):學會“說話”,但不懂“人話”。
  2. 對齊訓練(Alignment):學會“說得對”,還得“說得人喜歡”。

早期對齊方法主要是規則過濾或黑名單,但效果有限。直到 OpenAI 推出 InstructGPTChatGPT,通過 RLHF 結合人類反饋訓練出更符合人類偏好的模型,才真正解決了這一問題。

隨著對齊技術的發展,又涌現了許多輕量替代品,如 DPO(Direct Preference Optimization),省去了 RL 中復雜的采樣和價值函數估計,成為更輕便的替代方案。

對齊訓練的三大階段

監督微調(SFT)

這是最基礎的一步。我們先用成對的指令-回復數據(如“請寫一封道歉信” - “很抱歉我錯了………”)讓模型學會基本的“格式”與“語氣”。

# 使用transformers進行SFT訓練
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments, Trainermodel = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b-hf")
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b-hf")train_data = [{"input": "請寫一封道歉信", "output": "很抱歉給您帶來了不便……"},{"input": "總結這段內容", "output": "這段文字討論了……"},
]def tokenize(example):prompt = f"### 指令:\n{example['input']}\n\n### 回復:\n{example['output']}"tokens = tokenizer(prompt, truncation=True, padding="max_length", max_length=512)tokens["labels"] = tokens["input_ids"]return tokenstokenized_data = list(map(tokenize, train_data))training_args = TrainingArguments(output_dir="./sft_model", per_device_train_batch_size=1, num_train_epochs=3)
trainer = Trainer(model=model, args=training_args, train_dataset=tokenized_data)
trainer.train()

獎勵模型訓練(RM)

接下來,我們需要訓練一個“獎勵模型”來判斷哪一段回復更好。它是 RLHF 的核心。

我們準備多組 A/B 選擇數據,例如:

  • Prompt: “你怎么看待加班文化?”
  • A: “加班是奮斗精神的體現。”
  • B: “長期加班會損害身心健康。”

人類選擇 B,我們用這個偏好訓練一個二分類獎勵模型。

# 簡化版:獎勵模型結構
from transformers import AutoModel, AutoTokenizer
import torch.nn as nnclass RewardModel(nn.Module):def __init__(self, base_model="meta-llama/Llama-2-7b-hf"):super().__init__()self.backbone = AutoModel.from_pretrained(base_model)self.value_head = nn.Linear(self.backbone.config.hidden_size, 1)def forward(self, input_ids, attention_mask):outputs = self.backbone(input_ids=input_ids, attention_mask=attention_mask)last_hidden = outputs.last_hidden_state[:, -1, :]return self.value_head(last_hidden)

獎勵模型訓練完成后,我們就能用它來為策略模型提供“偏好評分”。

策略優化(PPO / DPO)

這是整個對齊過程的“高能環節”:我們用獎勵信號來“調教”模型。

PPO

PPO 是最經典的 RLHF 策略訓練方法,但實現較復雜,需要一個“回放緩沖區”和 KL 約束。HuggingFace 的 trl 庫幫我們封裝好了:

from trl import PPOTrainer, PPOConfigppo_config = PPOConfig(model_name="sft_model", learning_rate=5e-6)
ppo_trainer = PPOTrainer(config=ppo_config, model=model, tokenizer=tokenizer, reward_model=reward_model)for prompt in prompts:response = ppo_trainer.model.generate(tokenizer(prompt, return_tensors="pt")["input_ids"])reward = reward_model(response)ppo_trainer.step([prompt], [response], [reward])
DPO(更輕量)

相比 PPO,DPO 不需要 RL 環節,直接最小化“好回復”優于“壞回復”的概率差。用法上更簡單,訓練速度也快。

# DPO 示例
from trl import DPOTrainerdpo_trainer = DPOTrainer(model=model,ref_model="sft_model",  # 作為對比基線beta=0.1,train_dataset=your_pairwise_data,
)dpo_trainer.train()

應用場景與代碼示例

場景一:客服對話系統

用戶發來復雜問題,模型需要不僅準確,還要語氣溫和。這時候用指令微調 + DPO 就能有效提升回答的“人性化”。

問:你們怎么還沒發貨?我要投訴!
答:非常抱歉給您帶來了不便,我們已加急處理……

場景二:內容安全助手

我們希望模型能主動避免生成敏感或不當內容。通過獎勵模型過濾,結合 DPO 優化,可以有效減少“毒性”回答。

場景三:醫療助手

醫生問診類對話,需要模型“謹慎回答”。我們可以使用專業領域的反饋數據,對回答策略進行 DPO 調整,增強模型的“責任感”。

QA 環節

Q: DPO 和 PPO 有啥區別?用哪個好?
A: PPO 是正統 RLHF 的核心方案,但訓練成本高。DPO 是后起之秀,更適合中小團隊快速部署,效果也不錯,特別適合垂類場景。

Q: 對齊訓練會不會讓模型“失去創造力”?
A: 這是個平衡問題。如果獎勵信號設計得太保守,會抹殺多樣性。但合理設計偏好訓練目標,可以在安全與創造之間找到平衡。

總結

對齊訓練是讓大模型“更接近人類思維”的關鍵一步。無論是 RLHF 還是 DPO,本質上都是在“教模型做人”:

  • 用 SFT 學習基礎指令理解
  • 用 RM 學會什么是“好回復”
  • 用 PPO/DPO 優化行為策略

對于想在特定領域(醫療、法律、客服)構建可靠模型的開發者來說,這是一條必須掌握的路徑。

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

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

相關文章

GO 原子操作面試題及參考答案

Go 的 sync/atomic 包和 sync.Mutex 的根本區別是什么? Go 語言中的 sync/atomic 包和 sync.Mutex 都用于處理并發編程中的同步問題,但它們的實現機制、應用場景和性能特性存在根本差異。理解這些差異對于編寫高效、安全的并發代碼至關重要。 sync/atomi…

MATLAB 山脊圖繪制全解析:從數據生成到可視化進階

一、引言:當數據分布擁有「層次感」—— 山脊圖的魅力? 在數據可視化的世界里,我們常常需要同時展示多個分布的形態差異。傳統的重疊密度圖雖然能呈現整體趨勢,但當分布數量較多時,曲線交疊會讓畫面變得雜亂。這時候&#xff0c…

跨境電商每周資訊—6.16-6.20

1. Instagram 在亞太地區逐漸超越 TikTok 在整個亞太地區,Instagram用戶數量正逐漸超過TikTok。預計2025年日本Instagram用戶數量將增至4440萬,印度今年用戶數量將增長10%,領跑亞太。與之形成對比的是,TikTok在一些國家增長速度放…

計算機網絡 網絡層:數據平面(一)

前一節學習了運輸層依賴于網絡層的主機到主機的通信服務,提供各種形式的進程到進程的通信。了解這種主機到主機通信服務的真實情況,是什么使得它工作起來的。 在本章和下一章,將學習網絡層實際是怎樣實現主機到主機的通信服務。與運輸層和應用…

Suna本地部署詳細教程

一、安裝基礎環境 # 1、創建環境 conda create -n suna python3.11.7# 2、激活虛擬環境 conda activate suna# 3、安裝jupyter和ipykernel pip install jupyter ipykernel# 4、將虛擬環境添加到jupyter # python -m ipykernel install --user --namemyenv --display-name"…

LeetCode 每日一題打卡|若谷的刷題日記 3day--最長連續序列

1.最長連續序列 題目: 給定一個未排序的整數數組 nums ,找出數字連續的最長序列(不要求序列元素在原數組中連續)的長度。 請你設計并實現時間復雜度為 O(n) 的算法解決此問題。 示例 1: 輸入:nums [1…

EfficientVLA:面向視覺-語言-動作模型無訓練的加速與壓縮

25年6月來自上海交大、哈工大、西安交大和電子科大(成都)的論文“EfficientVLA: Training-Free Acceleration and Compression for Vision-Language-Action Models”。 視覺-語言-動作 (VLA) 模型,特別是基于擴散的架構,展現出具…

wireshark抓包分析TCP數據包

1、直接從TCP的三次握手開始說起 三次握手就是客戶與服務器建立連接的過程 客戶向服務器發送SYN(SEQ=x)報文,然后就會進入SYN_SEND狀態服務器收到SYN報文之后,回應一個SYN(SEQ=y)ACK(ACK=x+1)報文,然后就會進入SYN_RECV狀態客戶收到服務器的SYN報文,回應一個ACK(AC…

同等學力申碩-計算機統考-歷年真題和備考經驗

同等學力申請碩士學位考試是比較適合在職人員的提升學位方式,了解過的人應該都知道,現在社會的競爭壓力越來越大,為了提高職業生存能力,提升學位在所難免。 一、已有計算機統考歷年真題資料 報名過同等學力申碩計算機專業的朋友都…

OSI網絡通信模型詳解

OSI 模型就是把這整個過程拆解成了 7 個明確分工的步驟,每一層只負責自己那一攤事兒,這樣整個系統才能順暢運轉,出了問題也容易找到“鍋”在誰那。 核心比喻:寄快遞 📦 想象你要把一份重要的禮物(你的數據…

C++ 檢測文件大小和文件傳輸

檢測文件的大小 你可以通過標準 C/C 的文件 API 很方便地獲取文件的字節大小&#xff0c;以下是幾種常用方法&#xff1a; ? 方法一&#xff1a;使用 stat() 函數&#xff08;推薦&#xff09; #include <sys/stat.h> #include <stdio.h>off_t get_file_size(co…

Ubuntu 中修改網卡 IP

在 Ubuntu 中修改網卡 IP 地址可以通過以下方法實現&#xff0c;具體取決于你使用的網絡管理工具&#xff08;如 netplan、ifconfig/ip 命令或傳統 interfaces 文件&#xff09;。以下是常見方法&#xff1a; 方法 1&#xff1a;使用 netplan&#xff08;Ubuntu 17.10 及更新版…

記錄學習three.js 為什么 .glTF 是更適合 Web 的 3D 模型格式?——從 .OBJ 到 .glTF 的轉變?

在上一篇中&#xff0c;我們介紹了如何在 Three.js 中加載 .OBJ 模型。如果你沒看過&#xff0c;建議先閱讀一下基礎內容。然而你很快會發現&#xff0c;.OBJ 雖然入門簡單&#xff0c;卻并不是 Web3D 場景中的最佳格式。 .OBJ 是什么&#xff1f; .OBJ 是最早期的3D交換格式之…

H遞歸函數.go

前言&#xff1a;遞歸函數是一種強大而又充滿魅力的編程技巧。它就像是一面神奇的鏡子&#xff0c;函數在其中能夠調用自身的倒影&#xff0c;從而以一種簡潔而優雅的方式解決許多復雜的問題。 目錄 一、遞歸函數是啥玩意兒 二、遞歸函數的優缺點 優點 缺點 三、遞歸函數…

軟件功能測試的測試標準

一、軟件功能測試行業標準概述 軟件功能測試行業標準是規范軟件測試流程、方法、工具及人員資質的準則&#xff0c;是確保軟件產品的功能性、可靠性、易用性等質量特性符合用戶需求。這些標準不僅為測試人員提供了明確的指導&#xff0c;也為軟件產品的質量控制提供了有力保障。…

EchoEar(喵伴):樂鑫發布與火山引擎扣子聯名 AI 智能體開發板

隨著生成式人工智能技術的快速發展&#xff0c;大語言模型 (LLM) 正逐步成為推動智能設備升級的核心力量。樂鑫科技攜手火山引擎扣子大模型團隊&#xff0c;共同推出智能 AI 開發套件 —— EchoEar&#xff08;喵伴&#xff09;。該套件以端到端開發為核心理念&#xff0c;構建…

圖像特征檢測算法SIFT

SIFT&#xff08;Scale - Invariant Feature Transform&#xff0c;尺度不變特征變換&#xff09;是一種計算機視覺領域的特征提取算法&#xff0c;具有重要的地位和廣泛的應用。 算法原理 構建高斯金字塔 &#xff1a; 為了實現多尺度檢測&#xff0c;SIFT 算法會構建高斯金…

光纖通道收發器:市場洞察、技術演進與未來機遇

一、引言 在數字化浪潮席卷全球的當下&#xff0c;數據存儲與傳輸的需求呈爆發式增長。光纖通道收發器作為高速、可靠數據存儲網絡&#xff08;如存儲區域網絡 SAN&#xff09;中的關鍵組件&#xff0c;發揮著至關重要的作用。它通過光纖實現服務器、存儲設備和交換機之間的數…

candence17.4如何設置兩個焊盤之間在TOP與BOTTOM可以存在兩根線

為什么要走兩根線&#xff1f; 為了過大電流&#xff0c;有時候就需要我們在TOP、BOTTOM兩個面走線&#xff0c;同時開窗&#xff0c;然后通過加錫的方式增加過流能力&#xff1b; 當然由于兩面都有導線&#xff0c;必然會存在過孔&#xff0c;而過孔的過流能力不僅與過孔孔徑…

Dify:參數調節,讓LLM從能用到好用的機制

前言 隨著大語言模型(LLM)在文本生成、智能對話、技術問答等前沿領域的深度滲透&#xff0c;參數精細化調節已成為開發者駕馭 AI 能力的核心必修課。 本文將系統的解釋溫度(Temperature)、核采樣(Top - P)、截斷采樣(Top - K)等關鍵參數的底層作用機制&#xff0c;結合多種場景…