論文紹介: Language Models are Super Mario: Absorbing Abilities from Homologous Models as a Free Lunch

<!-- 論文紹介: Language Models are Super Mario: Absorbing Abilities from Homologous Models as a Free Lunch -->

## はじめに
今回は「Language Models are Super Mario: Absorbing Abilities from Homologous Models as a Free Lunch」という論文を紹介します。これも Sakan-AI のモデルマージで使われている技術ですね。この論文は、言語モデル（LM）が他の類似したモデルの能力を「吸収」することで、新しい能力を獲得できるという興味深い提案をしています。タイトルの「スーパーマリオ」は、マリオが☆や🍄を「取り入れる」ことで無敵モードやサイズアップといった能力を得るように、LLM も他のモデルをマージすることで、新しいタスクスキルを獲得したり性能を向上させるというアイディアを表しているのでしょうか？？ では早速読んでいきましょう。

参考文献:
Le Yu, Bowen Yu, Haiyang Yu, Fei Huang, Yongbin Li. ["Language Models are Super Mario: Absorbing Abilities from Homologous Models as a Free Lunch."](https://arxiv.org/abs/2311.03099) Proceedings of the 41st International Conference on Machine Learning, 2024.

> 🐣 DARE の読み方がわかる方おられました教えてください。一文字ずつ読みかディアなのか…

---

## 1 論文の概要
この論文では、事前学習済み言語モデルにおいて、タスク特化型の微調整（Supervised Fine-Tuning, SFT）によるパラメータの変化を「デルタパラメータ (delta parameter)」として定義し、その冗長性を削減するための新しい手法「DARE」を提案しています。DARE は、デルタパラメータをランダムに削減し、残りのパラメータをリスケールすることで、元の埋め込み表現を近似します。

さらに、DARE を用いて複数の SFT モデルをマージし、元のモデルの能力を保ちながら、多機能な単一モデルを構築する手法を紹介しています。実験結果では、エンコーダ型とデコーダ型の両方のモデルで DARE の有効性が確認されました。

> 🐣 Sakana-AI のモデルマージや TIES-Merge ではこの delta parameter を task vector と呼んでいました。あとパラメータはいつも通り重みと解釈してよさそうです

---

## 2 関連研究

### 言語モデルの教師ありファインチューニング (SFT, Supervised Fine-Tuning)
- SFT は特定のタスク用データでモデルを最適化する手法で以下の 2 つに大別される。
  1. 全パラメータが対象 (Full fine-tuning)
  2. 部分的なパラメータが対象 (Parameter-efficient fine-tuning)
- SFT の効果は「デルタパラメータ」(微調整前後のパラメータの差分)で確認できる

### ネットワークプルーニング (枝狩り)
- ニューラルネットワークの計算コスト削減が目的
- パラメータの大きさに基づいて削除する方法が代表的

> 🐣 L1 ノルム (絶対値) で選ぶことが多いです

DARE と従来手法の大きな違いは、従来手法は再学習が必要なことに対して DARE は**不要**という点です。

### 3. モデルマージング
- 複数のタスク特化モデルを 1 つの多機能モデルにマージ
- マルチタスク学習との違い:
  - 元の学習データにアクセス不要
  - パラメータ (重み) のマージに焦点

主な手法:
1. **Average Merging**
   - 複数モデルの重みを平均化
   - シンプルながら効果的

2. **Task Arithmetic**
   - スケーリング項を導入して各モデルの重要度を調整

3. **Fisher Merging**
   - Fisher 情報行列を用いた重み付けパラメータマージ

4. **RegMean**
   - 線形回帰問題として解く
   
5. **TIES-Merging**
   - L1 ノルムが小さいパラメータをトリミング
   - 符号の不一致に対応

これらの手法と DARE の違い:
- デルタパラメータの冗長性を削減
- 既存のマージ手法と併用可能な汎用的なプラグイン
- パラメータ干渉の問題を緩和

---

## 3 提案手法
### 3.1 DARE: デルタパラメータ削減手法
DARE の手法は以下の 2 ステップで構成されます:
1. **ドロップ**: デルタパラメータを確率的にランダムでゼロにする。
2. **リスケール**: 残りのデルタパラメータを補正係数 $\frac{1}{1-p}$ でスケールアップする。

これにより、元の埋め込み表現をほぼ保ちながら、90～99%のデルタパラメータを削減可能です。

> 🐣 対象は差分なので，**ゼロになる**とは元のモデルの重みになるということです

### 3.2 モデルマージ
DAREを既存のモデルマージ手法の前処理として利用することで、パラメータの干渉を軽減し、マージの性能を向上させることができます。
例えば、Task Arithmetic (Ilharco et al. 2023) と併用する場合は以下のようになります。

1. まず個々のモデルに DARE を適用
```math
\theta^{t_k}_{\rm DARE} = {\rm DARE}(\theta^{t_k}_{\rm SFT}, \theta_{\rm PRE}, p), \; {\rm for} \; 1 \leq k \leq K
```

2. その後マージを実行
```math
\theta_M = \theta_{\rm PRE} + \lambda \sum_{k=1}^K \hat{\delta}^{t_k} = \theta_{\rm PRE} + \lambda \sum_{k=1}^K (\theta^{t_k}_{\rm DARE} - \theta_{\rm PRE})
```

> 🐣 これは単に Task Arithmetic を例としたマージの式で DARE とは関係ないです

ここで：
- $k$ はタスクのインデックス
- $K$ はマージするモデル数
- $p$ は DARE のドロップ率
- $\hat{\delta}^{t_k}$ は DARE で処理された後のデルタパラメータ

この方法は、パラメータの干渉を軽減してからマージするため、より効果的なモデル統合が可能になります。また、DARE は任意のモデルマージ手法と併用できるプラグイン的なモジュールとして機能します。

---

## 4 数値実験
### 4.1 実験セットアップ
- デコーダーベースのモデル評価:
  - 命令追従: AlpacaEval (WizardLM)
  - 数学的推論: GSM8K, MATH (WizardMath)
  - コード生成: HumanEval, MBPP (WizardCoder-Python, llama-2-13b-code-alpaca)
- エンコーダーベースのモデル評価:
  - GLUEベンチマーク (BERT, RoBERTa)
  - 複数のタスク: CoLA, SST-2, MRPC, QQP, STS-B, MNLI, QNLI, RTE

### 4.2 SFT デルタパラメータの極端な冗長性
- デコーダー/エンコーダーベースの両方でデルタパラメータの高い冗長性を確認
- 90 %以上のデルタパラメータを除去しても性能維持が可能
- モデルのパラメータ数が大きいほど、より高いドロップ率に耐えられる
  - 例: WizardMath-70B は 99 %の削減でも機能

### 4.3 DARE を使用したモデルのマージング
- Task Arithmetic と TIES-Merging の両手法でDAREの効果を検証
- デコーダーベースのモデルでの主な発見:
  - DARE はマージング性能を向上
  - 他のマージ手法との併用時には元のモデルを上回る性能を達成することもある
  - llama-2-13b-code-alpaca の性能課題を分析

> 🐣 特に TIES-Merging と相性がいいことが報告されています

### 4.4 リスケール操作の重要性
- DARE のリスケール操作の重要性を実証
- オリジナルの埋め込みとの類似度を分析
- DropOnly との比較で、リスケールの効果を確認

### 4.5 Magnitude-based Pruning(MP)との比較

DARE をよく知られた Magnitude-based Pruning (MP) と比較しています。MP は従来のネットワークプルーニングでよく使用される手法
で、パラメータの大きさ（L1 ノルム、絶対値）に基づいて選択します。

比較実験のセットアップ:
- 公平な比較のため、MP もデルタパラメータに対して操作して、再学習プロセスは省略
- AlpacaEval、MATH、HumanEval、MBPP でデコーダーベースのモデルを評価
- GLUE ベンチマークでエンコーダーベースのモデルを評価

主な発見:
1. DARE はほとんどのケースで MP を上回る性能を示した
2. ドロップ率が高くなるほど、DARE の優位性が顕著になった
3. MP がパフォーマンスを維持できない理由:
   - 小さい値のデルタパラメータの貢献を無視してしまう
   - オリジナルの埋め込みを保持できない

MP の追加の問題点:
- 研究チームは MP にもスケーリング操作を追加してみたが、かえって**結果は悪化**
- 例: ドロップ率 0.7 の場合
  - AlpacaEval で 43.85 から 10.61 に低下
  - GSM8K で 46.70 から 0.37 に低下
  - HumanEval で 21.34 から 3.05 に低下

理由の分析:
- MPは大きい値のパラメータを保持し、小さい値のパラメータを除去
- 残ったパラメータをスケーリングすると予測不可能な振る舞いを引き起こす
- これに対して DARE のランダム選択は、パラメータ間の相対的な関係をよりよく保持できる

著者らはこの比較を通じて、デルタパラメータの冗長性が非常に高く、その選択には洗練された基準よりもシンプルなランダム選択が効果的であることを示しています。この発見は、パラメータの大きさが必ずしもその重要性を示すわけではないという興味深い示唆を提供しています。

### 4.6 DARE の使用条件

DARE は、デルタパラメータの値の範囲が比較的小さい場合（0.002 以内）に効果を発揮することが示されています。しかし、この適用条件は大規模なモデルや特定の事前学習を経たモデルには制約となる場合があります。また以下の点も問題として挙げられています。

1. **適用可能なモデルの範囲が限定的**  
   継続的事前学習を行ったモデルでは、デルタパラメータが通常 0.01 を超える範囲に達し、DARE の再スケーリングがモデル性能に悪影響を及ぼす可能性があります。これにより、DARE を使用する際には、事前学習のプロセスやモデルの特性を十分に考慮する必要があります。

2. **デルタパラメータ削減による異常動作の可能性**  
   一部の実験では、削減率が高い場合に性能が劇的に劣化するケースも観測されています。たとえば、10% のデルタパラメータを削除しただけで性能がゼロに近づく場合があることが示されました。この結果は、DARE のランダム削減が一部のタスクで重要なパラメータを削除するリスクを持つことを示唆しています。


### 4.7 ファインチューンされたパラメータへの適用
- ファインチューンされたパラメータへの直接適用は困難
- デコーダーベースのモデルは特に影響を受けやすい
- 事前学習された知識の重要性を示唆

主な貢献:
1. SFTデルタパラメータの冗長性の実証
2. シンプルかつ効果的な削減手法の提案
3. モデルマージングへの応用可能性の実証
4. 大規模言語モデルの性質に関する新しい知見の提供

### 補足: 数値実験の意味
数値実験では、ファインチューニング後のモデルのデルタパラメータ(学習前後の重みの差分)を大幅に削減しても性能があまり劣化しないことを示しています。しかしながらファインチューニング直後のモデルよりは性能が劣化する点には注意が必要です。つまり、ファインチューニングしたモデルがあるなら性能面では DARE は**全く不要**ということです。ただし、計算コストやストレージの削減という観点では十分な意味がある点については理解が必要です。
DARE が威力を発揮するのは TIES-Merginging など他のマージ手法と併用された場合でしょう。実際 TIES-Merging では DARE により性能が向上しています。著者らはこれを「お互いに干渉するパラメータが削除されたため」としていますが、定性的な仮説に留まっているようです。また、差分であるデルタパラメータの大きさ順よりもランダムで削除した方が性能が良いというのも驚きでした。この結果は何らかの機能に関して、重みの変化に非常に敏感な個所が存在していることを示唆しています。いずれにしても、いろいろ研究のタネになりそうな興味深い結果でした。

---

## 5 結論
この研究ではデルタパラメータの極端な冗長性と、DARE による効率的な削減手法の効果を示しました。DARE は再学習や GPU を必要とせずに、90% 以上のデルタパラメータを削除しても性能をほぼ維持できることも示しました。
さらに、このアプローチをモデルマージングに応用することで、複数のタスク特化モデルを単一のモデルに効果的にマージできることを実証し、場合によっては元のモデルを上回る性能も達成しました。7B パラメータモデルで Open LLM Leaderboard の 1 位を達成するなど、実用的な成果も示しています。
これらの知見は、モデルマージを含めた効率的なモデル最適化の新しい方向性を示唆しています。

> 🐣 くどいようですが 90% の重みを削除ではなく、学習後の重みの差分 90% を削除してベースモデルの重みに戻したということです

---

## おわりに
この論文は、DARE によって従来のパラメータプルーニングやモデルマージ手法を超える成果を示しました。ただし、デルタパラメータの特性に依存するため、適用可能なモデルには限界がある点が課題です。また、どのようなモデルマージ手法とペアを組めばよいかについても追加実験が必要かもしれません。
私自身、Sakana-AI さんの論文を読んで以来この分野に興味が出てきたので、この研究を参考にしてまた実験をしてみたいと思いました。いつかコードを書いて試してみようと思います！

> 🐣 Sakana-AI さんの論文で TIES-Merginging＋DARE を採用していた謎も解けました！