淺談神奇的 Model Merging 技術
什麼是 Model Merging?
希望模型擁有多項技能
假設我們有一個基礎模型 (Foundation Model) 穿上了盔甲 (具備防禦力,模型 A),隔壁小明練出了另一個拿著劍的模型 (具備攻擊力,模型 B)。
- 目標:我們想要一個既有盔甲又有劍的模型。
- 傳統做法:跟小明借訓練資料,結合自己的資料,對模型重新進行 Post-training。缺點是需要算力、需要資料,且容易發生災難性遺忘 (Catastrophic Forgetting)。

透過加減運算真的能合併模型能力嗎?
- 不需要資料,也不需要訓練。
- 只要透過簡單的參數加減運算,就能將小明的「劍」直接裝備到你的「盔甲 LLaMA」身上。

基本假設:參數是可以加加減減的
雖然直觀上覺得「把不同人的手砍下來接在一起 (接枝王葛瑞克)」應該不會變強,但在類神經網路中,參數是可以加加減減的。

Task Vector (任務向量)
- 假設 Foundation Model 參數為 。
- 經過微調後的模型 A 參數為 ,模型 B 參數為 。
- Task Vector ():代表模型相對於 Foundation Model 額外學到的能力(參數的差)。
- 若要同時擁有 A 和 B 的能力,只需計算:
- 或者也可以引入權重 () 來調整效果:
- 先決條件:
- 與 必須源自於同一個 Foundation Model,且模型架構必須完全相同。
![]() | ![]() |
|---|---|
| 把不同任務學到的變化加起來,就能合併模型能力 | Post-training 時代的模型能力疊加方法 |
應用一:相加 (Addition) — 組合能力
透過將 Task Vector 相加,讓模型同時具備多種技能。
案例 1:繁體中文 + Safety Alignment
- 背景:直接用中文資料微調 LLaMA-2-Chat,會導致模型遺忘原有的 Safety Alignment (變得很危險,會教人做壞事)。
- 解法:
- 模型 A:Meta 釋出的 LLaMA-2-Chat (有 Alignment,但中文不好)。
- 模型 B:用中文資料微調 LLaMA-2-Base (中文好,但沒 Alignment)。
- Merging:將兩者的 Task Vector 加回 Base Model。
- 結果:新模型既能流利說中文,又保有安全防禦機制 (拒絕回答如何竊取密碼)。此方法在 LLaMA 3、Mistral 以及韓文/日文上皆有效。
案例 2:評量能力 + 寫程式能力
- 將「擅長寫程式的模型」與「擅長做 Reward Model (評分) 的模型」合併,產生一個能評價程式碼好壞的模型。
案例 3:文字評量 + 視覺能力
- 將「文字 Reward Model」與「視覺模型」合併,使其能看懂圖片並進行評分。

應用二:相減 (Subtraction) — Machine Unlearning
透過減去特定的 Task Vector,讓模型「忘記」某項能力或知識。
- 若 ,則反過來 。
- 可以利用此特性消除模型中的有害知識或版權內容。

案例:聖人模型 (消除髒話)
- 步驟:
- 先用髒話資料微調模型,練出一個「髒話模型」,計算出「髒話 Vector」。
- 將正常的 TAIDE 模型 減去 這個髒話 Vector。
- 結果:模型變成了「聖人」,完全不懂髒話或歧視用語。例如問它什麼是「黑鬼 (Nigga)」,它會胡說是動漫角色或神秘生物,產生幻覺 (Hallucination),因為它腦中關於該詞彙的概念已被抹除。


