---
# System prepended metadata

title: 【生成式AI導論 2024】06~08 大型語言模型修練史
tags: [生成式AI]

---

20251029筆記 內容可能有錯誤，請參考原始影片 

[李宏毅【生成式AI導論 2024】](https://www.youtube.com/playlist?list=PLJV_el3uVTsPz6CTopeRp2L2t4aL_KgiI)

[【生成式AI導論 2024】第6講：大型語言模型修練史 — 第一階段: 自我學習，累積實力 (熟悉機器學習的同學從 15:00 開始看起即可)](https://www.youtube.com/watch?v=cCpErV7To2o&list=PLJV_el3uVTsPz6CTopeRp2L2t4aL_KgiI&index=7)
[【生成式AI導論 2024】第7講：大型語言模型修練史 — 第二階段: 名師指點，發揮潛力 (兼談對 ChatGPT 做逆向工程與 LLaMA 時代的開始)](https://www.youtube.com/watch?v=Q9cNkUPXUB8&list=PLJV_el3uVTsPz6CTopeRp2L2t4aL_KgiI&index=8)

[【生成式AI導論 2024】第8講：大型語言模型修練史 — 第三階段: 參與實戰，打磨技巧 (Reinforcement Learning from Human Feedback, RLHF)](https://www.youtube.com/watch?v=v12IKvF6Cj8&list=PLJV_el3uVTsPz6CTopeRp2L2t4aL_KgiI&index=9)



### 【生成式AI導論 2024】第6講：大型語言模型修練史 — 第一階段: 自我學習，累積實力 (熟悉機器學習的同學從 15:00 開始看起即可) 大綱


### I. 大語言模型（LLM）的基礎概念與機器學習背景
A. LLM 的核心功能：文句接龍。
B. LLM 本質：一個具有數十億個參數的函式。
C. 機器學習流程：訓練（找參數）與測試/推論（使用參數）。
D. 語言模型修煉分為三個階段。

### II. 機器學習訓練的挑戰與先驗知識
A. 挑戰一：訓練失敗（需調整超參數）。
B. 挑戰二：過度擬合（Overfitting，訓練成功但測試失敗）。
C. 克服挑戰：增加訓練資料多樣性或設定初始參數。
D. 好的初始參數被視為機器的「先驗知識」。

### III. 語言模型修煉的第一階段：預訓練 (Pre-training)
A. 目標：學習語言知識與世界知識。
B. 訓練方法：自導式學習（Self-supervised learning）。
C. 資料來源：網路上爬取的大量文字資料。
D. 資料準備：需進行過濾、去符號、品質控制及去重複資料。
E. 發展歷史：從 GPT-1 到 GPT-3 (巨大的參數和資料量)。

### IV. 預訓練的結果、限制與第二階段的需求 (Need for Phase 2)
A. 預訓練結果：模型累積了驚人的知識儲備（內功）。
B. 預訓練限制：模型「不受控」，容易答非所問或反問。
C. 限制原因：訓練資料未包含「如何回答問題」的方法。
D. 結論：需要進入第二階段，由人類指導發揮潛力。

***

### I. 大語言模型（LLM）的基礎概念與機器學習背景

*   **修煉階段**
    *   在開始討論模型訓練之前，需要回顧語言模型是如何修煉的。
    *   語言模型的修煉（學習）分成**三個階段**。
    *   所有階段的核心都是在學習**文句接龍**，只是訓練所使用的資料不同。
*   **核心功能：文字接龍**
    *   大語言模型在產生答案時，實際做的事情就是**文字接龍**，將答案中的文字一個一個產生出來。
    *   每一次語言模型會產生出一個符號，稱為 **Token**。
    *   為簡化說明，在課程中假設**一個中文字就是一個 Token**。
*   **模型本質與參數**
    *   一個語言模型其實就是一個**函式**（Function，寫作 f），輸入是一個未完成的句子，輸出是接下來可以接的 Token。
    *   要做文句接龍這件複雜的事情，顯然這個函式非常複雜，可能需要**數十億個未知的參數**才能完成任務。
    *   這個有大量未知參數的函式就叫做**模型**。
*   **機器學習流程**
    *   **訓練（Training/Learning）**：根據訓練資料，自動找出這數十億個參數的過程。
        *   訓練資料會告訴模型，當輸入一個未完成的句子時，輸出應該是哪一個 Token 才是對的（例如：「人工智」後面該接「慧」）。
        *   找到參數的過程也稱為**最佳化**（Optimization）。
    *   **測試（Testing/Inference/推論）**：將參數找出來以後，使用這組參數來做文句接龍的這件事情。

### II. 機器學習訓練的挑戰與先驗知識

*   **挑戰一：超參數與訓練失敗**
    *   在進行最佳化（找參數）之前，需要設定一些參數，稱為**超參數**（hyperparameter）。
    *   訓練過程是有**隨機性**的，不一定每次都會成功。
    *   如果訓練失敗（得出的參數不符合訓練資料的內容），常見的做法是**換一組超參數再試一次**。
    *   這也是為什麼訓練模型需要大量的**算力**，因為可能需要不斷嘗試多組超參數。
    *   大眾常說做深度學習就是**調參數**，指的其實是**調整超參數**，而非自動找出來的數十億個參數。
*   **挑戰二：過度擬合 (Overfitting)**
    *   過度擬合指的是**訓練成功，但測試失敗**的狀況。
    *   例如，一個貓狗分類器在訓練資料中，所有貓都是黑色的，所有狗都是黃色的。最佳化過程可能因此找到一組參數，認定**只要黑色的東西就叫做貓，黃色的東西就叫做狗**。
    *   當給予一張訓練時沒看過的、黃色的貓的圖片時，模型可能會錯誤輸出「狗」。
    *   機器在學習時，完全**不會思考**找出來的參數是否合理或是否能用在其他資料上；它只認訓練資料所給予的限制。
*   **尋找合理參數的方法**
    *   **增加訓練資料的多樣性**：例如加入一隻黃色的貓或黑色的狗，強迫機器不能只憑顏色來分辨動物。
    *   **設定初始參數（Initial Parameters）**：在最佳化過程開始時，必須設置初始參數。最終找出來的參數會比較可能與初始參數接近。
    *   若不知道如何設定初始參數，通常會**隨機產生**。
*   **先驗知識**
    *   如果能找到一組「比較好的」初始參數，即這些參數離我們所要的合理參數比較接近，從這組參數開始進行最佳化，最終結果就更有可能是我們想要的。
    *   這種好的參數可以想成是我們給予模型的**先驗知識**，即在學習之前就已經具備的知識或能力。

### III. 語言模型修煉的第一階段：預訓練 (Pre-training)

*   **知識目標**
    *   要正確接出一個 Token，語言模型需要兩方面的知識：
        1.  **語言知識**：對人類語言的文法有正確的了解。根據文獻，也許約有**一億個詞彙**的資料量就足以讓模型學會語言知識。
        2.  **世界知識**：需要對世界有所理解，例如對物理（如水的沸點）或人類社會的理解。
    *   學習世界知識非常困難且有層次。例如，水的沸點在不同氣壓下會改變。即使是 2020 年的論文發現，收集了 **300 億個文字**（詞彙），看起來也**不夠**讓模型學會世界知識。
*   **訓練方法：自監督式學習 (Self-supervised learning)**
    *   任何文字資料都可以拿來教語言模型做文句接龍。
    *   最常使用的資料來源是**網路上爬取的大量文字資料**，可以說是「要多少就有多少」。
    *   從網頁上爬取句子供模型學習，例如「人工智慧真神奇」可以產生多組問答配對（如「人工智」後面接「慧」）。
    *   這種只需要**非常少人工介入**就可以取得訓練資料的學習方式，稱為**自監督式學習**（Self-supervised learning），即機器自己教自己。
*   **資料清理（人工介入）**
    *   雖然介入少，但仍需要少許人工處理。以 Gopher 模型為例，資料處理步驟包括：
        1.  **過濾**有害內容：如色情、暴力的內容，以避免模型講出這些話。
        2.  **去除非必要符號**：例如去除 HTML 符號，但會保留有用的符號，如表情符號。
        3.  **品質控制**：去除低品質資料。高品質資料通常被認為是像**維基百科或教科書**裡面的句子。開發團隊會訓練一個分類器來決定資料品質。
        4.  **去重**：去除重複的資料。例如，某個婚禮公司的業配段落曾在網路上重複了 **6 萬多次**，若不去除，模型會動不動就幫該公司業配。
*   **歷史發展（GPT 系列）**
    *   Open AI 早在 2018 年就釋出了第一代 **GPT-1**，只有 1.17 億個參數（在當時也不是特別大的模型）。
    *   **GPT-2** (2019) 增大至 **15 億個參數**，使用了 40GB 的資料。但當時的 GPT-2 在回答問題的正確率（約 55%）方面並非特別厲害。
    *   **GPT-3** (2020) 達到 GPT-2 的 100 倍大，具有 **1750 億個參數**。
        *   GPT-3 的訓練資料量非常驚人，有 580GB 的文字量，大約是 **3000 億個 Token**。
        *   這相當於閱讀**《哈利波特全集》30 萬遍**。
    *   參數量代表模型的**複雜程度**（天資），而資料量代表**後天努力**。

### IV. 預訓練的結果、限制與第二階段的需求 (Need for Phase 2)

*   **預訓練的結果**
    *   雖然使用了巨大的資料量進行訓練，但 GPT-3 在回答問題的正確率上，即使達到最大尺寸，也只提高了幾個百分點而已。
    *   當年的許多人認為 Open AI 走錯了方向，懷疑文句接龍是否真的能接出人工智慧。
*   **預訓練模型的行為與限制**
    *   像 GPT-3 這樣的模型，使用起來的感覺是**一言難盡、非常不受控**。
    *   有時模型能夠回答問題，但有時卻會**反問**使用者，或者在回答完後又**自問自答**，產生新的問題與答案。
    *   例如，Google 的 PaLM 模型（比 GPT-3 大三倍）也被問了一個數學問題後，反問了更多的數學問題。
    *   在當年，使用 GPT-3 時，**Prompt 的格式（Template）非常重要**，它會大幅影響模型的能力。
*   **限制的根本原因**
    *   模型的不受控是因為**沒有被教導如何回答問題**。
    *   模型的一切知識都來自網路上爬取的資料。在網頁上，一個問題（例如「台灣最高的山是哪座山？」）後面接的可能是「三個選項」或「請留言」，機器並不知道要如何直接輸出答案。
    *   第一階段的自我學習後，模型雖然累積了內功（知識儲備），但**不知道使用的方法**，無法將所學的內功使用出來。
*   **第二階段的需求**
    *   因此，接下來需要**第二階段**，由**人類指導**這些語言模型，讓它們能夠發揮真正的潛力。

### 生成式AI導論 2024】第7講：大型語言模型修練史 — 第二階段: 名師指點，發揮潛力 (兼談對 ChatGPT 做逆向工程與 LLaMA 時代的開始) 大綱

### I. 語言模型修煉的第二階段：指令微調 (Instruction Fine-tuning)
A. 目的：接受人類指導，發揮潛力。
B. 訓練方法：監督式學習（Supervised learning）。

### II. 訓練資料格式與基礎機制
A. 教材需求：問題與正確答案的配對。
B. 資料標註：耗費大量人力。
C. 關鍵標註：區分使用者（User）和 AI 的輸入。
D. 挑戰：只靠人類標註資料的限制。

### III. 微調的成功關鍵：預訓練（Pre-training）參數的妙用
A. 本質：微調（Fine-tuning）是微小調整第一階段的參數。
B. 優勢：預訓練參數能提供複雜的規則和舉一反三的能力。
C. 技術優化：Adapter/LoRA 確保參數近似並減少運算量。

### IV. 指令微調的路線與資料品質
A. 訓練路線：專才路線 vs. 通才路線。
B. 通才模型：FLAN 與 InstructGPT 的發展。
C. 資料要求：**品質重於數量**（Quality is all you need）。
D. Open AI 的優勢：使用真實使用者數據。

### V. 模型的普及與生態解放
A. 數據獲取：對 ChatGPT 進行逆向工程（Self-Instruct）。
B. 生態瓶頸：缺乏 Pre-trained 參數導致世界停滯。
C. LLaMA 的解放：Meta 釋出 LLaMA 參數，人人可 Fine-tuning。

***


### I. 語言模型修煉的第二階段：指令微調 (Instruction Fine-tuning)

*   **階段目標：發揮潛力與接受教導**
    *   在第一階段（預訓練）中，語言模型已經累積了實力（內功），但**不知道使用的方**法。
    *   在第二階段，模型的目標是**接受人類老師的教導**，發揮其潛力。
*   **訓練方式：監督式學習**
    *   人類老師需要準備教材，即**人類可能問的問題**與針對每個問題的**正確答案**。
    *   這個訓練過程稱為 **Instruction Fine-tuning**（指令微調）。
    *   「Instruction」指的是人類老師提供了**指令**，機器將學習**按著指令做出正確的回應**。
    *   由於訓練資料是透過人類耗費大量人力產生的（稱為**資料標註**），因此這個訓練過程被稱為**監督式學習**（Supervised learning）。

### II. 訓練資料格式與標註的重要性

*   **訓練資料格式**
    *   訓練資料需要被轉換成模型可以進行文句接龍的格式。
    *   例如，若問題是「台灣最高的山是哪座？」，答案是「玉山」。
        *   當輸入是「使用者：台灣最高的山是哪座？AI：」時，模型接下要接「玉」。
        *   當輸入是「使用者：台灣最高的山是哪座？AI：玉山」時，後面就要接**結束的符號**。
*   **關鍵標註：User 與 AI 符號**
    *   在輸入資料中，必須特別標註**哪個部分是使用者講的**（User），以及**哪個部分是 AI 講的**。
    *   **重要性**：如果沒有這些標註符號，模型將會遭遇歧義。
        *   例如，句子「台灣最高的山是哪座？玉山」可能是：使用者發問，AI 回答「玉山」，此時應輸出結束符號。
        *   但也可能是：使用者自問自答「台灣最高的山是哪座？玉山」，AI 尚未說話，此時 AI 的輸出可以是「對」（代表贊同人類的想法）。
    *   在我們使用 **ChatGPT 的 Web 介面**時，當它進行文句接龍來輸出答案時，**很有可能**也隱藏著代表 User 和 GPT 的符號。

### III. 預訓練（Pre-training）參數的妙用與 Fine-tuning 的本質

*   **僅靠人類標註的限制**
    *   如果**只靠人類老師的教學**（即使收集到上百萬筆人與人之間的對話），模型提供的標註資料仍是**非常有限的**。
    *   模型仍然會顯得**非常無知，且容易答非所問**。
    *   機器在學習時，可能只會找到**不合理的簡單規則**來滿足訓練資料的要求。例如，訓練資料中只有「台灣**最**高的山是玉山」，機器可能學到的規則是：**只要看到「最」這個字，輸出就是「玉山」**。
    *   如果模型只學到這個簡單規則，當問「世界**最**深的海溝在哪裡」時，它很可能也會回答「玉山」。
    *   過去的語音助理也曾遇到類似問題，聽到「打開音樂」就執行，聽到「**不要**打開音樂」也執行。
*   **成功的關鍵：使用預訓練參數**
    *   要避免模型找到不合理的參數，需要提供一組**較好的初始參數**。
    *   這些好的初始參數就是**第一階段透過網路上大量文字資料學出來的那組參數**（例如有點笨的 GPT-3 或 PaLM 的參數）。
    *   使用第一階段的參數作為第二階段的初始參數，是這些大型模型成功的關鍵。
    *   由於最終找出的參數不會與初始參數相差太遠，這個步驟被稱為 **Fine-tuning**（**微調**），代表第二階段只是對第一階段參數的微小調整。
    *   **Pre-training** 是指透過網路爬取資料學習的過程。
*   **預訓練參數的優勢：複雜規則與舉一反三**
    *   第一階段的參數是好的初始參數，因為模型在預訓練時看過**非常大量的資料**，學到了**非常複雜的規則**。
    *   因為學到的是複雜規則，模型不會簡單地學到「看到最後面就接玉山」。
    *   當預訓練參數被拿來做初始參數，可以確保在最佳化過程中，最終找到的參數**不會是沒道理的參數**。
    *   模型會獲得很好的**舉一反三的能力**（Generalization/Few-shot learning）。
        *   *例如*：即使 Instruction Fine-tuning 只告訴它「台灣最高的山是玉山」，但因為模型在預訓練時已經知道世界知識，它很可能會**自然地**學會回答「世界最高的山是聖母峰」。
        *   *誇張的例子*：多語言版本的 BERT（曾在 104 種語言上做過 Pre-training）。如果你只教它**英文**的閱讀能力測驗，它會**自動學會中文**的閱讀能力測驗。實驗顯示，這種方法在中文測驗上的準確率（約 78%）與直接用中文資料訓練的準確率（89%）是相差不多的。

### IV. 技術優化、訓練路線與資料品質要求

*   **參數優化技術：Adapter 與 LoRA**
    *   如果擔心最佳化過程找出來的參數與初始參數差異太大，可以使用 **Adapter** 這個技巧。
    *   **LoRA** 是 Adapter 的其中一種。
    *   Adapter 的概念是**保持初始參數完全不動**。在原有的函式後面**多加幾項新的未知數**，但其數量遠小於初始參數。
    *   最佳化過程只尋找並優化這些新加進來的未知數。
    *   這樣可以確保新的參數與初始參數**非常類似**，同時也能**減少所需的運算量**，這對於運算資源有限的訓練非常重要。
*   **訓練路線：專才 vs. 通才**
    *   **專才路線（Specialists）**：為每個任務（如翻譯、編修）分別打造一個模型。
        *   例如：一個翻譯專才只會做翻譯，你跟它說 "How are you?"，它回答「你好嗎？」，但不會認為這句話有文法錯誤。
        *   BERT 模型走的通常是專才路線。
    *   **通才路線（Generalists）**：將所有想讓模型做的任務（如翻譯、編修、摘要）的標註資料集合起來，訓練一個通用的模型。
        *   期望通才不僅能回答教過的任務，還能對任務的變形（如「請把這篇文章做摘要，並且翻譯」）也能回答。
        *   Google 的 **FLAN** (Fune Language Net) 和 Open AI 的 **InstructGPT** 走的都是通才路線。
    *   **通才模型的優勢**：Google 研究發現，FLAN 模型在訓練時**沒看過的新任務**上，表現超過了原始的 GPT-3。而且，無論模型大小，隨著 Instruction Fine-tuning 訓練的任務越多（甚至多達 1800 個任務），在沒看過的任務上表現就越好。
*   **資料量要求：品質重於數量**
    *   InstructGPT 論文揭示，Instruction Fine-tuning 是**畫龍點睛**，**不需要大量資料**。
    *   InstructGPT 只用了**上萬筆**資料進行微調。
    *   **LLaMA 2** 論文指出，他們只用了 **27,000 筆資料**，強調**品質重於數量**（Quality is all you need），因為上百萬筆資料其實沒什麼用。
    *   **Lima** 模型更只使用了 **1,000 筆資料**，但在 43% 的情況下可與 GPT-4 打平或超越。
*   **Open AI 資料的優勢**
    *   InstructGPT 的結果顯示，它比 Google 的 FLAN 更好。
    *   原因是 FLAN 的資料來源是將自然語言處理（NLP）資料集透過**研究人員定好的模版**轉化成一問一答的資料，這些問題**非常死板**，可能與人類真實使用情境有差距。
    *   Open AI 因為有線上的服務，他們有**真實使用者的數據**（使用者會問的千變萬化的問題），並讓數據標記員給出正確答案，因此他們的問答資料更貼近實際使用情境。

### V. 模型的普及與生態解放

*   **克服資料稀缺：逆向工程**
    *   對於沒有 Open AI 線上系統的人來說，缺乏高品質的 Instruction Fine-tuning 資料。
    *   解決方案是**以 ChatGPT 為師**，對其做**逆向工程**。
    *   此方法稱為 **Self-Instruct**：
        1.  先問 GPT 可以做什麼任務（如寫郵件、寫摘要）。
        2.  接著讓 GPT 想像使用者在執行這些任務時可能會有什麼樣的**輸入**（問題）。
        3.  最後，將這些幻想出來的問題再問 GPT，讓 GPT 輸出**答案**。
    *   透過逆向工程取得的資料品質可能不是最優質的，但總比完全沒有資料要好。
    *   （*請注意*：Open AI 的使用條款規定，不可以使用 GPT 產生的資料來打造一個與 AI 有競爭關係的模型。）
*   **LLaMA 的解放與生態系的誕生**
    *   在 **Meta 釋出 LLaMA** 之前，整個世界都卡住了，因為公眾沒有 Open AI 的 GPT-3 或 Google 的 PaLM 等 Pre-trained 參數可用。
    *   LLaMA 的出現解放了整個生態系，公眾可以將 LLaMA 作為**初始參數**來打造自己的模型。
    *   在 LLaMA 於 2023 年 2 月底釋出後：
        *   兩週後，史丹福大學基於 LLaMA 和從 ChatGPT API 爬取的 **5 萬筆資料**，訓練出了 **Alpaca**。
        *   又過了兩週，其他學術團隊取得了 **7 萬筆人與 ChatGPT 對話的資料**，基於 LLaMA 訓練出了 **Vicuna**。
    *   這使得「舊時王謝堂前燕，飛入尋常百姓家」，**人人都可以微調大型語言模型的時代**正式開始。

### 【生成式AI導論 2024】第8講：大型語言模型修練史 — 第三階段: 參與實戰，打磨技巧 (Reinforcement Learning from Human Feedback, RLHF)大綱


### I. 語言模型修煉的第三階段：RLHF (Reinforcement Learning from Human Feedback)
A. 核心目的：讓模型在實戰中打磨技巧，與使用者互動。
B. 學習機制：增強式學習（RL），訓練訊號是答案的**優劣排序**。
C. 關鍵算法：PPO (Policy Optimization)。

### II. 第三階段與前兩階段的比較
A. 資料格式差異：Phase 1/2 提供輸入與正確輸出（下一 Token）；Phase 3 提供答案的**相對回饋**（優於/劣於）。
B. 人類介入：
    1. Phase 2 (Instruction Fine-tuning): 辛苦，需提供**正確答案**。
    2. Phase 3 (RLHF): 輕鬆，只需**判斷/排序**模型產生的答案的好壞。
C. 學習焦點：
    1. Phase 1/2: **只問過程**（如何接下一個字），缺乏整體考量。
    2. Phase 3: **只問結果**（完整答案的好壞），進行通盤考量。

### III. 應用與挑戰：AlphaGo 類比與 Reward Model
A. AlphaGo 類比：RLHF 相似於 AlphaGo 的 RL 階段，但 LLM 缺乏明確的輸贏規則。
B. 克服回饋限制：訓練**回饋模型（Reward Model, RM）**，作為虛擬的人類導師。
C. RM 應用：讓語言模型直接與 RM 學習，提升生成機率。
D. 風險與副作用：過度與虛擬人類學習（RM）可能導致**真實人類喜好下降**（Over-optimization）。

### IV. 未來趨勢與本質難題
A. 趨勢：開發不依賴 RM 的新算法（如 DPO, KTO）。
B. AI 輔助：由強大的 AI（如 GPT-4）來評估其他模型的輸出（RAI/Self-rewarding）。
C. 本質難題：「好」的定義不標準。
D. 挑戰：模型須平衡 **Safety** (安全性) 與 **Helpfulness** (有幫助性)。

### V. 總結與對齊 (Alignment)
A. 訓練三階段：Pre-training $\rightarrow$ Instruction Fine-tuning $\rightarrow$ RLHF。
B. Foundation Model：Pre-training 得到的基礎模型。
C. Alignment：後兩個階段（Instruction Fine-tuning 與 RLHF）旨在**對齊**人類的偏好和需求。

***


### I. 語言模型修煉的第三階段：RLHF (Reinforcement Learning from Human Feedback)

*   **階段名稱與目標**
    *   第三階段稱為 **Reinforcement Learning from Human Feedback**，簡稱 **RLHF**。
    *   目標是讓模型真正地與**使用者互動**，並在**實戰中打磨**自己的技巧。
*   **使用者回饋機制**
    *   使用者在使用模型（例如 ChatGPT 的網頁介面）時，可以提供回饋。
    *   例如，當模型生成一個答案後，如果不滿意，使用者可以按鈕要求**重新生成**新的答案。
    *   模型會詢問使用者：新的答案與舊的答案相比，是**比較好、比較差，還是差不多**。
    *   使用者提供此類資訊即為語言模型提供回饋。模型會收集足夠的回饋後，對其參數進行微調。
*   **學習機制：增強式學習 (RL)**
    *   第三階段的訓練資料樣貌與第一、第二階段**非常不同**。
    *   在 RLHF 中，機器沒有被明確告知接下來應該產生哪一個 Token。
    *   機器得到的學習訊號是**某一個完整的答案優於另外一個答案**。
    *   這種透過回饋資訊進行學習的方法稱為 **Reinforcement Learning (RL)**，中文翻譯為**增強式學習**。
*   **微調目標**
    *   RL 的概念是：當有人告訴語言模型**某一個答案比另外一個答案好**時，模型會微調其參數。
    *   微調的目標是：**提高**人覺得好的答案產生的機率，**降低**人覺得不好的答案產生的機率。
    *   ChatGPT 在做 RLHF 時微調參數的演算法稱為 **PPO**。

### II. RLHF 與 Instruction Fine-tuning (Phase 2) 的比較

*   **訓練資料格式比較**
    *   第一階段（Pre-training）和第二階段（Instruction Fine-tuning）的資料格式非常類似，都是提供模型**輸入**以及下一步做文句接龍時**應有的輸出**。第二階段的輸出是由人提供的，故稱為監督式學習（Supervised learning）。
    *   第三階段的資料是**答案之間的相對優劣判斷**。
*   **人類介入的難度比較**
    *   **Instruction Fine-tuning (Phase 2)**：人類比較辛苦，因為需要**想出問題並提供正確的答案**。
    *   **RLHF (Phase 3)**：人類比較輕鬆，**不需要提供正確答案**，只需對模型產生的兩個答案進行判斷，決定哪一個比較好。
*   **判斷優於編寫**
    *   在許多情況下，人類要寫出**正確的答案**（例如一首讚揚語言模型的七言絕句）並不容易。
    *   但是，要**判斷**哪一個模型生成的答案比較好，相對容易很多。例如，模型生成的第一首詩不符合七言絕句的格式，人類可以立刻判斷第二首更好。
*   **模型學習焦點的差異**
    *   **Phase 2 (Instruction Fine-tuning)**：模型只學一件事，即「怎麼接下一個字」。它隱含的假設是：假設每一步文句接龍都接對了，最終結果就會是好的。因此，模型對生成結果**沒有通盤的考量**。
    *   **Phase 3 (RLHF)**：模型得到的訊號是**某一個完整的答案**優於另一個完整的答案。因此，模型會進入新的思考模式，知道最重要的是**最終生成的完整結果**，而非中間接龍的每一步做得怎麼樣。
    *   **一句話概括**：Instruction Fine-tuning 是「**只問過程，不問結果**」；RLHF 是「**只問結果，不問過程**」。

### III. AlphaGo 的類比與 Reward Model 的引入

*   **與下圍棋的類比**
    *   LLM 進行文句接龍（生成下一個 Token）與 AlphaGo 根據棋局決定下一落子位置，兩者有異曲同工之妙。
    *   LLM 和圍棋整體來看都是**生成式學習**（Generative Learning），但細拆每一步都是**分類的問題**（Classification）。
    *   AlphaGo 的學習階段與 LLM 相似：
        1.  **AlphaGo Phase 1/2**：跟著**棋譜**學習（看人類下哪裡就跟著下哪裡） $\leftrightarrow$ LLM Phase 1/2（人類老師說什麼，模型就跟著說什麼）。
        2.  **AlphaGo Phase 3 (RL)**：透過下完一局的輸贏結果（正面/負面回饋）來提高或降低產生特定棋步的機率。
*   **回饋機制的主要差異**
    *   **圍棋**：輸贏有**明確的標準答案**和既定的規則。輸贏的回饋可以**直接從規則獲得**，幾乎不需人為介入。
    *   **語言模型**：一句話或一個回答的**好壞是不明確的**，沒有標準答案。因此，語言模型的 RLHF 訓練通常需要人類對**多個答案**的好壞進行**排序或評比**，而不是對單一答案直接判斷好或不好。
    *   **介入程度**：圍棋的 RL 可以讓機器自己跟自己下。語言模型則**需要人類介入**來評斷句子的優劣。
*   **克服人手不足：引入回饋模型（Reward Model, RM）**
    *   由於人類的時間精力有限，能提供的回饋很少。
    *   為最大化人類回饋的效用，可以使用人類的回饋去創造一個**虛擬的人類**，稱為**回饋模型（Reward Model, RM）**。
    *   **RM 訓練方式**：使用有限的人類回饋資料（例如：答案 A 比答案 B 好）來訓練 RM。
        *   RM 吃一個問題跟答案，會輸出一個**分數**。
        *   訓練目標是確保如果人類認為答案 A 比答案 B 好，則 RM 給予答案 A 的分數要**大於**答案 B 的分數。
*   **RM 的利用方式**
    *   **方式一（評分篩選）**：語言模型產生多個答案（例如 64 個），讓 RM 評分，最終只給人類展示**分數最高的答案**。
    *   **方式二（直接學習，更常見）**：語言模型可以直接對 RM 的輸出進行學習。RM 給予**高分**，模型就微調參數**提高**該答案出現機率；RM 給予**低分**，模型就**降低**該答案出現機率。
    *   有了 RM 之後，語言模型**不一定需要再跟真正的人類學習**，可以只跟虛擬的人類（RM）學習。

### IV. RLHF 的效果、風險與未來方向

*   **RLHF 的效果**
    *   有做 RLHF 的模型（透過 RM 學習）會比只做 SFT（第二階段 Instruction Fine-tuning）的模型更好。
    *   實驗結果顯示，無論模型大小，RLHF 都非常有效。
    *   即使是最小的 **1.3B 參數模型**，透過 RLHF **有機會打敗**沒有 RLHF 的最大模型（如 175B 參數模型）。
    *   這顯示人類老師的教學（Instruction Fine-tuning 和 RLHF）是**非常關鍵**的。
*   **風險：過度學習的危害**
    *   過度跟虛擬人類（RM）學習**是有害的**。
    *   如果跟虛擬人類學習太多，RM 雖然會認為模型越好，但**真實人類的喜好程度其實會下降**。
    *   **後果**：模型可能學到奇怪的特徵，例如在摘要結尾寫 "pls."，或在內容中包含三個問號。
    *   **ChatGPT 的可能後遺症**：ChatGPT 某些不盡如人意的表現，可能就是**跟虛擬老師學過頭**的結果。例如，講話非常饒舌（喜歡條列式 1. 2. 3. 4. 5. 最後用 Overall 結尾）、過度道歉、開頭太常使用 "As an AI model"、講話模稜兩可，或太常拒絕人類請求。
*   **未來趨勢與技術**
    *   **非 RM 算法**：許多人試圖開發**不需要虛擬老師**的新演算法，例如 **DPO** (在作業中會實際使用到的方法) 或 **KTO**。這些方法的有效性尚待時間和實驗結果驗證。
    *   **AI 回饋 (RAI)**：當 AI 能力更強之後，未來或許可以做 **RLAI** (由 AI 提供回饋)。
        *   可以讓強大的模型（如 GPT-4）扮演人類來評估其他模型的輸出。
        *   甚至可以讓**同一個語言模型**自己給自己提供回饋，因為語言模型有**反省的能力**，即使不能產生好的答案，也不代表它沒有評估答案優劣的能力。
        *   Meta 的 **Self-rewarding model** 也使用了類似的概念。

### V. RLHF 的本質難題與總結

*   **「好」的定義不明確**
    *   增強式學習有一個本質上的難題：**什麼叫做「好」是沒有標準答案的**。
    *   例如，當使用者詢問如何製作火藥時，模型回答「我不能教你，這太危險了」。
        *   從**安全性**（Safety）的角度看，這是個好的答案。
        *   但從**有幫助性**（Helpfulness）的角度看，模型拒絕了請求，這不是一個好的答案。
*   **多重評估模型**
    *   LLAMA 的論文訓練了兩個 RM：一個是 **Safety Reward Model**，另一個是 **Helpfulness Reward Model**。
    *   挑戰在於，當這兩個模型的評分衝突時，**哪一項比較重要**（安全性還是有幫助性）是一個見仁見智的問題。
    *   不同的模型對於安全的**標準**也不同，例如 GPT-4 願意教做橡皮槍，而 Cloud 則完全拒絕。
*   **人類知識的限制**
    *   另一個難題是，如果未來 LLM 厲害到需要面對連**人類自己都無法正確判斷好壞**的問題（例如：該念博班還是工作），則人類提供的回饋很可能基於自身的**偏狹偏見**，將模型引導到不正確的方向上。
*   **總結訓練三階段**
    *   **階段一 (Pre-training)**：得到一個基礎模型（Foundation Model），它是接下來訓練的基礎。
    *   **階段二 (Instruction Fine-tuning)** 與 **階段三 (RLHF)**：這兩個階段統稱為 **Alignment**（**對齊**），目標是讓模型對齊人類的偏好和需求。

---
其他課程:

[【生成式AI導論 2024】00~02 生成式AI介紹](https://hackmd.io/@JuitingChen/ByiS0S_Aex)
[【生成式AI導論 2024】03~05 訓練不了人工智慧？你可以訓練你自己](https://hackmd.io/@JuitingChen/SJZdX5KAlx)
[【生成式AI導論 2024】06~08 大型語言模型修練史](https://hackmd.io/@JuitingChen/H1vfEqYCee)
[【生成式AI導論 2024】09~11 AI Agent、Transfoermer、可解釋性](https://hackmd.io/@JuitingChen/BybEB9KRxx)
[【生成式AI導論 2024】12~14 淺談檢定大型語言模型能力和大型語言模型相關的安全性議題](https://hackmd.io/@JuitingChen/ByyxUcY0le)
[【生成式AI導論 2024】15~16 生成式人工智慧的生成策略 和 Speculative Decoding](https://hackmd.io/@JuitingChen/H1sW_mfJZg)
[【生成式AI導論 2024】17~18 有關影像的生成式AI 和 GPT-4o 可能的語音技術](https://hackmd.io/@JuitingChen/S1uFKmG1Zx)