
©PaperWeekly 原創 · 作者 | 蘇劍林
單位 | 科學空間
研究方向 | NLP、神經網路
眾所周知,LoRA 是一種常見的引數高效的微調方法,我們在《梯度視角下的LoRA:簡介、分析、猜測及推廣》做過簡單介紹。LoRA 利用低秩分解來降低微調引數量,節省微調視訊記憶體,同時訓練好的權重可以合併到原始權重上,推理架構不需要作出改變,是一種訓練和推理都比較友好的微調方案。此外,我們在《配置不同的學習率,LoRA還能再漲一點?》還討論過 LoRA 的不對稱性,指出給 A,B 設定不同的學習率能取得更好的效果,該結論被稱為“LoRA+”。
為了進一步提升效果,研究人員還提出了不少其他 LoRA 變體,如 AdaLoRA [1]、rsLoRA [2]、DoRA [3]、PiSSA [4] 等,這些改動都有一定道理,但沒有特別讓人深刻的地方覺。然而,前兩天的《LoRA-GA: Low-Rank Adaptation with Gradient Approximation》[5],卻讓筆者眼前一亮,僅掃了摘要就有種必然有效的感覺,仔細閱讀後更覺得它是至今最精彩的 LoRA 改進。
究竟怎麼個精彩法?LoRA-GA 的實際含金量如何?我們一起來學習一下。

基礎回顧
首先我們再來溫習一下 LoRA。假設預訓練引數為 ,那麼全量微調時的更新量自然也是一個 矩陣,LoRA將更新量約束為低秩矩陣來降低訓練時的引數量,即設 ,其中 以及 ,用新的 W 替換模型原引數,並固定 不變,只訓練 A,B,如下圖所示:
為了使得 LoRA 的初始狀態跟預訓練模型一致,我們通常會將 A,B 之一全零初始化,這樣可以得到 ,那麼初始的 W 就是 。但這並不是必須的,如果 A,B 都是非全零初始化,那麼我們只需要將 W 設定為:

也就是說將固定不變的權重從 換為 ,同樣可以滿足初始 W 等於 這一條件。
需要指出的是,LoRA 往往只是視訊記憶體不足的無奈之選,因為一般情況下全量微調的效果都會優於 LoRA,所以如果算力足夠並且要追求效果最佳時,請優先選擇全量微調。這也是 LoRA-GA 的假設之一,因為它的改進方向就是向全量微調對齊。使用 LoRA 的另一個場景是有大量的微型定製化需求,我們要存下非常多的微調結果,此時使用 LoRA 能減少儲存成本。

LoRA-GA 提出了一個非常深刻的最佳化點:透過 我們可以保證 W 的初始值等於 ,即初始狀態的 LoRA 與全量微調是等價的,那麼我們是否還可以調整 和 ,使得 LoRA 和全量微調在後續訓練中也儘可能近似?比如最簡單地,讓經過第一步最佳化後的 儘可能相等?
越仔細回味,我們會越發現這個最佳化點是如此“直擊本質”——LoRA 的目標不就是“以小搏大”,希望能接近全量微調的效果嗎?既然如此,儘可能對齊全量微調的後續更新結果,不就是最正確的改進方向?從逼近的角度來看,“W的初始值等於 ”相當於全量微調的零階近似,保持後面的 接近,則相當於是更高階的近似,是合情合理的選擇,所以筆者看完摘要後就有種“就是它了”的強烈感覺。
具體來說,假設我們的最佳化器是 SGD,那麼對於全量微調,我們有:

其中 是損失函式, 是學習率。如果是 LoRA 的話,那麼有:

最後的近似省略了 的二階項。現在兩個 具有相似的形式,為了讓它們儘可能近似,我們可以考慮最小化:

其中 是矩陣的 Frobenius 範數平方,即矩陣每個元素的平方和。

求解過程
簡單起見,我們記 ,那麼目標(4)可以簡寫成:

注意 的秩頂多為 r,它們相加後的秩頂多為 2r,我們假設 ,所以上述目標相當於尋找 的一個秩不超過 2r 的最優近似。
我們先考慮 是非負對角陣的情形,並且對角線元素已經按照從大到小的順序排列。這個例子很簡單,它的秩不超過 2r 的最優近似就是隻保留對角線前2r個元素的新對角矩陣,這個結論叫做“Eckart-Young 定理”[6],而能讓 只保留 的前 2r 個對角線元素的 可以是(分塊矩陣):

其中 分別是 n,m 階單位陣, 和 就是像 Python 切片那樣,取前r列和第 行。注意我們說的是“可以是”,也就是說解並不唯一,說白了就是要把 的前 2r 個對角線元素挑出來, 和 各挑一半,至於怎麼分配就無所謂了。上面給出的解,對應的是 挑出前r個, 挑出第 個。
當 不是對角陣時,我們將它 SVD 為 ,其中 為正交矩陣, 為對角矩陣,對角線元素非負且從大到小排列。代入式(5)後得到:

前兩個等號都是簡單的代換,第三個等號是因為正交變換不改變Frobenius範數(請讀者自行證明一下)。經過這樣的轉換,我們發現逼近的物件重新轉變為對角陣 ,自變數則變成了 ,那麼按照 是對角矩陣時所給出的解,我們得到


現在我們就得到了 LoRA 的一種初始化方法:
LoRA-GA 選取一批樣本,計算初始梯度 ,對梯度SVD為 ,取U的前r列初始化A,取V的第 行初始化B。
這樣 LoRA + SGD 得到的 就跟全量微調的 儘可能相近了。此外,梯度最重要的是方向,其模長不大重要,所以初始化結果我們還可以乘以個 scale,LoRA 本身也可以乘以個 scale,即 ,這些都是LoRA 常見的超引數,這裡就不展開討論了。順便提一下,形式上跟LoRA-GA比較相似的是 PiSSA [4],它是對 做 SVD 來初始化 A,B,這在理論支援上就不如 LoRA-GA 了,是一個純粹的經驗選擇。
當然,可能有讀者會發現目前的推導都是基於 SGD 最佳化器的假設,那麼對於我們更常用的 Adam 最佳化器,結論是否要做出改變呢?理論上是要的。我們在《配置不同的學習率,LoRA還能再漲一點?》討論過,對於 Adam 來說,第一步最佳化結果是 而不是 ,這樣重複前面的推導,我們可以得到最佳化目標為:

由於符號函式 的存在,我們沒法求出它的解析解,所以針對 Adam 的理論分析就只能止步於此了。
在這個背景下,對於 Adam 最佳化器,我們有三個選擇:
1. 信仰:直接引用 SGD 的結果,相信它也可以在 Adam 中發揮同樣的效果;
2. 硬剛:用最佳化器直接去最小化目標(9),由於目標比較簡單,計算量尚能接受;
3. 投機:直覺上將 換成 ,然後代入 SGD 的結論,可能更貼合 Adam。
看起來原論文選擇的是第 1 個方案,論文的實驗結果確實也支援這一選擇。

實驗效果
論文的實驗結果還是比較驚豔的,尤其是在 GLUE 上取得了最接近全量微調的效果:

▲ LoRA-GA + T5-Base在GLUE上的表現
平均來說,訓練資料量越少,相對提升的幅度越大,這表明 LoRA-GA 對齊全量微調的策略,不僅有助於提高最終效果,還能提高訓練效率,即可以用更少的訓練步數就能達到更優的效果。
在 LLAMA2-7b 上的表現也可圈可點:

▲ LoRA-GA + LLAMA2-7b在幾個Benchmark的表現
注意使用 LoRA 的主要場景是視訊記憶體不足,但 LoRA 的初始化需要求出所有訓練引數的完整梯度,這可能會由於視訊記憶體不足而無法實現。為此,原論文提出的技巧是我們可以一個個引數序列地求梯度,而不是同時求所有訓練引數的梯度,這樣就可以把單步計算的視訊記憶體降下來。序列求梯度雖然會降低效率,但初始化本身是一次性工作,因此稍慢點也無妨。至於怎麼實現這個操作,不同框架有不同方法,這裡也不展開討論了。

文章小結
本文介紹了 LoRA 的一個新改進 LoRA-GA。雖然 LoRA 的各種變體並不鮮見,但 LoRA-GA 以非常直觀的理論指導折服了筆者,其改進思路給人一種“確認過眼神,它就是對的論文”的感覺,再配上可圈可點的實驗結果,整個過程如行雲流水,讓人賞心悅目。

參考文獻

[1] https://papers.cool/arxiv/2303.10512
[2] https://papers.cool/arxiv/2312.03732
[3] https://papers.cool/arxiv/2402.09353
[4] https://papers.cool/arxiv/2404.02948
[5] https://papers.cool/arxiv/2407.05000
[6] https://en.wikipedia.org/wiki/Low-rank_approximation
更多閱讀

#投 稿 通 道#
讓你的文字被更多人看到
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋樑,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學術熱點剖析、科研心得或競賽經驗講解等。我們的目的只有一個,讓知識真正流動起來。
📝 稿件基本要求:
• 文章確係個人原創作品,未曾在公開渠道發表,如為其他平臺已發表或待發表的文章,請明確標註
• 稿件建議以 markdown 格式撰寫,文中配圖以附件形式傳送,要求圖片清晰,無版權問題
• PaperWeekly 尊重原作者署名權,並將為每篇被採納的原創首發稿件,提供業內具有競爭力稿酬,具體依據文章閱讀量和文章質量階梯制結算
📬 投稿通道:
• 投稿郵箱:[email protected]
• 來稿請備註即時聯絡方式(微信),以便我們在稿件選用的第一時間聯絡作者
• 您也可以直接新增小編微信(pwbot02)快速投稿,備註:姓名-投稿

△長按新增PaperWeekly小編
🔍
現在,在「知乎」也能找到我們了
進入知乎首頁搜尋「PaperWeekly」
點選「關注」訂閱我們的專欄吧
·
·
·
·

關鍵詞
引數
矩陣
結果
訓練引數
效果