低秩適配(LoRA)
LoRA是一種參數高效的微調技術,透過學習低秩矩陣來適應預訓練模型,大幅減少訓練參數,降低計算成本。
完整說明
核心概念
LoRA的核心概念是基於這樣一個觀察:大型預訓練模型在適應新任務時,其權重的變化通常可以被分解為一個低秩矩陣。換句話說,模型的權重更新並不需要完全重新訓練所有參數,而是可以通過學習一個低秩的變化矩陣來實現。這個低秩矩陣的秩遠小於原始權重矩陣的秩,因此需要訓練的參數數量也大大減少。
LoRA的關鍵組成部分包括:
- 凍結的預訓練模型: 原始的預訓練模型的所有權重都被凍結,在訓練過程中不會被更新。
- 低秩適配器: 這是LoRA的核心,由兩個小的矩陣A和B組成,它們的秩r遠小於原始權重矩陣的維度。A和B是可訓練的參數。
- 並行添加: 低秩適配器的輸出與原始預訓練模型的輸出並行添加,形成最終的輸出。
運作原理
LoRA的運作原理可以概括為以下幾個步驟:
- 初始化: 凍結預訓練模型的所有權重。初始化低秩適配器A和B,通常A會使用隨機初始化,而B會初始化為零矩陣。
- 前向傳播: 輸入數據通過預訓練模型,同時也通過低秩適配器。低秩適配器的輸出是A和B的矩陣乘積,然後將其添加到預訓練模型的輸出中。
- 反向傳播: 計算損失函數的梯度,並僅更新低秩適配器A和B的權重。預訓練模型的權重保持不變。
- 迭代訓練: 重複步驟2和3,直到模型收斂。
數學公式表示:
假設原始預訓練模型的權重矩陣為W,輸入為x,輸出為h。LoRA引入的低秩適配器為A和B,秩為r。則前向傳播的公式為:
h = Wx + BAx
其中,BA是低秩矩陣,其秩為r。在訓練過程中,只有A和B的權重會被更新。
實際應用
LoRA在各種自然語言處理任務中都有廣泛的應用,例如:
- 文本生成: 使用LoRA微調大型語言模型,使其能夠生成特定風格或主題的文本。
- 文本分類: 使用LoRA微調預訓練模型,使其能夠更準確地對文本進行分類。
- 問答系統: 使用LoRA微調預訓練模型,使其能夠更好地回答用戶提出的問題。
- 機器翻譯: 使用LoRA微調預訓練模型,使其能夠更準確地將文本從一種語言翻譯成另一種語言。
LoRA的優勢在於:
- 參數高效: 只需要訓練少量的參數,大大降低了計算成本。
- 快速適應: 可以快速地將預訓練模型適應到新的任務上。
- 可插拔性: LoRA模塊可以很容易地添加到現有的預訓練模型中,也可以很容易地移除。
LoRA的局限性在於:
- 性能限制: 由於只訓練少量的參數,LoRA的性能可能不如完全微調的模型。
- 秩的选择: 低秩矩阵的秩r的选择会影响模型的性能,需要进行实验才能找到最佳值。
常見誤區
- LoRA是完全替代微調的方法: LoRA是一種參數高效的微調方法,但並不能完全替代完全微調。在某些情況下,完全微調可能仍然是更好的選擇。
- LoRA的秩越高越好: 秩越高,需要訓練的參數越多,但並不意味著性能一定會更好。需要根據具體任務進行實驗,找到最佳的秩。
- LoRA適用於所有預訓練模型: LoRA主要適用於大型預訓練模型,對於小型模型,LoRA的優勢可能不明顯。
相關術語
常見問題
延伸學習
延伸學習
想看 低秩適配 的完整影片教學?前往 美第奇 AI 學院