LoRA、完全微調到底有何不同?MIT 21頁論文講明白了

机器之心發表於2024-11-11

本文旨在瞭解兩種微調大型語言模型方法之間的差異:完全微調和低秩自適應 (LoRA)。這兩種方法都用於將預訓練模型適應特定的下游任務,但它們卻有所不同。


微調(Fine-tuning)是將經過預訓練的大語言模型應用於下游任務的關鍵範例。最近,低秩自適應 (LoRA) 等方法已被證明可以在各種任務上達到完全微調模型的效能,同時可訓練引數的數量卻大大減少。

這就提出一個問題,即它們學到的解決方案真的等效嗎?

帶著這一疑問,來自 MIT 的研究者在論文《 LORA VS FULL FINE-TUNING: AN ILLUSION OF EQUIVALENCE 》中進行了深入探討。
圖片
論文地址:https://arxiv.org/pdf/2410.21228v1

作者透過分析預訓練模型權重矩陣的光譜特性來研究不同的微調方法如何改變模型。

研究發現,完全微調與 LoRA 產生的權重矩陣奇異值分解結構有顯著不同,並且經過微調後的模型在面對超出適應任務分佈的測試時也顯示出不同的泛化行為。

特別是,LoRA 訓練的權重矩陣中出現了稱為「侵入維度(intruder dimensions)」的新的高秩奇異向量,而在完全微調中則不會出現這種情況。

這些結果表明,即使在微調分佈上表現相同,但使用 LoRA 和完全微調更新的模型訪問引數空間的不同部分。

作者透過研究 LoRA 微調模型中出現侵入維度的原因、它們為什麼不受歡迎,以及如何最小化這些效果來展開研究。

最後,作者給出了以下幾點觀察:

首先,LoRA 和完全微調在結構上產生不同的引數更新,這種差異由侵入維度的存在產生的。這些侵入維度是奇異向量,具有較大的奇異值,並且與預訓練權重矩陣中的奇異向量近似正交。相比之下,完全微調模型在光譜上與預訓練模型保持相似,不包含侵入維度。

其次, 從行為上看,與完全微調相比,具有侵入維度的 LoRA 微調模型會忘記更多的預訓練分佈,並且表現出較差的穩健連續學習能力:具有侵入維度的 LoRA 微調模型在適應任務分佈之外不如完全微調模型,儘管分佈準確度相當。

最後, 即使在目標任務上低秩 LoRA 表現良好,但更高秩的引數化可能仍然是可取的。低秩 LoRA(r ≤ 8)適合下游任務分佈,完全微調和高秩 LoRA(r = 64)讓模型泛化能力更強、自適應能力更加魯棒。然而,為了利用更高的秩,LoRA 更新模型必須是秩穩定的。

沃頓商學院副教授 Ethan Mollick 對此評論道:事實證明,使用 LoRA 定製通用 LLM(Apple 調優其裝置內建模型的方式),對 LLM 的限制遠大於微調,因為它們失去了一些泛化能力。原因是 LoRA 增加了不祥的侵入維度。
圖片
LORA 和完全微調模型的差異

本文采用神經網路引數的奇異值分解 SVD 來理解微調對預訓練權值的變化。

特別是,本文測量了用 LoRA 微調過的權重矩陣中的奇異向量或完全微調過的權重矩陣中奇異向量對映到預訓練權重中的奇異向量的程度,使用它們的餘弦相似性。這些關係如圖 1 和圖 3 所示,顏色表示預訓練和微調奇異向量之間的餘弦相似度。
圖片
圖片
圖 2 (b) 中觀察到,LoRA 和完全微調的奇異向量與預訓練奇異向量的相似度非常不同:與完全微調相比,使用 LoRA 微調的模型的奇異向量與預訓練奇異向量的平均餘弦相似度似乎要低得多。
圖片
圖 2 (b) 中左下角有一個唯一的紅點,作者將這些新維度命名為侵入維度,其正式定義如下:
圖片
LoRA 微調模型包含高秩侵入維度,而完全微調的模型則不包含。為了量化特定權重矩陣的侵入維度集的大小,作者使用圖 4 所示的演算法。
圖片
即使在 LoRA 微調模型學習效果不如完全微調的任務中,侵入維度也存在。

觀察圖 5b、5c 和 5d,我們可以清楚地看到,即使 LoRA 的 r=256,高秩奇異向量集中仍出現侵入維度。重要的是,當 r=2048 時沒有侵入維度,而是展示了與完全微調非常相似的曲線。這支援了早先的發現:隨著秩增加超過一個閾值,侵入維度會消失,LoRA 開始趨向於與完全微調相似。
圖片
即使使用滿秩矩陣執行 LoRA,完全微調更新也比 LoRA 更新具有更高的有效秩。如圖 6 所示,可以觀察到完全微調解決方案的有效秩明顯高於透過 LoRA 學習到的解決方案的有效秩,即使 LoRA 具有更高的秩。
圖片
LORA 和完全微調之間的行為差異

在較低秩,LoRA 在持續學習過程中的適應能力較差,會忘記更多之前的任務。該研究在多個任務上按順序訓練 RoBERTa,並測量學習新任務時效能的變化程度。

該研究使用與之前相同的訓練方案、資料集,但在持續學習環境中使用以下資料集(按順序)進行微調:MNLI、QQP、SST-2、SIQA、Winogrande、FEVER。在序列中某個資料集上進行訓練後,將 LoRA 權重合併到模型中,並在下一個任務訓練之前重新初始化,以便不受之前任務的影響。

在對特定任務進行訓練後,該研究對所有任務進行測試,對於每個任務,在測試測試集之前分別重新訓練分類頭。這能夠檢查模型在這些任務上表現如何,而無需實際更改模型本身。

結果如圖 8 所示。雖然 LoRA 最初與完全微調的效能相當,但較小的 LoRA 秩在持續學習過程中始終表現出更大的效能下降。特別是,對於前三個訓練資料集,當 r = 1 時 LoRA 的效能下降到預訓練基線以下。隨著 LoRA 秩的提高,我們可以看到這種遺忘行為減少,並且更接近於完全微調,甚至在完成持續學習後在 MNLI 上的遺忘也更少。

整體情況是微妙的:雖然在某些情況下,LoRA 似乎忘記得較少,但對於某些任務(以及某些秩)事實上,LoRA 可能會忘記更多。
圖片
對於微調到等效測試精度的 LoRA 模型,可以看到一條 U 形曲線,該曲線標識了適合下游任務的最佳等級,同時最小程度的忘記了預訓練分佈。

圖 9 報告了測量的偽損失分數。可以看到完全微調和 r = 768 時的 LoRA 之間呈現 U 形趨勢。

相對於完全微調,低秩(r = 1)和高秩(r = 768)都會導致預訓練分佈的遺忘更大,而對於 r = 64,遺忘較少。也就是說:當 r = 1 時,使用 LoRA 微調的模型受到侵入維度的影響,並且似乎比沒有侵入維度的 r = 64 有更多的遺忘。然而,當 r = 768 時,使用 LoRA 微調的模型也表現出更糟糕的遺忘,這表明由於過度引數化,它們對適應任務過度擬合。當 r = 8 和 r = 64 時,遺忘量少於完全微調。
圖片
瞭解更多內容,請參考原論文。

相關文章