微調
微調是把一個已在大型通用任務上訓練好的模型,接著在你的特定目標資料上繼續訓練,使它原本就不錯的特徵調適到你問題的特性。它是遷移學習較豐富的那一半:與其凍結預訓練網路、只在其上訓練新的頭部,你讓預訓練的權重本身繼續移動。比喻是聘用一位有經驗的專業人士、為你特定的職場給予短而有針對性的在職訓練,而非從零教一個新手所有東西——他們已懂基本功,你只是讓他們專精化。
核心風險是災難性遺忘:若你訓練得太激進,大幅的更新會覆蓋掉模型帶來的寶貴通用知識,使你不比從零訓練好到哪去。第一道防線是小學習率,通常遠小於你從隨機初始化訓練時會用的(常小 10 到 100 倍),使權重溫和地調適而不被砸毀。許多實務者也使用短暫的暖身,以及一個差異化學習率,對早期通用的層更小、對較後任務特定的層較大,因為早期層需要最少的改變。
凍結層是另一個主要槓桿,在調適與過擬合及成本之間權衡。一個極端是凍結整個骨幹、只訓練新的輸出頭——快速、資料效率高,在目標資料稀少時安全。另一個極端是解凍並微調所有層——最具表達力,當你的領域與來源差異顯著時需要它,但耗資料且在小資料集上易過擬合。一條熱門的中間路線是漸進解凍:從頭部開始,隨訓練穩定再由上而下解凍各層,先調適最任務特定的層。
當模型巨大時,完整微調在計算與儲存上都變得昂貴(每個任務都要一份數十億權重的副本)。參數高效微調(PEFT)藉由凍結預訓練權重、只訓練極少量新參數來解決:LoRA 在既有層中注入小的低秩更新矩陣,而適配器(adapter)模組在凍結層之間插入小的可訓練瓶頸。它們在只訓練不到 1% 參數的情況下達到完整微調大部分的品質,這也是為何它們已成為把 CLIP 與 segment-anything 式模型等大型視覺與視覺語言模型調適到新任務的標準。
在小資料集上,兩階段配方常勝過一次微調全部:先凍結骨幹、只訓練新的頭部直到不再改善,再解凍、以小學習率微調整個模型。在隨機初始化的頭部仍發出巨大吵雜梯度時就微調骨幹,可能在頭部安定之前就破壞了好的預訓練特徵。