對應原題(Common ‧ Fine-Tuning, Post-Training and Alignment)

  • What is catastrophic forgetting and how do you mitigate it during fine-tuning? — Asked at: Mistral AI

🎯 什麼情境該想到我

當你「微調完,目標任務的分數漂亮,但使用者說模型整體變笨了」的時候。
★ 這題最重要的一句話:如果你沒有『保留能力評估集』,你根本不會知道遺忘發生了。

⚙️ 怎麼用

定義與成因

在新資料上訓練後,模型在舊任務上的能力急遽下降。

這是神經網路的老問題(McCloskey & Cohen, 1989),成因很單純:

梯度下降只優化「當前這批資料的損失」。損失函數裡沒有任何一項在保護舊能力。

權重被推向新任務的最優點——而那個點對舊任務可能很糟。模型沒有「記得要記得」的機制。

★ 在 LLM 上的具體表現

微調什麼悄悄壞掉什麼
客服對話語料通用推理、數學能力
英文任務資料多語能力(中文表現退化)
固定 JSON 輸出格式指令遵循的彈性——變成不管你問什麼都吐 JSON
單一領域(法律、醫療)領域外的常識判斷
★ 任何東西安全對齊

兩個有名字的現象:

  • 對齊稅(alignment tax) —— 做完安全對齊後,基準能力普遍略降。這是 RLHF 公認的代價(見 RLHF 全流程)
  • ★ 安全退化 —— Qi et al. (2023, Fine-tuning Aligned Language Models Compromises Safety, Even When Users Do Not Intend To!) 指出:

    即使只用完全良性的資料微調,也可能大幅削弱模型的安全對齊。

    這對任何提供「客製微調」的產品都是重大的安全考量——微調不只會讓模型忘記知識,也會讓它忘記拒絕。

★ 偵測:沒有保留能力評估集就等於瞎做

微調的評估必須是兩組,不是一組:

① 目標任務評估集   ← 大家都會做
② ★ 保留能力評估集 ← 大多數人沒做

保留能力評估集至少要涵蓋:

面向怎麼測
通用知識與推理公開基準的子集(MMLU 等)或自建
指令遵循一組格式各異的指令,看它會不會被微調的格式綁架
★ 安全拒答率一組應該被拒絕的請求。這條不能省
多語(若適用)中文/目標語言的能力樣本
上游能力微調前它會做、但不在微調資料裡的事

★ 要在訓練過程中定期跑,不是最後才跑。
遺忘通常是漸進的——畫出「目標任務分數」與「保留能力分數」隨 step 變化的兩條曲線,
交叉點就是你該停的地方。這和 RLHF 全流程 的 over-optimization 曲線是同一個道理。

分數
  ▲
  │ 目標任務 ╱──────────────────  ← 一路上升,看起來很棒
  │        ╱
  │ ──────╳────╮                  ← ★ 最佳停止點
  │            ╰──────╮
  │ 保留能力           ╰────────  ← 悄悄崩壞
  └────────────────────────────▶ 訓練步數

緩解手段(按實用度排序)

#手段說明
1★ 混入通用資料(replay / rehearsal)最簡單也最有效。 在微調資料裡混入 5–30% 的通用指令資料(原始 SFT 資料或公開指令集)。比例要自己掃
2★ 用 PEFT 而非全量微調LoRA 的低秩約束限制了權重能被推多遠,天然較不易遺忘(見 PEFT 方法比較)。而且底座權重完全沒動,最壞情況可以直接卸載 adapter
3★ 降低學習率、減少 epoch過度訓練是遺忘的主因。 多數微調 1–3 個 epoch 就夠,跑 10 個 epoch 幾乎必然遺忘
4自我蒸餾 / KL 正則把微調前的模型當 teacher,在損失裡加一項 KL 懲罰,拉住輸出分布不要跑太遠(概念同 RLHF 全流程 的 KL 項)
5EWC(Elastic Weight Consolidation)用 Fisher 資訊估計「哪些參數對舊任務重要」,對它們加大更新阻力。理論漂亮,但在 LLM 規模上算 Fisher 太貴,實務少用
6分離而非覆蓋不同能力放不同 adapter,推論時按需載入,根本不讓它們互相覆蓋
7資料多樣性微調資料本身就涵蓋多種任務型態與格式,而不是單一模板

★ 實務上的關鍵判斷:
遺忘通常是「資料太窄 + 訓太久」的結果,不是演算法問題。
在去研究 EWC 之前,先檢查這兩件事——混入通用資料 + 減少 epoch 就能解掉大部分案例。

還有一個容易被誤判的情況

「模型變笨了」有時不是遺忘,是格式綁架。
微調資料全是「問題 → JSON」,模型學到「任何輸入都該回 JSON」——
能力還在,只是被格式蓋住了。這種情況混入多樣格式的資料就能解,不需要動訓練方法。

⚠️ 注意 / 什麼時候不適用

  • ★ 沒有保留能力評估集,這整頁都白搭。這是唯一真正的必需品。
  • 安全評估不能省,即使你的微調資料完全良性。提供微調服務的產品尤其要把這件事做成 gate。
  • 混入資料的比例要掃,不是拍 10%。太少沒效果,太多會稀釋目標任務。
  • LoRA 較不易遺忘不代表不會遺忘。 很大、訓很久一樣會。
  • 持續預訓練(continual pretraining)的遺忘更嚴重,因為改動幅度大得多。新語言、新領域的大規模適應要特別小心。
  • 公開基準會被污染。用公開基準當保留能力評估有其限制(見批次 3 的 benchmark 污染)。有條件的話自建。
  • 遺忘有時是可接受的取捨。專用模型犧牲通用能力換取領域表現,是合理的產品決策——但要是有意識的決定,不是意外。

🧪 我實際套用的紀錄

  • 2026-09-20:從面試題庫展開。待辦:任何微調專案,第一件事是先建保留能力評估集(含安全拒答)。

🔗 相關