DoRA: 重み分解低ランク適応
Gaerosとクロードらによって書かれました
Liuらによる“DoRA: Weight-Decomposed Low-Rank Adaptation”は、重みの大きさと方向を個別に扱うことでLoRAを改良した革新的な微調整アプローチです。重みをこれらの成分に分解することで、DoRAは従来のLoRAと同様のパラメータ効率を維持しながら、より優れたパフォーマンスを実現します。常識的推論(+1.0-4.4%)、視覚言語理解(+0.9-1.9%)、指示チューニング(+0.7-1.1%)など、様々なタスクで大幅な改善を示しています。
動機
主要な洞察
重みの再パラメータ化によって勾配の条件を改善し、より速い収束を実現する重み正規化に着想を得て、著者らはまず微調整中の重みの変化について新しい分析を行いました。重みを大きさと方向成分に分解することで、LoRAとフル微調整(FT)が顕著に異なる更新パターンを示すことを発見しました。
彼らの分析は重要な経験的発見を明らかにしました:事前学習済みモデルを微調整する際、最も効果的な適応(FTで見られるように)は以下のいずれかを伴うことが多いです:
方向の調整を最小限に抑えた大きな大きさの変化、または大きさを保持しながらの大きな方向の変化ですが、両方が同時に起こることは稀です。対照的に、LoRAでは大きさと方向の変化が比例する結合的な振る舞いを示しました。
この発見は、事前学習済みの重みが既に有用な特徴の組み合わせをエンコードしており、効果的な適応には主にそれらの重要性(大きさ)または混合(方向)を独立して調整する必要があることを示唆しました。この洞察がDoRAの設計につながりました:これらの成分を明示的に分離することで、学習能力と訓練の安定性の両方を向上させます。
重みの分解と活性化
ニューラルネットワークにおいて、各重み行列 $W \in \mathbb{R}^{d \times k}$ は入力ベクトル $x \in \mathbb{R}^k$ を出力ベクトル $y \in \mathbb{R}^d$ に変換します。この変換は2つの補完的な視点から理解できます:
- 列視点(幾何学的):各列 $w_j$ は対応する入力成分 $x_j$ によってスケーリングされる出力空間($\mathbb{R}^d$)のベクトルです
- 行視点(代数的):各行 $w^i$ は入力との内積を通じて出力の1つの成分を計算します
これらの視点は変換の動作方法に現れます:
- 列視点:$y = \sum_j x_j w_j$(各入力成分 $x_j$ が対応する出力空間方向 $w_j$ をスケーリング)
- 行視点:$y_i = \langle w^i, x \rangle$(各行が出力の1つの成分を計算)
論文では $||\cdot||_c$ を各列ベクトルのL2ノルムとして定義しています。DoRAでの重みの分解時、各列ベクトル $w_j$ は以下のように分解されます:
- 方向:$v_j = w_j/||w_j||_2$(出力空間での正規化されたベクトル)
- 大きさ:$m_j = ||w_j||_2$(スカラー)
この列ごとの分解は明確な幾何学的意味を持ちます:
- 各 $v_j$ は出力空間での方向を定義する $\mathbb{R}^d$ の単位ベクトル
- $m_j$ は入力成分 $x_j$ が活性化されたときのこの方向の寄与をスケーリング
- 完全な変換は $y = \sum_j (m_j x_j) v_j$ となります
論文の経験的分析は、効果的な微調整(FTで見られるように)が以下のいずれかを必要とすることを明らかにしています:
- 出力空間の方向($v_j$)を保持しながらスケーリング係数($m_j$)を調整する
- それらの相対的なスケール($m_j$)を維持しながら出力空間の方向($v_j$)を改良する