自動評估基準 | 設計你的自動評估任務
設計你的自動評估任務
這是 自動評估基準 系列文章的第二篇,敬請關注系列文章:
- 基礎概念
- 設計你的自動評估任務
- 一些評估測試集
- 技巧與提示
選擇數據集
做評估時,你可以選擇現有的數據集 (參考 一些評估數據集 頁面) 作為測試集,也可以設計自己的數據集。有一點非常重要,請注意:評估的結果與評估的數據集質量高度相關 。
使用現有的數據集
這部分強烈建議仔細閱讀!
數據集需要注意的問題
樣本是由誰創建的?
在我看來,按照樣本的標注員素質高低,數據集質量大致排名如下:專家構建數據集 > 付費標注數據集 > 眾包數據集 > MTurk 數據集。
你可以在數據集的說明文檔 (data card) 找到標注員的統計信息,可以幫助理解數據集語言多樣性。
-
樣本是否經過其他標注員或作者的審核?
你需要先弄明白:- 不同標注員標注結果是否一致?
- 完整數據集是否經過作者審核?
標注員通常不是目標語言的母語使用者(例如 AWS Mechanical Turk),否則可能會出現拼寫錯誤、語法錯誤或無意義的答案。
-
是否給標注員提供了明確的數據創建指導?
換句話說,數據集樣本間的標注標準是否一致?
檢查樣本
隨機抽取 50 個樣本進行人工檢查:
- 檢查質量:
- 問題是否明確且不含歧義?
- 對應的回答是否正確?( 例如:TriviaQA 的每個問題通常包含多個標準答案,有時這些答案會相互沖突。 )
- 信息是否完整?( 例如: MMLU 有許多問題中缺少參考示意圖。 )
- 檢查與任務相關性:
- 樣本問題是否是 LLM 特定評估任務的問題類型?
- 樣本是否與測試用例相關?
數據集樣本數量同樣重要 (以確保自動評估基準結果在統計上顯著,一般至少需要 100 個測試樣本)。
設計自己的數據集
有 3 種設計方法:
整合數據
要使用自己的測試集評估模型執行特定任務的能力,可以從不同的現成數據源整理和聚合。實際上有許多評估測試集都是以這種方式構建的,例如 MATH 和 LSAT 就聚合了人工評估數據集。當然在整理數據時,請遵循上文的質量與任務相關性檢查步驟。
人工標注
關于 人工標注 的內容,本指南有一整個篇幅詳細介紹,可以自行點擊 Using human annotators 閱讀。
合成數據
-
使用 LLM 合成
這部分可以參考 HF 員工的 Cosmopedia 博客!雖然此篇主要研究如何構建訓練集,但想法和技術同樣適用于構建測試集。
合成的測試集仍需手動檢查 (遵循上文步驟)。 -
基于規則合成
如果任務允許,這個絕佳的方法幾乎可以無限獲取測試樣本,并且避免數據污染。
參考 NPHardEval,DyVal,MuSR, BabiQA 等。
選擇推理方法
除了測試集,還需要選擇合適的推理方法。
對于多項選擇問答任務 (通常用于測試模型的知識儲備或消除歧義的能力),使用對數概率 (MCQA) 非常有效。
- 優勢:
- 可以保證所有模型都能獲取正確答案。
- 能夠提供模型 “置信度” 代理 (以及校準)。
- 評估速度快,尤其是單 token 預測任務時 (選擇索引 A/B/C/D 或 Yes/No 等)。
- 允許獲取小模型在任務表現上的信號。
- 劣勢:
- 可能高估小模型的表現。如果不做限制,會使得模型生成的內容超出可選范圍。
- 估結果可能不具代表性。一些模型 傾向于按多項選擇的順序生成特定選擇。
對于測試模型流暢性、推理或回答問題能力的任務,使用 QA 生成非常有效。
- 優勢:
- 與人類關心的點一致,即 LLM 生成文本是否流暢的能力。
- 劣勢:
- 可能存在評分困難 (見下面的
度量標準部分)。 - 成本比對數似然評估稍高,尤其是需要采樣的任務。
- 可能存在評分困難 (見下面的
選擇 prompt
Prompt 設計關鍵問題:
- 提供給模型的關于任務的信息量大小
- 如何向模型提供信息
MCQA 或 QA 任務的通用 prompt 設計范式一般包含以下幾個部分:
- 任務 prompt (可選):描述任務。
- 上下文:為問題提供額外的背景信息。
- 例如: 對于內容總結或信息提取任務,可以提供內容來源
- 問題:prompt 的核心內容。
- 對于多項選擇評估任務,可以增加選項。
- 連接詞 (
問題、上下文、選項等)。
定義 prompt 時需要注意:
- 在語義等價的 prompt 中,即使非常微小的變化也可能導致巨大差異的結果 (詳見 Troubleshooting reproducibility 的
Different prompt部分),并且 prompt 格式也可能對特定模型的輸出造成影響。- 如何緩解這一問題:
- 高成本方法:使用不同的 prompt 變體進行多次評估。
- 低成本方法:使用多種 prompt 格式分別分配給多個等效難度的測試樣本進行單次評估。
- 如何緩解這一問題:
- 在 prompt 中提供示例可以幫助模型輸出遵循預期格式,示例可以通過連接詞添加至 prompt。
- 注意模型可能傾向于對特定的 prompt 格式過擬合。
- 這篇論文 對此有更詳盡的探討,文中展示了一些模型因在測試集 格式 上過擬合而導致的評估分數過高的情況。
- 我們特別觀察到,在 Open LLM Leaderboard 2 上, Llama 3.2 和 Qwen 2.5 出于這個原因已經不再提供 few-shot 示例的 prompt 格式。
- 對于一些測試任務的指標,你可能希望模型的輸出限制在一個小范圍。
可以跳轉 Model inference and evaluation 頁面的Constraining model outputs部分了解更多信息。
選擇評估指標
如果你關注 對數概率 評估,那么你期望的度量指標會很簡單:準確率 (選擇最佳選項的頻率)。如果在這個基礎上你還想要進行標準化 (通過長度、字符、token 或 PMI),那么度量指標就會變成困惑度 (perplexity)、召回率或 F1 分數。
對于 生成式 評估,你期望的度量指標范圍會更廣。
為此你需要:
- 確定生成結果的度量順序,是直接拿生成結果比較,還是先使用某種方式進行標準化。
- 標準化如果設計不當,評估結果會有失偏頗 (參考這篇 博客)。但總的來說,它們都能在任務層面提供信號。
- 標準化對某些特定任務 (例如數學能力評估) 非常重要,因為你可能需要從格式化輸出中提取有效的結果。
- 如果你想要通過添加機制 (如思維鏈) 來評估準確率,那么標準化同樣重要,因為你需要將推理軌跡從實際結果中去除。
- 確定生成結果與參考答案的比較方式。
你可以采用任意的比較方法。評估匹配程度的有:精確匹配、前綴匹配等;評估摘要和翻譯能力的有:ROUGE、BLEU、n-gram 等。更多評價指標可以點擊 這個頁面 查看,我會在后續更新關于在何時使用哪種指標的章節。
總的來說,選擇哪種評價指標取決于你的任務內容。對于某些領域 (如醫療、聊天機器人),你可能不想要評估平均性能,而是需要評估 最差表現 (如醫療知識輸出質量、如果輸出不實的后果等)。( 可以查看 這篇博客 深入了解 )
智能新任務:功能性測試是什么?
對于代碼領域,顯然僅評估生成代碼的語義是不夠的,必須測試代碼實際運行情況。所以需要專門設計一個功能性測試:對于給定 prompt 生成的代碼段,測試并評估其是否能正確通過單元測試。
這種功能性測試方法極具前景,因為:
- 使得生成測試用例更容易 (大部分情況下都可以基于規則生成測試用例)
- 減少過擬合
- 可以評估模型的特定主動能力
不過很多新奇的想法需要一些創造性的工作才能實現!
IFEval 是一個不錯的例子,它是用來測試模型指令遵循能力的評估基準,通過創建多個格式化指令 ( 例如:添加指定數量的特殊符號,僅將一句話字母大寫,等等 ) 并嚴格測試生成結果的遵循與否。功能性測試的想法仍需更多的工作來擴展到其他的特征測試上!
原文作者: clefourrier
譯者: SuSung-boy
審校: adeenayakup

浙公網安備 33010602011771號