DoRAとは
DoRAとは、学習済みモデルの重みを「大きさ」と「向き」の2つに分解し、向きの調整にLoRAを使うことで、LoRAの精度を高めた微調整手法です。NVIDIAの研究者が2024年2月に発表しました。LoRAの軽さをそのままに、フルに微調整した場合との差を縮めることを狙っています。
英語表記:Weight-Decomposed Low-Rank Adaptation(DoRA)
DoRAの仕組み
発想の核は、重みを1本の矢印(ベクトル)に見立てる点です。矢印には「長さ(大きさ)」と「向き」という2つの性質があり、DoRAはモデルの重みをこの2つに分けて扱います。そして、向きの調整にはLoRAの小さな部品を使い、大きさのほうは別に扱うのが特徴です。学習する量を抑えるLoRAの利点を保ちながら、両方を分けて細かく動かせるようにしたわけです。
LoRAとの違い
LoRAは重みの変化をまとめて近似しますが、DoRAは大きさと向きを切り分けて扱うぶん、フルに微調整したときの「学習のしかた」により近づきます。論文では、言語のタスクや、画像と言語を組み合わせて扱うタスクなど、さまざまな場面でLoRAを一貫して上回ったと報告されました。しかも学習後は元の重みにまとめ直せるため、使うとき(推論時)の速度は遅くなりません。これはLoRAが持つ長所をそのまま受け継いだ形です。
活用の位置づけ
DoRAは、PEFTという「安く微調整する手法群」の中で、LoRAの置き換え候補として位置づけられます。LoRAと同じく軽く、推論も遅くならず、精度はより高めやすい。同じデータと設備でも仕上がりの質を一段引き上げたいときに、選択肢として検討される手法です。
Topic重みを「長さ」と「向き」に分けた理由
DoRAが重みを2つに分解したのは、思いつきではありません。研究チームは、フルに微調整した場合とLoRAとで、学習中に重みがどう変わるかを比べました。すると、矢印でいう「長さ」の動き方と「向き」の動き方に、両者ではっきりした違いが見つかったのです。LoRAに足りなかったのはこの作り分けでした。そこを補うため、長さと向きを別々に調整できるようにしたのがDoRA。問題をよく観察してから設計された、理にかなった改良といえます。
DoRAに関するよくある質問
- DoRAとLoRAは何が違いますか?
- LoRAは重みの変化をまとめて近似します。DoRAは重みを「大きさ」と「向き」に分け、向きの調整にLoRAを使う点が違いで、フルに微調整したときの学習のしかたにより近づき、精度を高めやすくなります。
- DoRAを使うと推論は遅くなりますか?
- 遅くなりません。学習後は調整ぶんを元の重みにまとめ直せるため、使うときの速度はLoRAと同じく低下しない、と報告されています。
- DoRAは誰が提案しましたか?
- NVIDIAの研究者が2024年2月に公開した論文で提案しました。LoRAとフル微調整の精度差を埋める発展形として注目されています。