今天是第14天,要進到一個在大型語言模型應用中越來越重要的主題:Evaluation (評估) 和 Metrics (指標)。
-
在開始前想先小小說一下整個概念掌握後的理解。雖說是對prompt進行評估(按字面上),但其實,要進行這樣的評估,也只能透過對「執行prompt後所得的結果」進行評估。這就像是,要評估某種耕種稻米的方法是否優良,也只能看產出的稻米的品質與數量。
所以,所謂「評估prompt」,實則上是對「模型產出的結果」進行評估。
帶著這樣的前置概念,可能可以對評估有更好地理解。
(也再說明,我單純只想掌握概念,無意細究高技術含量、專業工程...之類的東西。是根據這樣的想法做的理解筆記。)
-
● 評估 (Evaluation) 是什麼?
評估是指在「給定特定 Prompt 策略」的情況下,針對「LLM 模型的輸出」與「預期的參考輸出」,兩者之間的匹配度、品質和行為模式,進行評估。
● 評估什麼?
評估的是「系統的整體 Prompting 策略」;也就是去評估,系統開發者或 Prompt 工程師為了引導 LLM 所設計出來的「系統 Prompt (System Prompt)」或「指令 Prompt (Instruction Prompt)」。
被評估的系統 Prompt(System Prompt)&指令 Prompt (Instruction Prompt),基本會有以下環節:
- 系統級 Prompt (System-level Prompt)
- Prompt Chaining 中的各階段 Prompt (for複雜系統)
- 用戶輸入的上下文和指令
- Few-shot 範例**
**註:3 & 4 會以兩種方式進行評估:「預先模擬」 (即在開發和測試階段進行)、「上線後,根據實際案例累積的數據」 (即在生產環境進行)
● 什麼時候評估?
說明:評估基本上是一個持續的過程,從LLM 應用的開發、部署、維護,整個生命週期都在進行,正如所有其他軟體系統一般,持續的更新與優化。
評估的的應用情境大致有以下:
一、開發階段
目的: 快速驗證想法,加速迭代速度。
二、新功能或新模型的引入
目的: 確保集成順利,性能提升符合預期。
三、生產環境的監控
目的: 及早發現問題、確保服務穩定性、保持用戶滿意度。
四、「巨大執行錯誤」或「異常行為」
目的: 快速定位問題根源並修復。
五、針對特定用戶群體或邊緣案例的優化
目的: 提升模型在特定場景下的表現。
● 如何評估?
評估的基本流程與步驟有以下:
- 定義明確的目標和標準、建立評估數據集 (Evaluation Dataset):
包含設計的輸入 prompt 與預期產出的結果。在設計上須以現實使用情境為準。 - 選擇合適的評估方法和指標
- 結合定性(質化)與定量(量化)分析
- 定期執行評估,根據評估結果進行系統的迭代優化
● 三類型評估方法
如前所述,評估的對象基本上就是「LLM 的輸出」,方法有三類:
- 自動化評估 (Automated Evaluation)
應用場景: 大規模回歸測試、快速迭代中的初步篩選、對特定格式或內容要求嚴格的任務。 - 人工評估 (Human Evaluation)
應用場景: 最終品質驗證、關鍵任務的評估、需要主觀判斷的內容生成、新模型或新 Prompt 的初步探索。 - LLM-as-a-Judge
說明:使用另一個(通常是更強的) LLM 來評估。
應用場景: 自動化與人工評估以外的高效替代方案。
● 如何設定評估的「指標 (Metrics)」?
評估指標的設定要看是哪種類型的任務,所以,如何分類任務類型、有哪些任務,是優先需要知道的。**
**註:由於實際的指標涉入太多專業性概念、技術詞彙,這不是我想了解的。所以不會展開說明。
依照目前已大致普及的LLM來說,最主要的任務類型有以下:
- 生成任務 (文本摘要、翻譯、內容創作)
- 資訊提取任務 (Information Extraction - IE)
- 序列標註任務 (Sequence Labeling)
- 語法檢查與校對任務 (Grammar/Spelling Check & Proofreading)
- 程式碼相關任務 (Code-related Tasks)
- 對話系統/聊天機器人任務 (Dialogue Systems/Chatbots)
- 多模態任務 (Multimodal Tasks)
(當然,在現今如此快速的發展下,一定很快會有越來越多元的任務類型出現的。)