搜尋意圖: 如果你在找「提示微調 是什麼」或「提示微調 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。
TL;DR: 一種輕量級的模型適配方法,通過學習可訓練的向量嵌入來優化輸入提示,而不修改模型權重,特別適合大規模語言模型。
實用情境: 適合用在閱讀 AI 文章、產品文件或和同事討論時,先用一頁快速對齊概念。
下一步: 先讀完定義,再往下看延伸比較與對應工具,把概念轉成實際應用。
一種輕量級的模型適配方法,通過學習可訓練的向量嵌入來優化輸入提示,而不修改模型權重,特別適合大規模語言模型。
核心概念
提示微調的核心思想是將傳統「調整模型參數」的問題轉化為「調整輸入」。人類在與語言模型互動時,設計合適的提示詞能引導模型生成高質量輸出。提示微調將這個過程參數化:用可訓練的向量代替自然語言提示,通過監督信號自動優化這些向量。這樣做的優勢是保持模型不變,只適配輸入,參數數量極少(通常 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 在小模型上優於提示微調,提示微調在超大模型上優勢明顯。
- 與適配器的比較:適配器插入模型內部,修改計算圖;提示微調只修改輸入,計算圖不變。提示微調更輕量,適配器更靈活。
- 與前綴微調的關係:前綴微調學習離散標記的嵌入,提示微調學習連續向量;兩者都在序列開頭操作,提示微調的連續向量優化更充分。
- 與知識蒸餾的組合:可用提示微調加速蒸餾過程,或蒸餾到帶優化提示的模型。
常見問題
為什麼提示微調能用這麼少的參數達到接近全參數微調的性能?
這源於遷移學習的能力。預訓練模型已經學會了通用知識,微調過程本質上只是「告訴模型」「對這個任務做什麼」。提示是這個「告訴」過程的載體,通過優化幾千個提示參數就能引導模型應用已有知識到新任務。實驗觀察顯示,大模型的優化過程中,參數更新通常集中在較低秩子空間,提示微調恰好優化了這個子空間的輸入投影。換個角度,如果把模型視為函數 f_θ(x),全參數微調改變 θ,提示微調改變 x。對於良好泛化的預訓練模型,改變 x 往往足夠有效,相當於利用模型已有的多樣化特徵。
軟標記的數量如何選擇?是否越多越好?
軟標記數量 m 影響模型適配的靈活性與過擬合風險。太少(如 m=5)表達能力受限,特別複雜任務可能無法完全適配;太多(如 m=500)雖然理論上更靈活,但面臨過擬合,特別在數據少時。一般建議:小模型 m=20-50,中等模型 m=50-100,大模型 m=100-200。更精確的選擇可以通過驗證集性能評估:從 m=20 開始,逐步增加,當驗證性能不再改進時停止。另一個啟發式是讓軟標記數佔序列長度的 5-10%,即序列長 512 時 m=25-50。實驗發現,不同任務最優 m 差異較大,沒有普適值,需要小規模預實驗確定。
提示微調的軟標記初始化對性能影響有多大?
初始化對提示微調影響較大,特別是數據少時。隨機初始化通常需要更多訓練步數收斂;從預訓練嵌入採樣初始化(如從訓練集詞彙隨機選擇幾個詞的嵌入作為初始軟標記)能加快收斂 2-3 倍,最終性能也高 1-2%。這是因為好的初始化提供了語義信號,模型不必從零開始學習。先進的初始化策略包括:(1)從訓練數據高頻詞的嵌入初始化;(2)聚類初始化,用 K-means 聚類訓練數據的嵌入,用聚類中心初始化軟標記;(3)任務相關初始化,用與任務相關詞彙的嵌入初始化。實踐中,簡單的隨機採樣預訓練嵌入初始化通常效果就不錯,複雜初始化策略的收益邊際遞減。