配置不同的學習率,LoRA還能再漲一點?
LoRA(Low-Rank Adaptation)是當前 LLM 的參數(shù)高效微調(diào)手段之一,此前我們在《梯度視角下的LoRA:簡介、分析、猜測及推廣》也有過簡單討論。這篇文章我們來學習 LoRA 的一個新結(jié)論:
給 LoRA 的兩個矩陣分配不同的學習率,LoRA 的效果還能進一步提升。
該結(jié)論出自最近的論文《LoRA+: Efficient Low Rank Adaptation of Large Models》[1](下稱“LoRA+”)。咋看之下,該結(jié)論似乎沒有什么特別的,因為配置不同的學習率相當于引入了新的超參數(shù),通常來說只要引入并精調(diào)超參數(shù)都會有提升。
“LoRA+”的特別之處在于,它從理論角度肯定了這個必要性,并且斷定最優(yōu)解必然是右矩陣的學習率大于左矩陣的學習率。簡而言之,“LoRA+”稱得上是理論指導訓練并且在實踐中確實有效的經(jīng)典例子,值得仔細學習一番。
結(jié)論簡析
“LoRA+”的結(jié)論是:為了使 LoRA 的效果盡可能接近最優(yōu),權(quán)重 B 的學習率應該要大于權(quán)重A的學習率。
注意,為了使初始模型等價于原始預訓練模型,LoRA 通常會將 A,B 之一全零初始化。筆者一開始以為,該結(jié)論是由于全零初始化導致的,所以應該依賴于全零初始化的位置,但仔細閱讀后發(fā)現(xiàn),“LoRA+”所聲稱的結(jié)論跟全零初始化無關(guān),也就是說,表面上 A,B 是對稱的,但實際上它們有著固有的不對稱性,以至于不管選擇 A 還是 B 來全零初始化,結(jié)論都是 B 的學習率要大于 A。這就有意思起來了。
不得不說。“LoRA+”原文的推導寫得相當讓人費解,下面筆者盡量用自己的思路來完成推導。大體上,它基于兩點假設(shè):1. 數(shù)值穩(wěn)定:模型每一層的輸出值都應該是數(shù)值穩(wěn)定的,跟網(wǎng)絡(luò)寬度無關(guān);2. 貢獻相當:為了使 LoRA 最優(yōu),A,B 兩個矩陣對效果應該有同等程度的貢獻。接下來我們逐一分析并量化這兩點假設(shè)。
數(shù)值穩(wěn)定
單看前向傳播來說,XA 的數(shù)值穩(wěn)定性確實不是必要的。但如果 XA 數(shù)值不穩(wěn)定同時 XAB 數(shù)值穩(wěn)定的話,那么有兩種情況:XA 數(shù)值偏大、B 數(shù)值偏小,根據(jù)求導公式,這將導致 A 的梯度偏小、B 的梯度偏大;反過來,XA 數(shù)值偏小、B 數(shù)值偏大,這將導致 A 的梯度偏大、B 的梯度偏小。
總而言之,XA 的數(shù)值不穩(wěn)定會導致 A,B 的梯度不穩(wěn)定,從而增加優(yōu)化難度,所以還是加上 XA 的數(shù)值穩(wěn)定性為條件比較好。
貢獻相當
這里使用了一階線性近似,其中 是 A,B 的梯度, 是(Frobenius)內(nèi)積運算,右端兩項就可以理解為 A,B 對效果的分別貢獻。但注意線性近似的有效性取決于增量 是小量,但對于訓練好的權(quán)重,它對于原始權(quán)重的增量還真未必是小量。
所以退而求其次,我們將“貢獻相當”假設(shè)改為“A,B 在每一步更新中應該對效果有同等程度上的貢獻”,由于單步更新的量通常很小,因此線性近似能比較好地滿足。
既然要考慮每一步的更新量,那么就引導我們到了優(yōu)化器的方向上。當前預訓練和微調(diào)的主流優(yōu)化器都是 Adam,那么我們就以 Adam 為主要分析對象。
其中 是各自的學習率,“LoRA+”的結(jié)論就是 。
將 SignSGD 的增量(2)代回式(1),那么就得到
快速推導
進一步的分析需要求出梯度的具體形式。再次設(shè) Y=XAB,那么可以求出:
但是還沒完,我們要檢查一下結(jié)果是否自洽,因為我們用到的條件之一是“前向的數(shù)值穩(wěn)定性”,至今為止還只是一個理想的假設(shè)。如何讓假設(shè)盡可能成立呢?戰(zhàn)勝一個假設(shè)的方法是引入另一個假設(shè):
根據(jù) Adam 的近似式(2),每步增量的數(shù)量級確實正比于學習率,但總的更新結(jié)果又不完全是每一步簡單疊加,所以這個假設(shè)給人的感覺就是“看上去有點道理,但又不完全有道理”。但不要緊,假設(shè)通常都是這樣子的,有點道理就行,剩下的就只能靠信仰了。
文章小結(jié)
這篇文章中,我們介紹并推導了一個名為“LoRA+”的結(jié)果,它支持 LoRA 的兩個低秩矩陣 A,B 存在固有的不對稱性,不管將哪個矩陣全零初始化,都應該將 B 的學習率設(shè)置得大于 A,以達到更優(yōu)的效果。
本文轉(zhuǎn)載自 ??PaperWeekly??,作者: 蘇劍林
