2025年3月30日 星期日

RLHF 與 Distillation 在 LLM 中的應用與原理

前言:大型語言模型的挑戰與兩大解方

大型語言模型(LLM)如 ChatGPT 展現了強大的語言理解與生成能力,但在訓練與部署過程中也面臨兩大挑戰:如何讓模型的回應符合人類期望,以及如何讓模型更高效、成本更低。針對第一點,研究者提出了「從人類回饋的強化學習 (Reinforcement Learning from Human Feedback, RLHF)」技術,透過人類的反饋意見來優化模型的行為,使其更貼近人類價值觀與偏好 (參考連結)。 針對第二點,則有「知識蒸餾 (Knowledge Distillation)」方法,讓 大模型教會小模型,在保持模型核心能力的同時大幅壓縮模型規模、提升運行效率 (參考連結)。 本教學將以淺顯易懂的方式介紹這兩種技術的原理和應用,並透過生活化比喻和實際案例,說明它們如何互補,共同成就更實用的 AI 助手。

什麼是 RLHF?為何需要人類回饋強化學習?

RLHF(從人類回饋的強化學習)是一種讓AI模型從人類反饋中學習的機器學習技術。簡單來說,就是在傳統強化學習中加入了「人類給的獎勵」。想像您在教導一個學習助手——每當它給出的答案很好時,您就點頭稱讚(給予獎勵);如果回答不好,您就搖頭或糾正(沒有獎勵或給負反饋)。久而久之,這個助手會學著去提供讓您滿意的答案。RLHF的概念就類似如此:模型在產生回答後,由人類來評估好壞,這個人類偏好(喜好與否)的資訊再用來調整模型,強化「人類覺得好的行為」 (參考連結)

為何訓練大型語言模型需要 RLHF?

傳統上,大型語言模型是透過預測下一個字的方式訓練的,使用海量文本資料進行所謂的「自我監督式學習」(第一階段的預訓練)。雖然這讓模型具備產生語言的基礎能力,但什麼樣的回應算「好」卻很難用程式明確定義 (參考連結)。 例如,我們希望模型講話有禮貌、內容有幫助、不說出不當言論,或者寫一個引人入勝的故事。但「有禮貌」「有趣」「不當」等標準帶有主觀性和語境相關性,無法簡單用數學公式衡量 (參考連結)。 以往也有一些自動評估指標(如 BLEU、ROUGE 分數)用來評估文字生成,但它們只是比對機器輸出與參考答案的重合度,無法完全反映人類的偏好 (參考連結)。 因此,研究者想到:能不能直接讓人來告訴模型什麼是好答案?RLHF 正是為了解決這個問題而出現的。它透過引入人類反饋,讓模型的「獎勵函數」不再僅僅依賴預設的規則或對答案的機械比較,而是融入了人類的價值判斷 (參考連結)。 換句話說,RLHF 讓模型的學習目標直接對齊人類的目標、期望和需求 (參考連結)

從模型訓練的角度,RLHF 的作用相當於為模型新增了一個「人類指揮官」。這位指揮官不需要親自示範每個問題的標準答案(那會非常耗費人力),而是只需在模型回答後,告訴模型「這樣比較好」或「那樣比較差」。相比起讓人類寫出完美答案來訓練模型,直接讓人類選出較好的回應要輕鬆許多 (參考連結)。 舉例來說:讓模型寫一首詩,如果模型初稿不好,人類很難直接寫出一首詩供它學習(監督學習);但人類可以很容易地閱讀模型的幾個版本詩作,告訴它哪一個比較好,哪一個比較差。RLHF 利用了「人類善於評估」而非「人類善於示範」的特點,來解決許多沒有標準答案的問題 (參考連結)。 總結來說,我們需要 RLHF 是因為:在大型語言模型的訓練中,有許多目標與品質指標難以自行制定,但人類知道什麼是好的。因此藉由人類的偏好回饋,我們得以引導模型朝著人們期望的方向發展。

RLHF 的核心流程與概念

RLHF 的實現涉及多個步驟與模型,下面以簡化的流程說明其核心概念,並盡量以一般生活案例做類比:

  1. 收集人類偏好數據:首先,讓模型產生一些回應候選。例如,我們提出一個問題,讓當前的語言模型給出多種不同回答。接著,請人類對這些回答進行比較和評分,選出他們覺得比較好的回答。 (參考連結) 這一步就好比評審打分:想像在作文比賽中,多位選手交稿,由評審團給每篇作文打分或排序。對於模型的多個回答,我們現在有了人類偏好的排序資料。
  2. 訓練獎勵模型 (Reward Model, RM):接著,將剛剛收集的人類偏好資料用來訓練一個「獎勵模型」。獎勵模型是一個 專門用來評分模型回答好壞的模型 (參考連結)。 它輸入一段文字(模型的回答),輸出一個分數,這個分數試圖預測人類給這段回答的偏好程度。可以把獎勵模型想像成一個「AI 評審」或「機器裁判」:它學習人類的品味,來對任意回答給分。訓練時,讓獎勵模型學習去 分辨出人類認為好的回答。具體方式通常是給它看成對的回答比較,調整它使得在人類偏好較高的回答上給出更高的分數 (參考連結)。 如此一來,獎勵模型就近似模仿了人類的價值判斷。
  3. 強化學習調整策略(PPO 微調):有了會打分的獎勵模型之後,我們再回過頭來調整原本的語言模型本身。這一步採用強化學習(RL)的方式進行,因此被稱為 策略微調。其中常用的方法是「近端策略最佳化 (Proximal Policy Optimization, PPO)」,其重點在於 讓模型穩健地改進,每次只對策略做小幅度的更新,避免改動過大導致原有語言能力崩壞 (參考連結)。 簡單來比喻:如果把語言模型視作一位寫作選手,那在這一步中,他開始根據「AI 評審」(獎勵模型)的打分來反覆調整自己的寫作風格,以獲得更高的評分。具體做法是:讓語言模型產生回答,獎勵模型對其評分,這個分數作為強化學習的 「獎勵訊號」,指導語言模型調整內部參數,讓未來能產生分數更高(即更令評審滿意)的回答 (參考連結)。PPO算法在此確保調參不會「一步跳太遠」,而是循序漸進地提升回應品質,同時維持內容的多樣性與連貫性。

經過上述流程,原本的語言模型在經歷人類反饋的洗禮後,變得更加符合人類期待。我們可以把整個過程總結如下:「預訓練模型提供初步能力 → 人類比較多種輸出得到偏好資料 → 訓練出獎勵模型模擬人類偏好 → 用強化學習讓語言模型優化自身以取得高獎勵(滿足人類偏好)」 (參考連結) (參考連結)。 最終得到的模型在回答時,不再只是一味地預測最常見的下一個字,而是會考慮「這樣回答人類會不會喜歡」。這使得它的整體表現更「以人為本」。

RLHF 在 ChatGPT 中的應用範例與優勢

RLHF 技術正是 ChatGPT 等對話式 AI 能夠如此有禮貌、守規矩且貼心的關鍵 (參考連結)。 以下舉幾個實際例子來說明 RLHF 如何改善模型行為,以及帶來哪些好處:

  • 禮貌與風格調整:早期的語言模型可能會給出內容正確但語氣生硬的回答。而透過 RLHF,我們可以要求人類標註者偏好那些語氣友善、有同理心的回應。模型因此學會在語言上更加禮貌、自然。例如,用戶詢問健康問題時,模型不僅提供正確資訊,還會加上「希望對您有幫助,請保重身體!」這類貼心的語句。這種改善源於人類反饋強化了模型的回答禮貌度。
  • 遵循指示、緊扣主題:在沒有經過 RLHF 微調前,模型有時會偏離使用者的問題,給出不相關的內容。RLHF 透過讓人類挑選「有回答到問題的內容」作為較優回覆,來訓練模型更好地遵循使用者指示。舉例而言,使用者要求「請用三點說明環保的重要性」,經 RLHF 訓練的模型會更傾向產生清晰的三點式答案。而未經此訓練的模型可能給出長篇大論卻沒有條理。透過人類偏好,模型學會緊扣用戶需求來作答,提升實用性 (參考連結)
  • 避免不當或有害的回答:一個重要的應用是讓模型避免產生不符合道德或政策的內容,例如歧視言論、仇恨語言或危險建議。在 RLHF 訓練中,這類回覆會被人類標記為最不被接受,給予極低的獎勵甚至負獎勵。模型因而學到哪些內容是絕對不能說的。以 ChatGPT 為例,當用戶提出不當請求(如製造有害物品的方法)時,模型會拒絕回答並禮貌地解釋無法提供該要求。這正是因為 RLHF 過程中,人類反饋強化了模型的安全性與道德規範,杜絕了許多潛在的惡意輸出。
  • 提升整體滿意度:綜合而言,RLHF 讓模型更懂得何種回答會讓使用者滿意。例如在對話中何時應該道歉、遇到無法回答的問題時如何委婉拒絕,這些細節都是透過人類在訓練中給的迴響累積而成。結果就是經 RLHF 微調的 ChatGPT 明顯比純粹預訓練模型更討喜、更可靠 (參考連結)。 它不僅知識豐富,還彷彿懂人心,能做出符合人類期望的反應。對開發者而言,好處在於用戶體驗大幅提升:模型更少產生抱怨、冒犯或離題的內容,節省了後續人工作業過濾不良輸出的成本,也建立了使用者對 AI 的信任。

總而言之,RLHF 解決了「讓模型說人話」的難題,透過人類反饋這座橋梁,AI 的行為與人類價值實現對齊 (參考連結)。 在打造像 ChatGPT 這樣的對話 AI 時,RLHF 提供了關鍵的最後一哩調適,確保模型的強大能力被以合宜的方式表現出來。接下來,我們將介紹另一項重要技術—— 知識蒸餾,看看它如何解決模型的效率與部署問題,以及它與 RLHF 的差異與互補性。

什麼是知識蒸餾?大模型如何教會小模型

大型模型雖然性能卓越,但往往參數數量龐大、運算資源需求高。知識蒸餾(Knowledge Distillation)就是一種讓 「大模型把知識傳授給小模型」的技術,旨在在模型壓縮的同時保留模型的大部分智慧 (參考連結)。 可以用生活中的比喻來理解這個概念:

想像有一位非常博學但講課艱深的教授(大模型)。他知識淵博,但直接聽他的課,許多人會感到吃力。如果我們請這位教授把知識「提煉」後,教給一位助教(小模型),再由這位助教用更簡單易懂的方式把內容轉述出來,那學生們就能既掌握重點,又不需要面對繁複的細節。知識蒸餾就是這樣的過程:將一個複雜強大的模型中的知識「蒸餾」出來,傳授給一個較小、較簡單的模型,使小模型也能勝任類似的任務,但所需資源更少、效率更高。

知識蒸餾在機器學習中的角色:為何需要「大帶小」?

在人工智慧領域,經常會碰到這樣的情況:最頂尖的模型效果很好,但體積太大、速度太慢,難以在實際產品中使用 (參考連結)。 例如,一個擁有上百億參數的語言模型可能需要多張昂貴的 GPU 卡才能跑,即使效能卓越,一般手機或普通伺服器根本無法負擔。反之,小模型雖然輕快,但往往能力有限,無法達到任務所需的精度 (參考連結)。 知識蒸餾正提供了一種折衷方案:用大模型指導小模型學習,讓小模型在吸收大模型知識後,性能大幅提升,接近大模型的水準,同時保持小模型的輕量和快速 (參考連結)

簡而言之,知識蒸餾扮演模型壓縮與知識轉移的角色 (參考連結)。 它的目標不是提高原始大模型的性能,而是在不顯著犧牲精度的前提下,訓練出一個更小的模型來替代大模型 (參考連結)。 這對於模型部署非常關鍵:我們希望AI模型不僅聰明,還要 足夠精簡高效,才能以合理的成本運行 (參考連結)。 想像將 ChatGPT 這樣的模型部署到手機 App 上,如果沒有壓縮技術,是不現實的;但通過知識蒸餾,我們有機會讓手機上的小模型也擁有接近雲端大模型的能力。總結來說,我們需要知識蒸餾是因為「又大又強」的模型往往「又貴又慢」,而蒸餾可以實現「小而強」,在效能和資源之間取得平衡 (參考連結)

知識蒸餾的主要方法與原理

知識蒸餾通常採用「教師-學生模型架構」。大模型扮演教師(Teacher),小模型扮演學生(Student)。整個過程可以分成以下幾個步驟:

  1. 準備教師模型:首先,選定一個表現良好的大型教師模型。這個模型可能是已經訓練完成的(例如 OpenAI 的GPT-3或其他預訓練模型),具備我們希望學生學習的高超能力。教師模型相當於擁有完整知識的大師,在此階段不需要再改變它,只需利用它的知識輸出。
  2. 準備學生模型:接著,挑選或構建一個較小的模型作為學生模型。這個學生模型的結構可以比較簡潔、參數量較少。此時學生模型還沒有學到老師的本領,需要進行訓練。
  3. 讓學生觀察老師(蒐集「軟目標」):進入蒸餾的核心步驟:我們將大量範例輸入給教師模型,記錄它所輸出的結果。這些結果可以是老師模型對每個輸入產生的 預測機率分布(在分類任務中),或者產生的回答/文本(在生成任務中)。相對於傳統監督學習只有對或錯的標籤,老師模型的輸出包含了更豐富的信息,例如它覺得某些答案的可能性有多高。這些老師輸出的資訊就像是「軟性答案」「提示」,作為學生模型學習的目標 (參考連結)
  4. 訓練學生模型模仿老師:將上一步收集到的老師輸出作為訓練資料,餵給學生模型進行學習。我們調整學生模型的參數,讓它的輸出盡量逼近老師模型的輸出 (參考連結)。 例如,如果老師模型在看到一張貓的圖片時輸出「貓」的機率為0.8、「狗」為0.1、「其他」為0.1,那麼學生模型也被訓練得在相同圖片下輸出接近(0.8, 0.1, 0.1)的機率分布,而不只是簡單地給出「貓」這個結論。透過模仿老師的細緻預測,學生模型逐漸學到老師決策背後的模式與知識。
  5. 完成蒸餾、小模型上線:經過訓練後,學生模型已經掌握了老師模型的大部分知識。我們會對學生模型進行驗證,確保它在關鍵任務上的表現達到預期水準。最理想的情況下,學生模型的效果幾乎可以媲美老師模型,但推理速度快得多、資源佔用小得多。此時就可以使用學生模型替代老師模型去部署了。老師模型則可以在離線繼續當個知識來源,必要時再進一步蒸餾給其他模型。

透過上述過程,我們成功將一個龐然巨物般的AI模型「濃縮」成一個精幹的小模型。需要強調的是,蒸餾後的小模型雖然可能在精度上略有損失,但換來的是 數倍到數十倍的效率提升,這在實務應用中通常非常划算 (參考連結)。 例如,有研究將1.1億參數的BERT模型蒸餾成一個僅有6600萬參數的版本(DistilBERT),結果小模型的性能達到大模型的97%以上,但推理速度快了將近一倍 (參考連結)。 這證明許多冗餘的參數和計算其實是可以被壓縮的,而知識蒸餾提供了一條保留智慧、減少負擔的途徑。

知識蒸餾在 ChatGPT/LLM 上的應用價值

在大型語言模型的訓練與部署上,知識蒸餾的價值越來越受到重視 (參考連結)。 原因在於近年來頂尖的語言模型(如 GPT-3、GPT-4 等)參數動輒數百億、上千億,只有少數大公司有資源完整運行。而透過知識蒸餾,研究者和工程師可以 將這些巨無霸模型的能力轉移到較小的開源模型上,從而讓更多人得以使用強大的語言模型技術 (參考連結)。 舉例來說,Stanford 大學的 Alpaca 專案就是利用了 OpenAI 的 GPT-3.5 作為老師,來產生大批指令與回答對,然後用這些數據去微調一個只有70億參數的開源模型(LLaMA 7B)。結果這個經蒸餾/微調的小模型在許多任務上的表現令人驚豔,接近於教師模型的水準,但可以在單張顯卡上運行。這種 「由大的專有模型,造福小的開源模型」的案例充分展示了知識蒸餾在 LLM 時代的威力:讓先進能力得以下放到更平易近人的模型上。

對於像 OpenAI 這樣的企業而言,知識蒸餾也可以用來降低部署成本。即使不對外開放模型權重,他們也可能自行將自家最大的模型蒸餾出一系列較小的模型,用於不同情境:例如手機端助理使用一個小而快的模型,而雲端服務則在需要時調用大模型,或者大量請求時主要由蒸餾後的模型處理,以節省算力成本。總之,知識蒸餾為 LLM 的實用化提供了一條關鍵途徑:緊縮模型體積,保留智慧精華。這意味著更快的響應、更低的延遲,甚至有機會在離線裝置上執行先前只能雲端運算的模型。對使用者來說,這可能轉化為更便宜或免費的服務,以及更隱私安全的本地AI應用。

需要注意的是,知識蒸餾並非毫無挑戰:如何選擇蒸餾數據、調整溫度參數讓老師的「知識分布」更易學習、確保學生模型不會偏離老師太多等,都是研究熱點 (參考連結)。 但整體而言,這項技術已在影像辨識、語音辨識、NLP 等領域屢獲成功,特別是壓縮 BERT、GPT 等大型預訓練模型方面成果顯著 (參考連結)。 知識蒸餾正成為讓 AI 模型走出實驗室、進入現實世界的重要工具之一。

RLHF 與知識蒸餾的差異與互補

介紹完 RLHF 和知識蒸餾的原理後,我們來比較一下兩者,並說明它們如何相輔相成:

  • 目的不同:RLHF 著重於提高模型輸出的品質和對齊人類偏好,解決的是模型「說得對不對、合不合適」的問題。而知識蒸餾側重於縮小模型體積、提高推理效率,解決的是「模型大不大、用不用得起」的問題。一個是優化模型 行為,一個是優化模型結構。所以 RLHF 是在訓練過程中引入人類反饋調校模型,蒸餾則通常在模型訓練完成後進行壓縮。
  • 所需資源不同:RLHF 需要大量人類標註工作(比較模型輸出好壞)作為反饋信號,並使用強化學習算法進行微調。因此實施起來較為複雜,成本高昂,包括人力成本和算力成本。而知識蒸餾主要需要一個已訓練好的大模型和足夠的訓練數據讓學生模型模仿,相對來說更可自動化。換句話說,RLHF 是「人教模型」,知識蒸餾是「模型教模型」。
  • 產出模型的性質不同:經 RLHF 微調的模型通常參數量不變(甚至略增),它只是透過學習人類偏好變得「更聽話」了,但它依然是一個龐大的模型,需要相同的硬體條件運行。而經知識蒸餾的模型參數量大幅減少,占用記憶體和計算資源都更低,但是性能力求接近原模型。如果我們把原始模型比作老師,RLHF 使老師變得更善解人意、更會表達;而知識蒸餾則是培養出一個厲害的學生來替代老師完成工作。
  • 應用層面的互補:兩者其實可以搭配使用,共同打造優秀且實用的模型。實際專案中,一個可能的路徑是:先對大型模型進行 RLHF 微調,使其在回應品質和安全性上達標(得到一個「理想的大模型」),接著再用知識蒸餾將這個理想的大模型的能力轉移到一個小模型上(得到「實用的小模型」)。這樣一來,小模型既繼承了大模型經 RLHF 得來的優良品格(如禮貌、遵守規範等),又具備小模型的高效輕便,方便部署。從架構上看,RLHF 解決 效果問題,知識蒸餾解決效率問題——一內一外,使得最終系統既「好用」又「用得起」。
  • 簡而言之:RLHF 是在「教模型做好人類助手」,而知識蒸餾是在「讓大模型培養接班人」。前者關注於模型回答內容的質,後者關注模型本身的量。兩者並非互斥,而是針對不同挑戰給出的方案。隨著 AI 系統不斷進步,我們預期這兩種技術將會常常配合出現:例如未來手機上的智慧助理,背後也許是雲端用RLHF訓練出的特優模型,然後蒸餾到手機上的小模型來運行,既保持效果又保障隱私和速度。

進一步學習資源與建議

對於初學者而言,RLHF 和知識蒸餾都是相對進階但極具價值的主題。以下提供一些延伸學習的資源與建議,供您深入探索:

  • OpenAI 官方博客與論文:建議閱讀 OpenAI 發表的 InstructGPT 論文 Training language models to follow instructions with human feedback (PDF 連結) 以及 ChatGPT 相關博客文章,了解 RLHF 在真實模型中的實踐細節和效果。這些資源詳細說明了人類反饋資料如何收集、獎勵模型如何訓練等內容。
  • Hugging Face 部落格 (RLHF 技術詳解):Hugging Face 有一篇中文博客 《ChatGPT 背后的“功臣”——RLHF 技术详解》 ,對 RLHF 的原理和三階段流程做了深入淺出的講解 (參考連結)。文章還討論了 ChatGPT 使用 RLHF 的經驗,是很好的學習材料。
  • 李宏毅教授課程影片:台灣李宏毅教授在其 2024 春季生成式模型導論課程中,有專門一講介紹 RLHF(第8講),以及相關的課程筆記 (參考連結)。 他以直觀的方式解釋了為何人類反饋對模型訓練有幫助,適合具有基礎背景的讀者加深理解。
  • 知識蒸餾經典論文與博客:知識蒸餾的奠基性工作是 Hinton 等人在2015年的論文 Distilling the Knowledge in a Neural Network。您可以先閱讀一些博客摘要或解讀影片來了解其要旨。例如,IBM Developer 有篇文章 〈What is knowledge distillation?〉 對該技術做了概括介紹。另外,像 Medium、知乎上也有許多科普文章討論知識蒸餾的原理和案例,可作為參考。
  • 實作練習:如果您具有一定編程能力,可以嘗試使用開源工具實現簡單的 RLHF 或知識蒸餾流程。例如 OpenAI 的 Spinning Up 資源或 CleanRL 專案可以用於練習強化學習算法(如 PPO)的實作;Hugging Face Transformers 庫則提供了蒸餾 BERT 等模型的範例。如果能將這兩種技術動手實現一遍,將有助於鞏固您對其細節的理解。

最後,AI 的進步日新月異,建議持續關注相關領域的新研究。例如,現在已有方法嘗試用 AI 產生的反饋取代部分人類標註,或探索更高效的蒸餾策略以進一步縮小模型。希望本教學為您打下良好基礎,在未來的學習旅程中,您能更從容地掌握這些概念,並應用於實際的AI開發中。祝您學習愉快! (參考連結)

The Era of Experience 導讀

1. 研究動機與核心主張(摘要/第 1 頁) 動機 :當前主流 AI 依賴大規模「人類資料」──包括文字、程式碼與標註──透過模仿與人類偏好微調(RLHF)取得跨領域能力。然而在人類尚未涉足、或資料已枯竭的領域(如尖端數學、科學發現)出現進...