又一個針對LoRA的改進方法:
DyLoRA: Parameter-Efficient Tuning of Pretrained Models using Dynamic Search-Free Low Rank Adaptation
https://arxiv.org/pdf/2210.07558v2.pdf
https://github.com/huawei-noah/KD-NLP/tree/main/DyLoRA
LoRA存在的問題:
提出的方法:引入了一種動態低秩適應(Dy-LoRA)技術。通過對介面卡模組在訓練期間的不同秩所學到的表示進行排序,為一系列的秩而不是單一的秩訓練LoRA塊。
主要貢獻:
在每一個LoRA模組中,有一個向上投影和向下投影的矩陣。設我們想訓練LoRA模組在的範圍內操作,其中和可以被視為新的超引數。為了使LoRA模組在一系列的秩中工作,而不是單一的秩,我們需要確保增加或減少秩不會明顯阻礙模型的效能。實現這種行為的一種方法是在LoRA模組的訓練過程中對不同秩的資訊內容進行排序。在這方面,在每個訓練步驟中,我們對進行抽樣。形成一個預先定義的分類分佈其(支援度為Range[rmin, rmax]),並相應地截斷和矩陣。
和 是W的b截斷版本。
前向傳播計算時是這麼計算的:
損失的計算:
另外在訓練的時候增加了一個新的模組:frozen,即只更新截斷塊中第b個相關的行或者列。
整個流程如下:
需要注意反向傳播時是否是更新整個截斷塊還是第b個行或列。
首先是說明不同rank對結果的影響:
接著是該方法和其他方法的對比: