提示微調 是什麼?
Prompt Tuning:提示微調 的完整解釋
一種輕量級的模型適配方法,通過學習可訓練的向量嵌入來優化輸入提示,而不修改模型權重,特別適合大規模語言模型。
核心概念
提示微調的核心思想是將傳統「調整模型參數」的問題轉化為「調整輸入」。人類在與語言模型互動時,設計合適的提示詞能引導模型生成高質量輸出。提示微調將這個過程參數化:用可訓練的向量代替自然語言提示,通過監督信號自動優化這些向量。這樣做的優勢是保持模型不變,只適配輸入,參數數量極少(通常 0.01% 的模型參數)。
提示微調與少數樣本提示(Few-Shot Prompting)和零樣本提示(Zero-Shot Prompting)的關係:零樣本和少數樣本都用自然語言提示,依賴人工設計;提示微調自動學習提示,不需要人工設計,性能通常更優。與軟提示(Soft Prompt)概念相關,提示微調本質上是學習軟提示的一種方法。
運作原理
提示微調的計算流程如下。傳統輸入序列:
input_tokens = [token_1, token_2, ..., token_n]
output = model(embed(input_tokens))
提示微調改為:
soft_tokens = [p_1, p_2, ..., p_m] # m 個可訓練向量,維度 = 嵌入維度 d
input_tokens = [token_1, token_2, ..., token_n]
combined = concat(soft_tokens, embed(input_tokens))
output = model(combined)
其中軟標記(soft_tokens)是完全可訓練的密集向量,初始化為隨機值或從訓練集的嵌入中採樣。前向傳播時,soft_tokens 和輸入嵌入拼接後送入模型。反向傳播時,只 soft_tokens 的梯度被計算並更新,模型本身凍結。
超參數選擇包括:軟標記數量 m(通常 20-100),更多軟標記表達能力更強但參數增加;初始化策略(隨機、均勻、採樣預訓練嵌入),好的初始化加快收斂。損失函數與任務相同(分類用交叉熵,生成用語言模型損失)。
實際應用
提示微調在 Google T5 實驗中首次系統評估。T5-base(220M 參數)在 SuperGLUE 基準上,提示微調只需訓練 20K 參數,達到 94% 的全參數微調性能。在低資源場景中優勢更明顯:只有 100 個樣本時,提示微調因過擬合風險小而優於全參數微調。
OpenAI API 用戶已廣泛使用提示優化技術改進模型性能,提示微調是其自動化演進。在多任務學習中,單個基礎模型通過多個獨立的提示微調適應不同任務,內存占用極小。跨語言遷移中,為新語言設計提示比訓練新模型快 100 倍。
在對話系統中,提示微調用於調整模型對特定領域術語和風格的理解。推薦系統中,為不同用戶人群微調提示以改進個性化推薦。輔助寫作工具中,提示微調使通用模型適應特定寫作風格和領域。
提示微調還用於多模態模型(如 CLIP),通過學習文本側的提示改進圖像檢索性能。
常見誤區
常見誤解認為提示微調就是「通過 API 優化提示詞」。實際上,API 級的提示工程仍依賴人工設計和試錯;提示微調是自動化的監督學習過程,通過梯度下降優化可訓練向量。
另一個誤區是認為提示微調性能必然低於全參數微調。實際上,在大模型(>1B 參數)上,提示微調通常達到 90-98% 的全參數微調性能。只有在超小模型(<100M)上才有明顯劣勢。
還有人認為提示微調只適合生成任務。實際上,它對分類、檢索、推理等各種任務都有效。
與相關技術的比較
- 與 LoRA 的區別:LoRA 修改模型內部權重,提示微調修改輸入;LoRA 參數多(0.1-1% 模型參數),提示微調更少(0.001-0.01%);LoRA 推理無額外開銷,提示微調需附加軟標記。LoRA 在小模型上優於提示微調,提示微調在超大模型上優勢明顯。
- 與適配器的比較:適配器插入模型內部,修改計算圖;提示微調只修改輸入,計算圖不變。提示微調更輕量,適配器更靈活。
- 與前綴微調的關係:前綴微調學習離散標記的嵌入,提示微調學習連續向量;兩者都在序列開頭操作,提示微調的連續向量優化更充分。
- 與知識蒸餾的組合:可用提示微調加速蒸餾過程,或蒸餾到帶優化提示的模型。