JA EN
体系線形代数
·★ 会員·論文·13分で読めます

特異値分解と低ランク近似 — LoRAの数学的な下地

特異値分解(SVD)を「回す・伸ばす・回す」の比喩から出発し、行列がrank-1の層の重ね合わせであること、実データでは少数の層だけで十分なこと(低ランク近似)までを前提知識ゼロから解説。LoRAが巨大モデルを0.4%のパラメータで微調整できる理由の、数学的な土台を作る。

対象textタスクmath

LoRA: Low-Rank Adaptation of Large Language Models

一次資料 — この記事の根拠

論文の発表 2021-06-17この解説の公開 2026-08-135年2か月後

LoRA: Low-Rank Adaptation of Large Language ModelsEdward J. Hu, Yelong Shen, Phillip Wallis ほか · 2021-06-17 · v2arXiv:2106.09685論文ページ·PDF
原文の要旨(Abstract)を読む

An important paradigm of natural language processing consists of large-scale pre-training on general domain data and adaptation to particular tasks or domains. As we pre-train larger models, full fine-tuning, which retrains all model parameters, becomes less feasible. Using GPT-3 175B as an example -- deploying independent instances of fine-tuned models, each with 175B parameters, is prohibitively expensive. We propose Low-Rank Adaptation, or LoRA, which freezes the pre-trained model weights and injects trainable rank decomposition matrices into each layer of the Transformer architecture, greatly reducing the number of trainable parameters for downstream tasks. Compared to GPT-3 175B fine-tuned with Adam, LoRA can reduce the number of trainable parameters by 10,000 times and the GPU memory requirement by 3 times. LoRA performs on-par or better than fine-tuning in model quality on RoBERTa, DeBERTa, GPT-2, and GPT-3, despite having fewer trainable parameters, a higher training throughput, and, unlike adapters, no additional inference latency. We also provide an empirical investigation into rank-deficiency in language model adaptation, which sheds light on the efficacy of LoRA. We release a package that facilitates the integration of LoRA with PyTorch models and provide our implementations and model checkpoints for RoBERTa, DeBERTa, and GPT-2 at https://github.com/microsoft/LoRA.


巨大な行列は、見た目ほど「大きくない」

LLMの微調整手法として定番になったLoRAは、数十億パラメータのモデルを、その1%にも満たない追加パラメータで調整してしまいます。40億個のダイヤルがある機械を、数百万個の小さなダイヤルだけでチューニングできると言っているわけで、常識的には無茶な話です。

なぜ可能なのか。答えの根っこにあるのが、この記事の主役、特異値分解(SVD: Singular Value Decomposition)です。

行列はただの数値の表に見えますが、実データから生まれた行列は、見た目のサイズほどの情報を持っていないことがほとんどです。1000×1000で100万個の数値が並んでいても、実質は「10方向分」の情報しかない——そういうことが現実には頻繁に起きます。SVDはこの「実質的な情報量」を正確に測り、行列の中身を重要な順に並べ直す道具です。並べ直せば後ろを捨てられます。捨てたものが低ランク近似で、それを微調整に応用したものがLoRAです。

比喩: どんな変形も「回す・伸ばす・回す」

行列をベクトルに掛けるという操作は、空間の変形として絵に描けます。薄いゴムシートに円を描いて置き、行列を作用させると、シートが歪んで円が別の形になる——そんなイメージです。歪み方は千差万別に見えます。斜めに引き伸ばすもの、ぺちゃんこに潰すもの、裏返すもの。ところがSVDは、驚くほど単純なことを主張します。

どんな行列の変形も、「①シートを回す → ②縦横の軸に沿って別々の倍率で伸び縮みさせる → ③もう一度回す」の3手順で必ず再現できる。

例外はありません。正方形でない行列でも、対称でない行列でも、どんな行列でも成り立ちます。3手順のそれぞれに名前が付いていて、①最初の回転が VV^\top、②軸ごとの倍率が特異値 σ1σ20\sigma_1 \ge \sigma_2 \ge \cdots \ge 0、③最後の回転が UU です。

回転は形を変えないので、行列の「個性」は真ん中の倍率だけに集約されます。円は倍率の違いで楕円になり、長い軸が σ1\sigma_1(一番伸ばされる方向)、短い軸が σ2\sigma_2 に対応します。倍率がほぼ0の軸は変形でぺちゃんこに潰される軸——その方向の情報を行列がほとんど伝えていない軸です。低ランク近似の物語は、もうここから始まっています。

直感: 行列は一枚岩ではなく「層の重ね合わせ」

SVDにはもう1つ、この記事の本題により近い読み方があります。行列 AA を、rank-1(1方向の情報しか持たない、最も単純な行列)の層の足し算に分解するという読み方です。

A=σ1u1v1+σ2u2v2+σ3u3v3+A = \sigma_1 u_1 v_1^\top + \sigma_2 u_2 v_2^\top + \sigma_3 u_3 v_3^\top + \cdots

右辺は式というより買い物リストです。要するに「AA = 1枚目の層 + 2枚目の層 + 3枚目の層 + …」と言っているだけで、各層に掛かる数字は右へ行くほど小さくなります。

式の意味を言葉にします。各層 uiviu_i v_i^\top は「入力のうち viv_i 方向の成分だけを測り、その量を uiu_i 方向に出力する」だけの単機能な部品です。σi\sigma_i(特異値)はその層の音量つまみで、大きい層ほど行列全体の振る舞いへの寄与が大きい。音量の大きい層から順に重ねていけば、少ない層数で元の行列にどんどん近づいていきます。

viv_i 方向の成分を測る」の正体は内積です。内積は「片方のベクトルに、もう片方をどれだけ重ねられるか」を1つの数にしたものでした。下の図で2本のベクトルを回して、この感覚を確かめてください。

FIG 1内積は「片方のベクトルにもう片方をどれだけ重ねられるか」を測る。SVDの各層は、入力と v_i の内積を測って u_i 方向に流す——この一手だけでできた部品の重ね合わせが、あらゆる行列の正体

つまりSVDとは、「回す・伸ばす・回す」という幾何の分解であると同時に、「行列を単機能部品に分解して重要度順に並べる」という棚卸しでもあります。ここから先は、この棚卸しの強力さを定理と数字で確かめます。

仕組み: 式で書くSVD

ここまでの話を1本の式にまとめます。

A=UΣVA = U \Sigma V^\top
(1)

つまりこの1行は、「AA をベクトルに掛ける」とは「回して(VV^\top)、軸ごとに別々の倍率で伸ばして(Σ\Sigma)、もう一度回す(UU)」ということだ、と言っています。さっきのゴムシートの話を、そのまま記号に置き換えただけです。

各記号の意味はこうです。AAm×nm \times n の任意の行列(分解したい対象)。UUm×mm \times m の直交行列で、列ベクトル u1,u2,u_1, u_2, \ldots左特異ベクトル)は互いに直角な長さ1のベクトル——つまり回転(または鏡映)を表します。VV も同じく n×nn \times n の直交行列で、列が右特異ベクトル v1,v2,v_1, v_2, \ldots です。Σ\Sigma は対角線上に特異値 σ1σ20\sigma_1 \ge \sigma_2 \ge \cdots \ge 0 が大きい順に並んだ m×nm \times n の行列で、対角以外はすべて0です。

固有値分解と違い、SVDはどんな行列にも必ず存在します。正方でなくてもよく、対称である必要もない。この「無条件で使える」性質が、SVDが実務の第一選択になる理由です。

上位 層だけで打ち切ったものを と書きます。

この先にあるもの

§

ここから先は会員限定です

解説記事371本・教科書26章・学生モード48単元・論文精読6本が、月額¥490ですべて読み放題になります。新しい解説は毎日3本ずつ増えます。いつでも解約でき、解約後も期間の終わりまで読めます。

会員の方はログインすると続きが表示されます

参考文献

  1. Edward J. Hu, Yelong Shen, Phillip Wallis, Zeyuan Allen-Zhu et al.. (2021-06-17) LoRA: Low-Rank Adaptation of Large Language Models. arXiv:2106.09685論文ページ·PDF

本記事は上記論文の本文にもとづいて執筆しています。数値・主張は原典を優先してください。

コメント

コメントにはログインが必要です