はじめに
話題のLLMの進化的マージについての論文を読んだので、「モデルマージとは?」についてまとめます。
今回紹介する論文は以下のLLMの進化的マージの論文です。
「Evolutionary Optimization of Model Merging Recipes」
この論文では、モデルマージを進化的アルゴリズムで最適化したという結果が示されてますが、
本記事ではまず、モデルマージにのみフォーカスを当てて解説します。
モデルマージとは?
モデルマージは複数の事前学習済みモデルの重みを組み合わせることによって、様々なタスクへの性能を向上させる手法です。
従来の手法では、事前学習されたモデルの重みを、特定のタスクへと再調整する。そうすることで、少ない学習で特定のタスク特化のモデルが作成できるというメリットがあったが、単一タスクへ特化されたモデルが作成されます。
モデルマージは、従来の手法とは異なり、複数のモデルの性能を活かした包括的なモデルを作成することを目的としています。
次にこの論文で紹介されているモデルマージの先行研究について説明します。
シンプルなマージ「Model soup」
最初にあげる先行研究では、画像認識モデルにてモデルマージが行われています。
論文は「Model soups: averaging weights of multiple fine-tuned models
improves accuracy without increasing inference time」
です。
この先行研究では、「Model soup」という、複数のモデルの重みを足し合わせる様々な手法が提案されていますが、この論文で最も性能が高くなった手法が、「Gready soup」と呼ばれる以下の手法です。
「Gready soup」では、バリデーションデータを用いて評価しながらどのモデルをマージしていくかを決定します。
モデルのマージは用意した事前学習済みモデルに対して一つずつ評価を行い、最終的なマージを決定します。
一つずつの評価は、上図のように重みを平均化する前のモデルと平均化した後のモデルでバリデーションデータによる評価を行います。
その評価で、スコアが上がった場合はマージし、スコアが下がった場合はマージをしないようにすることで、性能の向上を図ります。
この手法で、以下のように「Gready Soup」によってマージされたモデルが、ハイパーパラメータを変えた他の事前学習済みモデルよりも高い正解率となっていることがわかります。
縦軸は、ImageNetの5つの分布シフトにおける平均正解率で、いずれもマージしたモデルがマージ前のモデルよりも高いスコアとなっています。
統計的なマージ「Fisher Merging」
次にあげる先行研究では、自然言語処理モデルにてモデルマージが行われています。
論文は「Merging Models with Fisher-Weighted Averaging」
です。
この研究では、モデルマージを以下の式のようにマージしたモデルの事後確率の最大化としてパラメータをマージします。
しかし、一般的な分布での事後確率最大化は計算しにくいため,ここではラプラス近似を行い、各モデルの尤度をガウス分布としています。
ここで、$F_i はフィッシャー情報量となります。
ガウス分布であると仮定したため、事後確率最大となるモデルの重みは、フィッシャー情報量を用いて以下になります。
上記の式を用いたモデルの重みを「Fisher Merging」と呼んでいます。(ただし、フィッシャー情報量は、パラメータ空間における局所的な情報をもっているため、同じ初期化を行なって学習されたモデル間でしか有効でないそうです。)
このマージをBERTにて実験し、検証を行った結果が以下です。
この結果のように、モデルの予測のアンサンブルと比較して、「Fisher Merging」は同程度のスコアとなっています。
これにより、アンサンブルに必要なモデル数の分、安価に予測結果を上げることに成功しています。
(この図では、アンサンブルに5つのモデルを使用しているため、5倍安価であるとしています。)
まとめ
今回は、「Model soup」と「Fisher merging」の二つのモデルマージ手法を紹介しました。
今回紹介していない進化的マージ以外にも色々マージ手法があるみたいなので、順次紹介していきたいと思います。
コメントやフォローお待ちしております!