Generative AI·生成式 AI·

🔄 通用模型的終身學習:Fine-tuning、Model Editing、Merging 與 Test-Time Training

#終身學習#Model Editing#Model Merging#Test-Time Training#李宏毅

課程來源: 台大李宏毅《生成式人工智慧與機器學習導論》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「被遺忘權」、去除有害內容

#三、後訓練的優先級原則

⚠️ 核心原則:最好的後訓練,就是不要後訓練。

後訓練(修改模型參數)是有風險的方法,應該是迫不得已的最後選擇。在考慮後訓練之前,應該優先嘗試:

  1. 上下文工程(In-context Learning)——用 Prompt 引導模型
  2. 強化學習(RL)——如 RLHF 等方法
  3. 檢索增強生成(RAG)——結合外部知識庫

只有當上述不修改參數的方法都無法解決問題時,才考慮使用後訓練。


#四、後訓練的三大評估目標

一個好的後訓練方法,理想上要同時滿足:

  1. Reliability(可靠性):新能力要學得夠好
  2. Generality(通用性):新能力可以遷移到類似任務
  3. Locality(局部性):只改該改的地方,不破壞原本能力(避免災難性遺忘)

#五、四種主要技術

#5.1 Fine-tuning(微調)

  • 最直覺的方法:用 Gradient Descent 直接更新參數
  • 最大問題:容易發生災難性遺忘(學了新的,忘了舊的)

災難性遺忘的緩解方法

課程中提到以下幾種實務策略:

方法做法優點缺點
Experience Replay微調時混入少量舊訓練資料,讓模型一邊學新的一邊「複習」舊知識簡單有效,Llama 2 等模型都用這個策略需要保留舊資料
LoRA(參數高效微調)不改原模型參數 WW,在旁邊加小的低秩矩陣 A×BA \times B,只訓練小矩陣。原知識「鎖死」在 WW 裡顯存需求低,可隨時卸載不影響原模型表達能力有限,複雜任務可能不夠
正則化(Regularization)在 Loss 加約束項,限制參數偏離原始值:L=Lnew+λ∥θ−θorig∥2L = L_{new} + \lambda \|\theta - \theta_{orig}\|^2不需舊資料λ 需調參,太大則學不動新東西
選擇性微調只微調跟新任務最相關的幾層,前面的層保持不動減少破壞範圍需要判斷哪些層相關

💡 實務建議:資源有限時,LoRA + Experience Replay 是性價比最高的組合。

三種訓練資料格式

格式說明範例
Pre-train Style直接陳述事實「魯夫吃的惡魔果實是人人果實幻獸種尼卡型態」
SFT Style問答對形式Input: 「魯夫吃了什麼惡魔果實?」 Output: 「尼卡果實」
RL Style偏好排序對「橡膠果實」打 👎,對「尼卡果實」打 👍

#5.2 Model Editing(模型編輯)

  • 目標:精準修改「特定知識」,盡量不影響其他部分
  • 像是對模型做「微創手術」
  • 代表方法:ROME 等
  • 適合「只想改一個事實」的情況(例如把某個人的出生地改掉)

#5.3 Model Merging(模型合併)

  • 不需要訓練資料,直接對參數做加減運算
  • 前提條件:所有參與合併的模型必須從同一個基礎模型微調而來

核心概念:Task Vector(任務向量)

定義:微調後模型參數與原始基礎模型參數的差值

τ=θfinetuned−θbase\tau = \theta_{finetuned} - \theta_{base}

這個向量 τ\tau 可以理解為模型在微調過程中學到的特定「技能」的數學表示。

📄 開創性論文:Editing Models with Task Arithmetic(Ilharco et al., 2022, ICLR 2023)

Task Vector 的三大妙用

運算公式用途範例
加法(Addition)θnew=θbase+τ1+τ2\theta_{new} = \theta_{base} + \tau_1 + \tau_2融合多個能力把「安全對齊」和「中文能力」加到 Llama 3 上
負向(Negation)θnew=θbase−τ\theta_{new} = \theta_{base} - \tau移除不需要的能力(機器遺忘)從 GPT-2 中移除「生成有毒內容」的能力
類比(Analogy)τD=τB−τA+τC\tau_D = \tau_B - \tau_A + \tau_C無中生有創造新能力「A 之於 B 如 C 之於 D」,用三個已知任務推第四個

加法案例:安全對齊 + 中文能力

課程中舉了一個實際案例:

  1. 計算「安全對齊」任務向量:τalign=θLlama3-Instruct−θLlama3-Base\tau_{align} = \theta_{Llama3\text{-}Instruct} - \theta_{Llama3\text{-}Base}
  2. 計算「中文能力」任務向量:τchinese=θChinese-Finetuned−θLlama3-Base\tau_{chinese} = \theta_{Chinese\text{-}Finetuned} - \theta_{Llama3\text{-}Base}
  3. 合併:θfinal=θLlama3-Base+τalign+τchinese\theta_{final} = \theta_{Llama3\text{-}Base} + \tau_{align} + \tau_{chinese}

如果直接用中文資料微調 Llama-3-Instruct,會導致安全對齊能力大幅下降(災難性遺忘)。用 Task Vector 加法可以避免這個問題。

為什麼有效?正交性(Orthogonality)

不同任務的 Task Vector 在高維參數空間中幾乎正交(夾角接近 90°),所以多個任務向量相加時,彼此不會互相干擾。

此外,Task Vector 相加的效果與**輸出層做 Ensemble(加權平均 Logits)**非常接近,實驗顯示兩者的準確率相關係數高達 0.99。

其他合併方法

課程還提到以下改進方法,解決 Task Vector 之間的干擾問題:

方法論文核心思路
Model SoupsWortsman et al., 2022多個模型參數取平均,不增加推理時間
TIES-MergingYadav et al., 2023解決 Task Vector 之間的參數衝突(符號相反的參數互相抵消)
DAREYu 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臨時通常不需要針對當前輸入客製化、靈活推論時多一次計算成本

#七、核心觀點

  1. 通用模型釋出後,學習並沒有結束,還可以持續進化。
  2. 最怕的是「學了新的、忘了舊的」(災難性遺忘)。
  3. 不同需求要用不同工具:
    • 想大幅改變行為 → Fine-tuning
    • 只想改一個知識點 → Model Editing
    • 想組合多個模型能力 → Model Merging
    • 想針對當下輸入即時適應 → Test-Time Training

#八、總結

這堂課講的是「模型出社會後怎麼繼續學習」的四種方法,從最傳統的微調,到精準編輯、參數合併,再到推論當下的即時訓練。