位元微調 是什麼?
BitFit:位元微調 的完整解釋
一種極致的參數高效微調方法,只訓練模型中偏置項(Bias)的某些位,相比全模型微調減少99.9%的訓練參數,成本極低但性能接近全參數微調。
核心概念
位元微調基於一個觀察:Transformer 中的偏置項(Bias)雖然數量遠少於權重矩陣(約為權重總量的 1/100),但對模型行為有不成比例的影響。偏置項調整每層輸入的整體分佈和激活度,相當於「校準」模型的內部狀態。通過訓練偏置項,可以將預訓練模型的特徵表示微調以適應新任務,而無需觸及權重矩陣。
位元微調包含多個變體。基礎版本訓練所有層的所有偏置項,參數數量約為模型參數的 0.1-0.5%;進階版本只訓練某些層(如只訓練注意力層偏置),進一步減少參數;最激進的版本使用位級量化,只訓練偏置向量的某些位(如只訓練最重要的 k 位),參數數減少 50 倍以上。
運作原理
BitFit 的實現非常簡單。在標準 Transformer 中,線性層計算為:
### y = x @ W + b
其中 W 是權重矩陣,b 是偏置向量。BitFit 的修改:
W: frozen (不更新)
b: trainable (通過梯度下降更新)
訓練流程與標準微調相同,唯一區別是在反向傳播時,設置 W 的梯度為 0(不更新),只累積 b 的梯度。可選的優化包括只凍結特定層的權重(如只凍結前 L/2 層,後 L/2 層的偏置訓練),或結合量化(如將偏置向量轉換為 8 位整數,只訓練其中的高位)。
參數化細節。設模型有 L 層,每層的偏置向量維度為 d,總偏置參數約 L×d。對於 BERT-base(110M 參數,768 維嵌入,12 層),偏置總數約 110K,僅為模型參數的 0.1%。如果進一步做位量化,只訓練 8 位中的 4 位,參數再減 50%。
實際應用
BitFit 在 Google 研究中首次提出,在 GLUE 基準上,用 0.1% 的參數達到全參數微調 91% 的性能,在許多任務上(如 MRPC、CoLA)性能完全相同。在低資源語言適配中,只需訓練幾千個偏置參數就能為新語言適配預訓練模型。
在多任務學習中,BitFit 的輕量性質允許為 100+ 個任務各訓練一個 BitFit 適配器,總參數仍小於一個全參數微調模型。在邊緣設備上,BitFit 適配器可以直接存儲在內存中,支持實時任務切換。
BitFit 還用於域適應和知識蒸餾。在域適應中,為新領域訓練輕量級 BitFit 模塊。在蒸餾中,用 BitFit 快速微調學生模型適應特定任務。某些系統中,用 BitFit 做初步適配,如果性能不足再升級到 LoRA 或適配器。
位元微調由於極端輕量,也用於聯邦學習場景,邊緣設備只需上傳微小的偏置更新,通訊成本極低。
常見誤區
常見誤解認為只訓練偏置項無法實現任務適配。實際上,偏置項在神經網絡中的作用被低估了。它們控制激活值的整體分佈,對特徵表示的轉移有顯著影響。實驗表明,訓練偏置項比隨機初始化微調權重矩陣(同樣數量參數)效果更好。
另一個誤區是 BitFit 只適合簡單任務。實際上,它在複雜生成任務(摘要、翻譯)上也表現良好,只是在某些特別複雜的場景下性能損失 2-5%。
還有人認為 BitFit 和 LoRA 等其他方法非此即彼。實際上,兩者可以結合:先用 BitFit 快速初步適配,再用 LoRA 進一步精調。
與相關技術的比較
- 與 LoRA 的區別:LoRA 修改權重矩陣,BitFit 只修改偏置項;LoRA 參數數百倍於 BitFit,但通常性能更好;BitFit 是極致的參數高效,LoRA 是性能與效率的平衡。
- 與提示微調的關係:兩者都超輕量,但位置不同。提示微調優化輸入,BitFit 優化內部偏置;BitFit 通常性能更穩定,提示微調在某些大模型上更有優勢。
- 與適配器的比較:適配器每層添加 MLP,參數數量 0.5-2%;BitFit 只修改偏置,參數數量 0.01-0.1%。BitFit 更輕,適配器更靈活。
- 與頻率微調(Frequency-based Tuning)的關係:频率微調選擇頻域特徵微調,BitFit 基於參數角色。BitFit 實現更簡單,頻率方法理論更深。