在完成了 Tokenization 和 Embedding,我們已經把語言轉換成了模型能理解的數字形式。
但問題來了:模型要怎麼從這些數字中真正學會語言知識?
答案就是透過Pre-training(預訓練) 與 Fine-tuning(微調)。
一、預訓練與微調的基礎概念與核心差異
預訓練(Pre-training)與微調(Fine-tuning)是深度學習中遷移學習的兩個關鍵階段,兩者在目的、數據和訓練方式上存在顯著差異。
核心定義與目標
-
預訓練(Pre-training): 目的在於在大規模通用數據集(例如 ImageNet 或 Wikipedia 文本)上訓練模型,讓模型學習通用特徵,例如圖像的邊緣、紋理,或語言的語法、語義與常識。這一步類似於**「打基礎」**。
- 在自然語言處理(NLP)領域,預訓練語言模型(PLM,如 BERT、GPT)的目標是預先學會「語言的常識」,這開啟了「先學語言,再學任務」的黃金時代。
-
微調(Fine-tuning): 在預訓練模型的基礎上,使用特定領域的小規模數據繼續訓練,目標是讓模型适配具體任務,提升任務性能,屬於**「專業化訓練」**。
數據與資源對比
維度 |
預訓練(Pre-training) |
微調(Fine-tuning) |
數據 |
規模龐大、通用性高(數十億文本/數百萬圖像) |
規模小(幾百到幾千樣本)、領域特定、高度相關 |
訓練起點 |
通常從隨機初始化開始 |
基於預訓練模型權重 |
計算資源 |
高(需要 GPU 集群,數天/週) |
低(單卡,幾小時/天),訓練時間短 |
訓練方式
在微調階段,可以選擇凍結部分層(固定底層通用特徵,僅訓練頂層)或全參數微調(調整所有參數,但使用較低的學習率以避免破壞已有知識)。
二、高效微調的革命性技術:LoRA(低秩適應)
LoRA (Low-Rank Adaptation) 是一種參數效率微調(PEFT)技術,旨在加速大型模型的微調並減少記憶體消耗。
LoRA 的運作原理
-
低秩分解(Low-Rank Decomposition): LoRA 使用兩個較小的矩陣($A$ 和 $B$)通過低秩分解來表示原始權重矩陣 ($\mathbf{W}$) 的更新量 ($\Delta \mathbf{W}$),即 $\Delta \mathbf{W} = \mathbf{B}\mathbf{A}$。
-
凍結權重: 原始的大型權重矩陣保持凍結,不參與訓練。
-
訓練適配器: 只有新引入的這兩個低秩矩陣($A$ 和 $B$,即適配器權重)被訓練以適應新數據。
-
結合結果: 訓練完成後,原始權重與適配器權重($A$ 和 $B$)結合以獲得最終結果。
LoRA 的主要優勢
-
大幅減少可訓練參數數量。
- 訓練速度更快,且計算和儲存成本更低。
- 允許為不同任務創建多個輕量化且可移植的模型(即只儲存 $A$ 和 $B$)。
- 在推論時,適配器權重可以合併到基礎模型中,不會增加額外的推論延遲。
- 相較於完全微調的模型,可達到相近或甚至更好的性能。
關鍵參數配置
在使用 LoraConfig
進行配置時,以下參數至關重要:
-
r
(Rank):更新矩陣的秩。秩越低,可訓練參數越少。通常建議盡可能增加秩,目標可以設定為 64 或 128。
-
target_modules
:指定將 LoRA 應用於模型中的哪些模組(例如,Transformer 模型中的注意力區塊)。
-
lora_alpha
:LoRA 縮放因子。
-
use_rslora
:啟用 Rank-Stabilized LoRA,它使用 $\text{lora_alpha}/\sqrt{r}$ 進行縮放,這有助於高秩(high-rank)的有效性。
三、結合模型壓縮:參數效率微調(PEFT)與量化微調
大型語言模型(LLM)即使使用 PEFT,其內建模型大小仍是記憶體上的挑戰。量化(Quantization) 技術通過減少表示每個權重所需的位元數來壓縮原始網路,以緩解 GPU 記憶體使用。
PEFT 的困境與量化需求
PEFT 旨在減少訓練期間的記憶體使用。然而,傳統的量化方法通常專注於部署(如 PTQ,訓練後量化),無法在微調期間減少 GPU 記憶體;而訓練感知量化(QAT)則會更新所有參數,失去了參數效率特性。因此,需要將 PEFT 與量化結合。
結合量化的進階 PEFT 技術
-
QLoRA (Efficient Finetuning of Quantized LLMs):
- 這是一種在量化(例如 4-bit)的 LLM 上執行 LoRA 微調的技術。
- 它引入了 Normal Float 4-bit (NF4) 數據類型,這被認為在資訊理論上對於常態分佈的權重是最佳的。
- 使用雙重量化(Double Quantization) 來進一步壓縮量化常數。
- 利用 Paged Optimizers(分頁優化器)管理 CPU-GPU 記憶體,為優化器狀態分配分頁記憶體,當 GPU 記憶體耗盡時,資料會自動轉移到 CPU RAM。
-
PEQA (Parameter-Efficient and Quant-aware Adaptation):
- PEQA 直接對量化後的參數進行微調,不依賴於先前 PEFT 模組。
- 它將全精度權重矩陣量化為子 4-bit 整數矩陣和一個純量向量,並只針對這個純量向量進行微調,以適應特定任務。
- PEQA 在減少模型大小(Model Size)和可學習參數數量方面表現出色。
-
QA-LoRA (Quantization-Aware Low-Rank Adaptation):
- 旨在解決 QLoRA 在低位元數(bit)下微調後,量化特性難以維持的問題。
- QA-LoRA 將 NF4 量化替換為 INT4 量化,並調整了適配器 $A$ 矩陣的結構,目的是在微調後仍能保持量化屬性。
四、微調流程中的參數與數據最佳化策略
尋找最佳微調參數是一個迭代的過程。
超參數(Hyperparameter)調整策略
-
一次只變動一個參數: 這是測試結果並確保能準確複製訓練過程的關鍵方法。
-
遵循既有經驗: 從社群中已知的成功參數或設定開始嘗試。
-
調整幅度:
- 對於學習率(Learning Rate):嘗試將其乘以 3 倍或除以 3 倍。
- 對於 Batch Size(批次大小):嘗試將其乘以 2 倍或除以 2 倍。
-
學習率排程: 至少嘗試兩種不同的學習率排程策略。
-
文件化與再現性: 務必仔細記錄每次實驗的所有細節、配置檔案和特定的數據集版本,以確保未來能夠精確重現訓練(reproduce)。
-
自動化工具: 可以使用像 WandB 的 Sweeps 或 Optuna 等工具來進行超參數搜尋。其中,Optuna 的設計被認為在計算資源的使用上是高效的。
數據集大小與參數的關係(LoRA 實踐)
-
提升效果的關鍵: 幾乎所有的模型改進都來自於改善數據。
-
小型數據集(SFT < 5000 樣本): 為限制過度擬合(overfitting),應使用較大的批次大小(Batch Size)、較高的 Epoch 數,以及中等的學習率。
- 例如,對於 500 個樣本的訓練,可以使用 Batch Size 64,Epoch 30。
-
大型數據集: 應採用較低的學習率,以避免陷入局部最小值。
輸出控制參數
在推論(inference)階段,一些參數可以控制生成結果的品質。例如,有人發現設定 Top P (0.95)、Min P (0.05-0.5)、動態 Temperature (0.8/2.35 閾值) 和 Smoothing (0.23) 之外,其他參數並未帶來可靠且顯著的差異。
五、從應用場景看學習策略的選擇
在應用大型語言模型(LLM)時,可以選擇零樣本學習、少樣本學習或微調,三者代表了不同的資源投入和性能策略。
學習策略比較
策略 |
定義 |
範例 (提取航司名稱) |
案例結果 (準確率) |
零樣本 (Zero-shot) |
在提示中不提供任何範例,依賴模型已具備的通用推理能力。 |
僅提供清晰且結構化的指令。 |
19% (作為基準線) |
少樣本 (Few-shot) |
在提示中提供幾個具體的任務範例。 |
在指令前加入數條 TWEET: LABEL: 的訓練樣本。 |
97% |
微調 (Fine-tuning) |
使用訓練數據集對現有的模型進行再訓練,並儲存更新後的權重。 |
使用與少樣本學習相同的控制數據集進行訓練。 |
91% 或 97% (結果與少樣本接近) |
少樣本學習與微調的取捨
少樣本學習和微調在特定任務(如實體提取)中可以產生相似的結果。選擇哪種方式取決於規模經濟(Economies of Scale):
- 如果團隊需要執行提示 10 萬次,那麼花費在微調上的時間和計算成本(GPU 或 Token 成本)是合理的,因為可以累積節省大量的提示 Token 費用並潛在提高輸出品質。
- 如果只需要使用提示幾次且已經有效,則沒有理由進行微調。
數據品質的重要性
在少樣本學習中,數據的品質和變異性比單純的數據數量更為關鍵。如果能策劃一個具有足夠變異性的少樣本數據集(例如 100 筆),使其足以代表更大的數據集(例如 900 筆),則可以在成本和工程上取得最佳效果。
六、對「預訓練與微調」典範的重新思考與挑戰
儘管「預訓練與微調」在深度學習領域確立了主流地位,但有研究開始挑戰這一典範,特別是在計算資源和數據規模不斷增長的背景下。
挑戰一:ImageNet 預訓練並非總是必需 (電腦視覺)
在物體偵測(Object Detection)和實例分割(Instance Segmentation)等電腦視覺任務中,傳統上 ImageNet 預訓練被視為必要步驟。然而,有研究發現:
-
收斂速度 vs. 最終精度: ImageNet 預訓練確實能加快訓練初期的收斂速度。
-
「從零開始」的可行性: 只要使用適當的正規化技術(如 Group Normalization, GN 或 Synchronized Batch Normalization, SyncBN),並訓練足夠長的時間(以彌補缺乏預訓練的基礎特徵學習),從隨機初始化開始訓練的模型,其最終精度可以媲美甚至超越微調模型。
-
弱化效果: 當目標任務對空間定位敏感度更高(如高 IoU 閾值的偵測或關鍵點偵測)時,預訓練帶來的優勢會減弱。
-
結論: ImageNet 預訓練是歷史上在目標數據不足或計算資源不夠時的「權宜之計」。如果目標數據集足夠大(例如 COCO 數據集大於 10k 圖像),直接在目標數據上訓練是值得考慮的有效解決方案。
挑戰二:模型架構與任務類型的匹配 (自然語言處理)
-
BERT 的優勢: BERT (Transformer Encoder 架構) 透過 Masked LM (MLM) 訓練,具有雙向理解能力。這使其在自然語言理解 (NLU) 任務(如問答、分類)中表現優異。
-
BERT 的局限: 由於其編碼器架構,BERT 不太適合自然語言生成 (NLG) 任務(如文章摘要、翻譯)。這類任務更常使用像 GPT (自回歸 LM) 或 T5 (Text-to-Text) 等擅長序列生成的模型。
結語
預訓練與微調讓大型語言模型能在龐大知識的基礎上,快速適應各種專業任務。
預訓練打下了通用的「語言常識」基礎,微調則讓模型在特定場景中發揮出精準的能力。這一套流程,奠定了近年 AI 成果爆發的核心。
然而,光靠預訓練與微調仍有一個限制:模型雖然聰明,但不一定「貼近人類偏好」。
因此,研究者提出了 RLHF(Reinforcement Learning with Human Feedback),讓人類回饋成為模型學習的「最後一哩路」。
下一篇我們就要探討 RLHF 在大型語言模型中的角色,以及它如何讓 AI 更加符合人類價值與需求。