課程來源: 台大李宏毅《生成式人工智慧與機器學習導論》2025 Fall 第8講
影片連結: YouTube(約 2 小時)
投影片: Post.pdf
#一、這堂課在講什麼?
上一講講完模型「怎麼被訓練出來」(Pre-training → SFT → RLHF),這堂課講的是:
模型釋出之後,怎麼繼續學習新技能、更新知識?
這稱為:
- 後訓練(Post-training)
- 持續學習(Continual Learning)
- 終身學習(Lifelong Learning)
重點是:真正更新模型參數,而不只是靠 Prompt。
#二、為什麼需要持續學習?四種場景
通用模型即使經過大規模預訓練,仍然需要持續學習來應對以下四種情況:
| 場景 | 說明 | 例子 |
|---|---|---|
| 新知識(New Knowledge) | 世界不斷變化,模型需要學習最新事實 | 2024 年問「現任美國總統」答「拜登」;2025 年應答「川普」 |
| 新技能(New Skills) | 模型需要掌握原本不具備的能力 | 學習注音符号(ㄅㄆㄇㄈ)輸入 |
| 新概念(New Concepts) | 修正或更新模型的價值觀與行為準則 | 從「一律建議分手」學會「好好溝通」 |
| 遺忘(Machine Unlearning) | 讓模型「忘記」特定知識或能力 | GDPR「被遺忘權」、去除有害內容 |
#三、後訓練的優先級原則
⚠️ 核心原則:最好的後訓練,就是不要後訓練。
後訓練(修改模型參數)是有風險的方法,應該是迫不得已的最後選擇。在考慮後訓練之前,應該優先嘗試:
- 上下文工程(In-context Learning)——用 Prompt 引導模型
- 強化學習(RL)——如 RLHF 等方法
- 檢索增強生成(RAG)——結合外部知識庫
只有當上述不修改參數的方法都無法解決問題時,才考慮使用後訓練。
#四、後訓練的三大評估目標
一個好的後訓練方法,理想上要同時滿足:
- Reliability(可靠性):新能力要學得夠好
- Generality(通用性):新能力可以遷移到類似任務
- Locality(局部性):只改該改的地方,不破壞原本能力(避免災難性遺忘)
#五、四種主要技術
#5.1 Fine-tuning(微調)
- 最直覺的方法:用 Gradient Descent 直接更新參數
- 最大問題:容易發生災難性遺忘(學了新的,忘了舊的)
災難性遺忘的緩解方法
課程中提到以下幾種實務策略:
| 方法 | 做法 | 優點 | 缺點 |
|---|---|---|---|
| Experience Replay | 微調時混入少量舊訓練資料,讓模型一邊學新的一邊「複習」舊知識 | 簡單有效,Llama 2 等模型都用這個策略 | 需要保留舊資料 |
| LoRA(參數高效微調) | 不改原模型參數 ,在旁邊加小的低秩矩陣 ,只訓練小矩陣。原知識「鎖死」在 裡 | 顯存需求低,可隨時卸載不影響原模型 | 表達能力有限,複雜任務可能不夠 |
| 正則化(Regularization) | 在 Loss 加約束項,限制參數偏離原始值: | 不需舊資料 | λ 需調參,太大則學不動新東西 |
| 選擇性微調 | 只微調跟新任務最相關的幾層,前面的層保持不動 | 減少破壞範圍 | 需要判斷哪些層相關 |
💡 實務建議:資源有限時,LoRA + Experience Replay 是性價比最高的組合。
三種訓練資料格式
| 格式 | 說明 | 範例 |
|---|---|---|
| Pre-train Style | 直接陳述事實 | 「魯夫吃的惡魔果實是人人果實幻獸種尼卡型態」 |
| SFT Style | 問答對形式 | Input: 「魯夫吃了什麼惡魔果實?」 Output: 「尼卡果實」 |
| RL Style | 偏好排序 | 對「橡膠果實」打 👎,對「尼卡果實」打 👍 |
#5.2 Model Editing(模型編輯)
- 目標:精準修改「特定知識」,盡量不影響其他部分
- 像是對模型做「微創手術」
- 代表方法:ROME 等
- 適合「只想改一個事實」的情況(例如把某個人的出生地改掉)
#5.3 Model Merging(模型合併)
- 不需要訓練資料,直接對參數做加減運算
- 前提條件:所有參與合併的模型必須從同一個基礎模型微調而來
核心概念:Task Vector(任務向量)
定義:微調後模型參數與原始基礎模型參數的差值
這個向量 可以理解為模型在微調過程中學到的特定「技能」的數學表示。
📄 開創性論文:Editing Models with Task Arithmetic(Ilharco et al., 2022, ICLR 2023)
Task Vector 的三大妙用
| 運算 | 公式 | 用途 | 範例 |
|---|---|---|---|
| 加法(Addition) | 融合多個能力 | 把「安全對齊」和「中文能力」加到 Llama 3 上 | |
| 負向(Negation) | 移除不需要的能力(機器遺忘) | 從 GPT-2 中移除「生成有毒內容」的能力 | |
| 類比(Analogy) | 無中生有創造新能力 | 「A 之於 B 如 C 之於 D」,用三個已知任務推第四個 |
加法案例:安全對齊 + 中文能力
課程中舉了一個實際案例:
- 計算「安全對齊」任務向量:
- 計算「中文能力」任務向量:
- 合併:
如果直接用中文資料微調 Llama-3-Instruct,會導致安全對齊能力大幅下降(災難性遺忘)。用 Task Vector 加法可以避免這個問題。
為什麼有效?正交性(Orthogonality)
不同任務的 Task Vector 在高維參數空間中幾乎正交(夾角接近 90°),所以多個任務向量相加時,彼此不會互相干擾。
此外,Task Vector 相加的效果與**輸出層做 Ensemble(加權平均 Logits)**非常接近,實驗顯示兩者的準確率相關係數高達 0.99。
其他合併方法
課程還提到以下改進方法,解決 Task Vector 之間的干擾問題:
| 方法 | 論文 | 核心思路 |
|---|---|---|
| Model Soups | Wortsman et al., 2022 | 多個模型參數取平均,不增加推理時間 |
| TIES-Merging | Yadav et al., 2023 | 解決 Task Vector 之間的參數衝突(符號相反的參數互相抵消) |
| DARE | Yu et al., 2023 | 隨機丟棄 Task Vector 中的冗餘參數,只保留重要的 |
優缺點
- 優點:快速、不需再訓練、可組合多個模型能力
- 缺點:不是所有任務都能完美合併;當任務之間正交性不足時效果會下降
💡 未來願景:課程最後提到「任務向量商店」的概念——未來可能像 App Store 一樣,大家可以下載和組合不同的 Task Vector,打造客製化模型。
#5.4 Test-Time Training(TTT,測試時訓練)
- 這堂課的新內容
- 在「推論的當下」根據當前輸入,臨時微調模型參數
- 用完可以丟掉,不永久改變模型
- 不需要標籤,常用方法是最小化輸出的 Entropy(讓預測更集中)
- 應用範例:語音辨識中,針對當前這句話現場微調,提升辨識率
- 進階版:Continuous TTT(持續進行測試時訓練)
#六、技術對照表
| 方法 | 是否永久改參數 | 需要訓練資料 | 主要優點 | 主要缺點 |
|---|---|---|---|---|
| Fine-tuning | 是 | 需要 | 效果直接 | 容易災難性遺忘 |
| Model Editing | 是 | 少量 | 精準修改特定知識 | 只能改局部事實 |
| Model Merging | 是 | 不需要 | 快速組合能力、可做遺忘 | 任務相容性有限制 |
| Test-Time Training | 臨時 | 通常不需要 | 針對當前輸入客製化、靈活 | 推論時多一次計算成本 |
#七、核心觀點
- 通用模型釋出後,學習並沒有結束,還可以持續進化。
- 最怕的是「學了新的、忘了舊的」(災難性遺忘)。
- 不同需求要用不同工具:
- 想大幅改變行為 → Fine-tuning
- 只想改一個知識點 → Model Editing
- 想組合多個模型能力 → Model Merging
- 想針對當下輸入即時適應 → Test-Time Training
#八、總結
這堂課講的是「模型出社會後怎麼繼續學習」的四種方法,從最傳統的微調,到精準編輯、參數合併,再到推論當下的即時訓練。