畢業生工作分類案例研究
前言
大型語言模型在分類任務中表現亮眼,但成效高度依賴提示設計。透過實際案例研究,我們將探討不同提示策略如何影響模型效能,並整理出能顯著提升準確率與 F1 分數的關鍵做法。
本篇目標
研究重點整理
克拉維等人,2023年發表了一項案例研究,探討了提示工程應用於實際生產系統中的中型文本分類案例。他們以判斷職位是否為適合應屆畢業生的「入門級職位」為任務,評估了一系列提示工程技術,並使用 GPT-3.5 (gpt-3.5-turbo) 報告了研究結果。
這項研究顯示,大型語言模型(LLM)的表現超越了所有其他受測模型,包括極為強大的基準模型 DeBERTa-V3。gpt-3.5-turbo 在所有關鍵指標上也顯著優於舊版的 GPT-3 模型。然而,gpt-3.5-turbo 需要額外的輸出解析,因為它在遵循模板方面的能力似乎不如其他變體。
他們快速工程方法的主要發現是:
-
對於像這樣不需要專業知識的任務,在所有實驗中,少針CoT提示比Zero-shot提示的表現更差
-
提示對引出正確推理的影響是巨大的。簡單地要求模型對給定的工作進行分類,就會得到 F1 分數 65.6,而後提示工程模型的 F1 分數是 91.7。
-
在所有情況下,試圖強制模型堅持使用範本都會降低性能(這種行為在使用 GPT-4 的早期測試中消失,這是在論文之後)。
-
許多小的修改對效能產生了巨大的影響
-
下表顯示了測試的完整修改
-
正確給出指示並重複關鍵點似乎是最大的性能驅動因素。
-
簡單的事情,比如給模型一個(人類)的名字,並稱其為F1分數增加了0.6分
測試了提示修改
| 名稱 | 描述 |
|---|---|
| Baseline(基線) | 提供招聘廣告,並詢問他是否適合畢業生 |
| CoT | 在查詢之前,舉幾個準分類的具有代表範例 |
| Zero-CoT | 要求模型在提供答案之前進行逐步推理 |
| rawinst(原始指令) | 提供給 LLM 的最基礎、未經處理的指令或提示 |
| Sysinst(系統指令) | 一種特殊的提示,用於設定模型在整個對話或特定任務中的整體行為、角色和限制 |
| bothinst(兩種指令) | 與 LLM 互動時,不僅提供了一個持續影響模型行為和角色的「幕後」系統指令,同時也包含了使用者針對特定當前任務提出的「即時」指令。 |
| mock | 模擬物件或程式碼,用於模仿真實程式碼的行為 |
| relt | 通過重複來強化說明中的關鍵要素 |
| strict | 要求模型嚴格遵循給定的模板來回答 |
| loose | 只詢問根據給釘模板進行回答 |
| right | 要求模型得出正確的結論 |
| info | 提供更多資訊,以解決常見的推理失敗 |
| name | 給模型指定義一個名稱,我們在對話中用這個名稱來引用它 |
| pos | 在查詢模型之前,先提供積極的反饋 |
各種提示修改對效能的影響
以下表格總結了各提示策略對性能的影響,包括精確度(Precision)、召回率(Recall)、F1 分數及模板遵循度(Template Stickiness,指模型按指定格式回答的頻率):
| 精確的 | 招回 | F1系列 | 模板黏性 | |
|---|---|---|---|---|
| Baseline | 61.2 | 70.6 | 65.6 | 79% |
| CoT | 72.6 | 85.1 | 78.4 | 87% |
| Zero-CoT | 75.5 | 88.3 | 81.4 | 65% |
| +rawinst | 80 | 92.4 | 85.8 | 68% |
| +sysinst | 77.7 | 90.9 | 83.8 | 69% |
| +bothinst | 81.9 | 93.9 | 87,5 | 71% |
| +bothinst+mock | 83.3 | 95.1 | 88.8 | 74% |
| +bothinst+mock+reit | 83.8 | 95.5 | 89.3 | 75% |
| +bothinst+mock+reit+strict | 79.9 | 93.7 | 86.3 | 98% |
| +bothinst+mock+reit+loose | 80.5 | 94.8 | 87.1 | 95% |
| +bothinst+mock+reit+right | 84 | 95.9 | 89.6 | 77% |
| +bothinst+mock+reit+right+info | 84.9 | 96.5 | 90.3 | 77% |
| +bothinst+mock+reit+right+info+name | 85.7 | 96.8 | 90.9 | 79% |
| +bothinst+mock+reit+right+info+name+pos | 86.9 | 97 | 91.7 | 81% |
範本黏性是指模型以所需格式回答的頻率。
表格各項修改的意義與效果解析
- Baseline:最基本的 prompt,僅請模型判斷職缺是否為畢業者適合職位,F1 僅有 65.6%。
- CoT (Chain-of-Thought):加入 few-shot 示例,引導模型思考流程,F1 明顯提升至 78.4,template stickiness 也增加到 87%。
- Zero-CoT:Zero-shot 並加入 step-by-step reasoning,引導但不示例;F1 達 81.4,但 stickiness 降到 65%(模型不太遵循預期模板)。
- 逐步加入指令性修改:
- rawinst:將角色/任務指令放入 user message → F1 提升至 85.8。
- sysinst:則放入 system message → F1 達 83.8。
- bothinst:系統與使用者訊息都提供指令 → F1 進一步到 87.5。
- 加強提示清晰度與重複提醒:
- mock:模擬對話情境使模型確認指令 → F1 88.8。
- reit:重複關鍵指令元素,增強模型抓住重點 → F1 89.3。
- 加入模板強制或放寬:
- strict:強制模型完全依模板回應,stickiness 飆到 98%,但 F1 降為 86.3(模板一致性高,但犧牲些許效能)。
- loose:只要求最終答案符合模板,stickiness 仍高(95%),F1 87.1。
- 方向性與資訊補充:
- right:提示模型需要找出「正確結論」,推高 F1 89.6。
- info:提供更多防止推理失敗的資訊 → F1 90.3。
- 人性化名稱與正向回饋:
- name:給模型一個名字稱呼,增加互動化感受 → F1 提升至 90.9。
- pos:在提問前給予正面回饋提示(如「你做得很好」),F1 最終達到 91.7,Recall 高至 97%,stickiness 則為 81%。
表格總結洞察
- 累加效益明顯:Baseline 的 F1 65.6 最終累積提升至 91.7,模仿人類提示設計的引導效果非常顯著。
- 指令清晰度與重複提醒是核心推升因素:如 rawinst、bothinst、mock、reit 等方向性的設計帶來穩定提升。
- 模板一致性與效能間的折衷:strict 提升模板一致性,但犧牲效能;loose 是更好的折衷方式。
- 微調人性化元素也有效果:加入名稱與正向回饋讓模型「感覺更被尊重」,也有助提升分類準確度。
References
Graduate Job Classification Case Study