【論文紹介】LORA VS FULL FINE-TUNING: AN ILLUSION OF EQUIVALENCE
論文情報:Shuttleworth et al., arXiv, 2024.
リンク:https://arxiv.org/pdf/2410.21228v1
※ 本ページの図は特筆がない限り全て本論文から引用しています。
執筆担当:EQUESエンジニア 武馬光星
ご覧いただきありがとうございます。今回は、「LoRA vs Full Fine-tuning: An Illusion of Equivalence」という論文を紹介したいと思います。この論文では、大規模言語モデル(LLM)において、LoRA(Low-Rank Adaptation)とFull Weightの2つのFine-tuning手法を比較し、それぞれの性能や内部構造の違いを詳細に分析しています。LoRAでFine-tuningされた場合には、ターゲットタスクでは、Full Weightと同様のパフォーマンスを達成しているにもかかわらず、異なるタスクでは精度が低下することを示されました。今回は、この原因となる「intruder dimensions」や重み構造、学習方法、実験結果、さらに、LoRAを効果的に利用するためのパラメータ設定についても紹介していきたいと思います。
導入
Fine-tuningは、事前学習済みのモデルを特定のタスクや目的に合わせて再調整する学習方法です。モデルを1から訓練するのではなく、大量のデータで事前に学習させたモデル(事前学習モデル)を基にすることで、計算コストを抑えながら高い性能を引き出す方法として広く利用されています。今回は、Fine-tuningの手法として、学習時に全ての重みを更新するFull Weight Fine-tuningと特定の低ランク行列を学習することで効率化を図るLoRAの2つを比較しています。
LoRAとは
LoRAは、事前学習済みのモデルを効率的にFine-tuningするために開発された手法です。従来のFull Fine-tuningでは、モデル全体のパラメータを更新する必要があり、計算リソースやメモリの観点でコストが非常に高くなるという課題がありました。LoRAはこの問題を解決するために提案されたもので、低ランク行列を利用してモデルの更新を簡略化し、計算コストを大幅に削減します。
画像:[Hu et al., ICLR, 2022]より
しかし、LoRAはコード生成や長文テキスト生成のような難しいタスクではFull Weight Fine-tuningのパフォーマンスに匹敵することが難しいことが以前から示されています。LoRA によるFine-tuningがFull Weight Fine-tuningのパフォーマンスに匹敵する場合でも、2つの方法で学習されたモデルは本当に同等なのでしょうか?
Full WeightとLoRAのモデル構造の違い
ここでは、特異値分解を用いてFine-tuningが事前訓練済みの重みにもたらす変化を分析しています。図1は、事前訓練済みの特異行列とFine-tuning済みの特異ベクトル間のコサイン類似度を表した図です。
図1 Full Weight Fine-tuningとLoRAの事前訓練済みモデルとの重みの類似度の違い
図1の色はコサイン類似度を示しています。図1から、Full Weight Fine-tuningでは、Fine-tuning後の重みがFine-tuning前の重みと同じ次元が対応しており、重み構造のほとんどが保持されていることがわかります。一方、LoRAは、Fine-tuning後の重みが対応している重みが、Fine-tuning前の重みの次元とずれていることから、重みの構造が変化していることがわかります。
また、図2ではこの現象を視覚的にわかりやすく表現しています。
図2 LoRAによる「intruder dimensions」の発生
図2より、LoRAでFine-tuningを行った際に、元の重みの次元がズレて、そこに新たな次元が生まれたことがわかります。これを本論文では、「intruder dimensions」と呼びます。このintruder dimensions(図中ピンク色)によって、元の重みの次元が右に一つずつズレてしまい、重みの構造が変わってしまっています。一方、図のFull Weight Fine-tuningの方のように、intruder dimensionsは発生しない場合は、重みの構造自体は変化していないことがわかります。本論文では、このintruder dimensionsこそが、LoRAの精度低下の原因として位置付けています。
さらに、図3ではLoRAのランクを変化させた場合のFull Weight Fine-tuningの特異行列とLoRA Fine-tuningの特異ベクトル間のコサイン類似度の比較を行っています。
図3 LoRAのランクを変化させた場合のコサイン類似度比較
図3では、元の事前学習済みのモデルの重みと各Fine-tuning後の重みの類似度をとっています。ここでもFull Weight Fine-tuningは、対応する重みの次元がFine-tuning前の次元と一致しています。しかし、LoRAの図の方には、空白の列ができています。この空白が、intruder dimensionsであり、事前訓練済みのすべての特異ベクトルとのコサイン類似度が低くなっています。
実験結果
RoBERTa-baseにFine-tuningを行い、6つの異なる分類タスクで評価を行います。結果は図4に示されています。
図4 6 つの異なるタスクにおけるintruder dimensionsの数比較
図4のεは、コサイン類似度の閾値となっており、このεより低いものをintruder dimensionsとしています。図4から、LoRAにおいて、顕著にintruder dimensionsが現れていることがわかります。一方、Full Weight Fine-tuningは、intruder dimensionsがほとんど現れていないことがわかります。また、LoRAの場合に、intruder dimensionsは低ランクになるほどより多く現れることがわかります。
これらの結果は、LLaMA2-7Bでも同様の傾向が見られることが示されました。LLaMA2-7Bで異なる3つのタスクを行った場合の結果が図5に示されています。
図5 LLaMA2-7Bにおけるintruder dimensionsの数比較
LLaMA2-7Bの場合にも、同様に、低ランクのLoRAの場合にintruder dimensionsの数が増加することがわかります。特に、ランクが2048の時にはFull Weight Fine-tuningと同等の数になっています。このことから、LoRAのランクが非常に高い場合は、Full Weight Fine-tuningと似た学習をすることが考えられます。
また、Magiccoder(右図)の場合には、Full Weight Fine-tuningでもintruder dimensionsの数が増加していることがわかります。これは、コーディングタスクが通常のタスクよりも難しいため、モデルの重みが大きく変更されたことによることが考えられます。
さらに、データセットの量を変化させた場合の結果は図6に示されています。
図6 訓練データ量に対するintruder dimensionsの数比較
図6から、LoRAのランクが8の場合、訓練データの数が増加するにつれて、より多くのintruder dimensionsが現れることがわかります。このことから、データセット量が多いほど、intruder dimensionsの影響が増加する傾向があることがわかります。
図7では、異なる6つの分類タスクにおける評価を行っています。
図7 異なる6つの分類タスクにおける評価
左から右の順に、6 つのタスクを連続的に訓練しています。灰色の領域は、モデルがそのタスクで訓練される前のパフォーマンスを表しています。図7から、LoRAのランクが低い場合、LoRAは継続的な学習中に以前のタスクをより多く忘れ、パフォーマンスが大幅に低下する傾向があることがわかります。LoRAのランクを上げることが忘却を防ぐことに有効であることがわかります。
適切なLoRAパラメータ設定
- LoRAのスケーリングパラメータα
LoRAのスケーリングパラメータαを変化させた場合に結果が変わるのかの比較も行なっていました。先行研究に従ったα=2r(LoRAランクの2倍)とランクが変わっても一定の値としたα=8の2通りの結果の比較を行なっていました。結果は、基本的な傾向は両者とも同じですが、αを固定した場合には、LoRAのランクを大きくした場合にもintruder dimensionsが多く現れてしまうことがわかりました。そのため、LoRAのスケーリングパラメータαは固定するのではなく、α=2rのようにLoRAのランクに応じて変化させるように設定することが求められます。
- LoRAのランクr
上で述べた実験から、LoRAのランクが低い際にintruder dimensionsが多く現れて、精度が低下することを述べましたように、適切なLoRAのランクを設定することは重要です。以下の実験では、LoRAのランクを変えた際のLossを比較しています。
図8 異なるLoRAランクにおけるLoss比較
図8から、LoRAのランクがr=1の場合には、Lossが高くなっていることがわかります。これは、低ランクでのLoRA Fine-tuningを行ったことによって、intruder dimensionsが多く現れたことによると考えられます。また、ランクを非常に大きくした場合にも、Lossが高くなっています。結果から、最も学習効率(性能とメモリ効率のバランス)が良いLoRAランクはr=64となりました。極端に低いまたは高いLoRAランクは、intruder dimensionsの増加や過学習を引き起こし、モデルの一般化能力を損なう可能性が示唆されました。
まとめ
- LoRAとFull Weight Fine-tuningは、同等の精度を出したとしても、LoRAの重みの構造は元の重みの構造から変化している。
- 重みの構造を変えてしまう原因となっているのがintruder dimensionsで、元の重みとコサイン類似度が低い次元である。
- LoRAのスケーリングパラメータは固定するのではなく、α=2r(LoRAランクの2倍)としてLoRAのランクに応じて変更する。
- LoRAのランクは、極端に低い場合にintruder dimensionsが多く現れ忘却の影響が大きくなる。ランクが極端に高いものは過学習によって精度を下げる。適切なランクは、r=64となった。
Discussion