有名な論文を読んでみました。
LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS
Edward Hu∗ Yelong Shen∗ Phillip Wallis Zeyuan Allen-Zhu Yuanzhi Li Shean Wang Lu Wang Weizhu Chen
Microsoft Corporation
https://arxiv.org/abs/2106.09685
量子計算でテンソルを学ぶと機械学習もやりたくなりますね。今回は有名なLoRAです。低ランク近似で機械学習や量子計算でもお馴染みですね。
大規模な機械学習モデルを学習させようとすると、事前学習モデルと呼ばれる十分に学習されたモデルをファインチューニングと呼ばれる重みを変更するようなチューニングを行う必要がありますが、これには非常に時間がかかるため、代わりとなるような方法が模索されています。転移学習のように後段にパラメーターを追加するのもあると思いますが、今回はそれとは異なってより簡単にモデルを変更できるようなものを紹介してるようです。
後段に層を追加するようなものは推論時の遅延を招いたり、基本的にはベースとなるモデルの性能を上回るのが難しいという問題もあるようです。そこで下記の論文のアイデアをベースとしてdense layerを置き換えるような手法がLoRAとして提案されています(これらは別の機会に読んでみようと思います)。
Intrinsic Dimensionality Explains the Effectiveness of Language Model Fine-Tuning
Armen Aghajanyan, Luke Zettlemoyer, Sonal Gupta
https://arxiv.org/abs/2012.13255
Measuring the Intrinsic Dimension of Objective Landscapes
Chunyuan Li, Heerad Farkhoor, Rosanne Liu, Jason Yosinski
https://arxiv.org/abs/1804.08838
探してみたらいろんな日本語の解説サイトがあったのであまり詳しくは触れないことにしました。。。
LoRA: Low-Rank Adaptaion of Large Language Models の解説
https://zenn.dev/fusic/articles/paper-reading-lora
[輪講資料] LoRA: Low-Rank Adaptation of Large Language Models
https://speakerdeck.com/hpprc/lun-jiang-zi-liao-lora-low-rank-adaptation-of-large-language-models
論文解説 LoRA : Low Rank Adaptation of Large Language Models
【画像生成】大規模モデルのファインチューニング手法LoRAについて解説
https://book.st-hakky.com/data-science/lora/
AI を自分好みに調整できる、追加学習まとめ ( その5: LoRA)
https://note.com/te_ftef/n/n096ef64cb6c1
概要
基本的には、下記のように左側は学習に時間がかかったり、層が深くなると推論でも影響が出るので、低ランク行列をパラメータを固定した行列と並列に準備して導入してそちらだけを学習させる。
追加部分の低ランク行列ですが、元の事前学習モデルの重みをW0として、調整後の重み行列Wは、
W = W0 + ΔW
のように差分をΔWとすると、この部分が、低ランク行列の組み合わせになっていて、BAというBとAを導入します。初期状態もわかりやすくて、Aは正規分布で初期化され、B=0の行列を準備するので、初期状態は固定のパラメータの行列に影響を与えない。
固有ランク、潜在変数のランクrはかなり小さくても良いみたいで、
論文より引用
rがかなり小さくてもあまり精度が下がってないのがすごいですね。これで本当に実装ができるのがすごいです。実際に今後は実装を通じてみてみたいところです。
LoRAに関しては結構日本語でも解説記事があるので、学びやすいと思いました。LLMや拡散モデルでも利用される追加学習モデルなので期待です。以上です。