知能力評(píng)估:六個(gè)原則幫你避開評(píng)測(cè)陷阱)
評(píng)估AI模型的認(rèn)知能力最怕的不是模型本身不夠強(qiáng)而是評(píng)估方式從一開始就跑偏了。你讓模型回答幾十個(gè)常識(shí)問(wèn)題它全答對(duì)了不代表它真的能理解世界你讓它寫一段排序代碼它寫對(duì)了也不代表它能完成一個(gè)完整的業(yè)務(wù)任務(wù)。認(rèn)知能力在AI模型里通常指理解、推理、記憶、規(guī)劃、語(yǔ)言表達(dá)、工具使用等綜合能力而不是某一個(gè)問(wèn)答集的準(zhǔn)確率。這篇文章我想從實(shí)測(cè)和選型的角度拆一套評(píng)估AI模型認(rèn)知能力時(shí)值得遵循的六個(gè)原則。每個(gè)原則背后都有我踩過(guò)的坑也有相對(duì)通用的判斷方法。適合正在做模型選型、評(píng)測(cè)體系建設(shè)、應(yīng)用開發(fā)或產(chǎn)品方案設(shè)計(jì)的人參考。1. 先搞清楚評(píng)估目標(biāo)你真正想驗(yàn)證的是哪一種認(rèn)知能力1.1 認(rèn)知能力不是一個(gè)單一指標(biāo)很多時(shí)候我們習(xí)慣用“哪個(gè)模型更聰明”來(lái)開啟評(píng)估但“聰明”這個(gè)詞太模糊。一個(gè)模型擅長(zhǎng)做數(shù)學(xué)題另一個(gè)模型擅長(zhǎng)理解長(zhǎng)文檔還有的模型在代碼生成上表現(xiàn)很好。如果只用一個(gè)綜合分?jǐn)?shù)排名你會(huì)丟掉大量信息。我一般會(huì)把認(rèn)知能力先拆成幾個(gè)明確的維度語(yǔ)言理解能否準(zhǔn)確理解指令、上下文、隱含意圖。推理能力能否從已知條件推導(dǎo)結(jié)論處理多步邏輯。記憶能力能否記住長(zhǎng)對(duì)話、長(zhǎng)文檔或跨輪次信息。規(guī)劃能力能否把一個(gè)復(fù)雜目標(biāo)拆成有序的步驟。執(zhí)行能力能否調(diào)用工具、寫代碼、操作結(jié)構(gòu)化數(shù)據(jù)。表達(dá)質(zhì)量輸出是否完整、一致、可讀、符合格式要求。先列出這些維度再?zèng)Q定測(cè)什么。否則你測(cè)出來(lái)的可能只是一張混合榜單無(wú)法指導(dǎo)具體業(yè)務(wù)選型。1.2 用業(yè)務(wù)場(chǎng)景反推評(píng)估維度更靠譜的做法是從你的真實(shí)使用場(chǎng)景反推。如果要做客服機(jī)器人核心維度是語(yǔ)言理解、意圖識(shí)別、多輪記憶和表達(dá)質(zhì)量。如果要做數(shù)據(jù)分析助手核心維度是工具調(diào)用、結(jié)構(gòu)化解題、長(zhǎng)文本理解和執(zhí)行穩(wěn)定性。如果要做編程助手核心維度是代碼正確性、多文件理解、調(diào)試能力和對(duì)上下文的跟隨能力。我會(huì)把應(yīng)用場(chǎng)景里的高頻任務(wù)寫成一份“能力 checklist”。每個(gè)能力對(duì)應(yīng)至少一個(gè)測(cè)試任務(wù)。例如“多輪記憶”對(duì)應(yīng)“與模型進(jìn)行五輪對(duì)話中途提供關(guān)鍵信息第五輪詢問(wèn)該信息”。這樣評(píng)估目標(biāo)就從“看誰(shuí)分?jǐn)?shù)高”變成“看誰(shuí)能解決這個(gè)問(wèn)題”。評(píng)估目標(biāo)不確定時(shí)先不要急著跑模型。先寫清楚你要它完成的三個(gè)核心任務(wù)再判斷認(rèn)知能力需要哪些維度。這個(gè)步驟省不了。2. 用未見過(guò)的任務(wù)做測(cè)試別讓背誦干擾判斷2.1 什么是“見過(guò)”和“沒(méi)見過(guò)”AI模型在訓(xùn)練時(shí)見過(guò)大量公開數(shù)據(jù)。如果把公開數(shù)據(jù)集里的題目直接拿來(lái)做測(cè)試模型可能不是在做推理而是在回憶訓(xùn)練時(shí)的答案。這一點(diǎn)在常識(shí)問(wèn)答、代碼片段、數(shù)學(xué)題上特別明顯。所以要評(píng)估真正的認(rèn)知能力關(guān)鍵在于構(gòu)造“模型沒(méi)見過(guò)”的任務(wù)。怎么判斷是否見過(guò)并不容易。常見做法是避開公開評(píng)測(cè)集的原題。把題目里的具體數(shù)值、實(shí)體名稱、場(chǎng)景細(xì)節(jié)做替換。采用組合式任務(wù)把兩個(gè)常見能力拼在一起。使用最近發(fā)生的事件或你自己構(gòu)造的私有數(shù)據(jù)。我通常會(huì)把公開測(cè)試集作為“基線熟悉度檢查”而不是最終結(jié)論。真正下結(jié)論時(shí)使用我手寫的、或者現(xiàn)場(chǎng)隨機(jī)生成的任務(wù)。2.2 構(gòu)造組合式任務(wù)的方法組合式任務(wù)是很好的測(cè)試方式。因?yàn)槟P涂赡芤娺^(guò)“寫一封請(qǐng)假郵件”也可能見過(guò)“總結(jié)會(huì)議紀(jì)要”但“先總結(jié)一段客戶反饋再根據(jù)總結(jié)寫一封回復(fù)郵件最后把郵件轉(zhuǎn)成JSON格式”這類多步組合訓(xùn)練數(shù)據(jù)里很少會(huì)有完全相同的版本。構(gòu)造步驟可以這樣選擇一個(gè)業(yè)務(wù)場(chǎng)景比如“客戶投訴處理”。給一段非公開的原始材料比如模擬聊天記錄。要求模型完成三個(gè)連續(xù)動(dòng)作提取問(wèn)題、判斷責(zé)任方、生成處理方案。最后要求輸出結(jié)構(gòu)化的結(jié)果且字段由你現(xiàn)場(chǎng)定義。這種任務(wù)測(cè)試的才是“理解并執(zhí)行新流程”的能力而不是背誦答案的能力。如果模型在組合任務(wù)上表現(xiàn)不好不要急著說(shuō)它笨。先確認(rèn)是不是提示詞沒(méi)有說(shuō)清楚輸出結(jié)構(gòu)。我會(huì)把提示詞調(diào)整一輪再測(cè)通常會(huì)有一部分失敗來(lái)自指令歧義。注意測(cè)試任務(wù)的構(gòu)造順序應(yīng)該是“先有業(yè)務(wù)任務(wù)再寫測(cè)試樣本”不是“先從公開題庫(kù)里抽題”。3. 固定環(huán)境、輸入和參數(shù)保證實(shí)驗(yàn)結(jié)果可復(fù)現(xiàn)3.1 為什么評(píng)測(cè)結(jié)果經(jīng)常跑偏同樣一個(gè)模型上午測(cè)和下午測(cè)結(jié)果不一樣用默認(rèn)溫度測(cè)和調(diào)高溫度測(cè)結(jié)果差別更大換一個(gè)推理框架輸出概率分布也可能不同。這些都是認(rèn)知能力評(píng)估里最常見的噪聲。如果評(píng)估連“可重復(fù)”都做不到后面的分析全是白做。我把可復(fù)現(xiàn)評(píng)測(cè)需要固定的內(nèi)容分成幾層層需要固定的內(nèi)容模型層模型版本、權(quán)重文件、量化方式推理層推理框架、上下文長(zhǎng)度、最大輸出長(zhǎng)度參數(shù)層temperature、top_p、frequency_penalty、presence_penalty、seed輸入層提示詞模板、few-shot示例、輸入順序環(huán)境層依賴版本、GPU驅(qū)動(dòng)、運(yùn)行容器不要小看這些細(xì)節(jié)。有時(shí)候模型本身沒(méi)問(wèn)題只是推理框架的默認(rèn)采樣策略不同導(dǎo)致連續(xù)兩次結(jié)果不一致。評(píng)估之前先跑三條同一條目確認(rèn)輸出是否穩(wěn)定。不穩(wěn)定就先固定隨機(jī)種子或者改用更穩(wěn)定的解碼方式。3.2 一個(gè)可復(fù)現(xiàn)評(píng)測(cè)的最小配置如果只是日常評(píng)測(cè)我會(huì)準(zhǔn)備一個(gè)最小的評(píng)估配置固定模型版本號(hào)不隨意更新。固定temperature為0或0.2避免隨機(jī)性干擾。固定上下文長(zhǎng)度和最大輸出長(zhǎng)度。固定提示詞模板不允許每個(gè)人按自己習(xí)慣臨時(shí)改寫。記錄每次評(píng)估的seed。不需要一開始就搭完整的評(píng)測(cè)平臺(tái)。一個(gè)目錄、一個(gè)配置文件、一份結(jié)果記錄表足夠。重點(diǎn)是讓其他人拿到同一份配置后能跑出基本一致的結(jié)果。如果團(tuán)隊(duì)里有多人參與評(píng)估還必須統(tǒng)一“打分標(biāo)準(zhǔn)”。同一個(gè)回答有人覺得合格有人覺得不合格這不是模型問(wèn)題是標(biāo)準(zhǔn)問(wèn)題。先定義什么是“通過(guò)”再開始批量評(píng)估。4. 覆蓋難度梯度不要只拿簡(jiǎn)單問(wèn)題下結(jié)論4.1 從單步指令到多步推理只看簡(jiǎn)單任務(wù)的通過(guò)率很容易高估模型能力。很多模型在單輪問(wèn)答上表現(xiàn)很好一旦遇到需要多輪信息整合、條件分支、約束疊加的任務(wù)就開始出錯(cuò)。我的建議是設(shè)計(jì)三個(gè)難度等級(jí)簡(jiǎn)單單步指令信息完整輸出格式明確。中等包含兩個(gè)以上條件或者需要從一段材料里提取關(guān)鍵信息再加工。困難多步推理需要規(guī)劃順序、排除干擾信息、遵守多個(gè)約束條件。每個(gè)難度至少準(zhǔn)備10到20條樣本。然后分別統(tǒng)計(jì)通過(guò)率。如果簡(jiǎn)單任務(wù)通過(guò)率很高困難任務(wù)通過(guò)率驟降說(shuō)明這個(gè)模型的“單點(diǎn)能力”不錯(cuò)但“組合能力”有限。這類模型適合做簡(jiǎn)單問(wèn)答或輔助寫作但不適合做復(fù)雜業(yè)務(wù)自動(dòng)化。4.2 難度曲線比平均分更重要只看平均分也會(huì)誤導(dǎo)人。有些模型平均分不錯(cuò)但在最難的那批任務(wù)上幾乎全軍覆沒(méi)。有些模型平均分一般但難度提升時(shí)掉點(diǎn)很少說(shuō)明它確實(shí)在處理更復(fù)雜的認(rèn)知任務(wù)。我會(huì)把結(jié)果畫成一條“難度-通過(guò)率”曲線。基本判斷是難度上升但通過(guò)率下降平緩說(shuō)明魯棒性好。難度上升通過(guò)率斷崖式下跌說(shuō)明能力邊界明顯。簡(jiǎn)單任務(wù)通過(guò)率都不高說(shuō)明基礎(chǔ)能力就有問(wèn)題不用再往下看。這條曲線還能幫助你確定模型的應(yīng)用邊界。比如在自動(dòng)化流程里如果任務(wù)復(fù)雜度屬于“中等”模型還能勉強(qiáng)支撐如果屬于“困難”你就需要額外設(shè)計(jì)拆解和校驗(yàn)環(huán)節(jié)而不是盲目相信模型能一步到位。不要一上來(lái)就上幾百條測(cè)試題。先用每個(gè)難度10條樣本跑通流程再?zèng)Q定要不要擴(kuò)量。5. 把錯(cuò)誤分類觀察失敗模式而不是只看得分5.1 常見錯(cuò)誤類型測(cè)試做完之后統(tǒng)計(jì)“多少條通過(guò)”只是第一步。真正有價(jià)值的是“失敗的任務(wù)都錯(cuò)在哪里”。我一般會(huì)把錯(cuò)誤分成這幾類指令理解錯(cuò)誤模型沒(méi)有按要求的格式或步驟執(zhí)行。推理缺失模型跳過(guò)了關(guān)鍵推理步驟直接給出結(jié)論。上下文忽略模型沒(méi)有使用對(duì)話前文或輸入材料里的信息?;糜X模型生成了材料中不存在的事實(shí)。過(guò)度保守模型拒絕執(zhí)行本可以完成的任務(wù)。輸出不規(guī)范內(nèi)容正確但格式、字段、順序不符。分類不是靠猜而是把每條失敗輸出打開看記錄錯(cuò)誤模式。只要記錄10到20條失敗通常就能看出模型的主要短板。5.2 用失敗模式指導(dǎo)下一步失敗模式不同應(yīng)對(duì)方式完全不同。如果多數(shù)錯(cuò)誤是“輸出不規(guī)范”那可以通過(guò)改進(jìn)提示詞結(jié)構(gòu)、增加few-shot示例來(lái)解決。如果多數(shù)錯(cuò)誤是“推理缺失”就需要要求模型先展示推理過(guò)程或者把任務(wù)拆成多步調(diào)用。如果多數(shù)錯(cuò)誤是“幻覺”就要增加輸入材料的約束引用機(jī)制并考慮用檢索增強(qiáng)的方式來(lái)支撐。如果模型在某個(gè)失敗模式上頻繁出現(xiàn)即使個(gè)別樣本通過(guò)也不能把它當(dāng)成可靠能力。我遇到過(guò)一個(gè)模型在代碼生成上看起來(lái)不錯(cuò)但錯(cuò)誤主要集中在“沒(méi)有處理邊界條件”一旦任務(wù)里涉及空列表和非法輸入輸出就開始崩。這種問(wèn)題靠隨機(jī)測(cè)試很難發(fā)現(xiàn)只有分類統(tǒng)計(jì)才看得到。評(píng)估報(bào)告里至少應(yīng)該包含兩部分通過(guò)率和失敗模式分析。只有通過(guò)率的評(píng)估報(bào)告對(duì)后續(xù)優(yōu)化幾乎沒(méi)有幫助。6. 綜合資源、延遲、成本與穩(wěn)定性再談能力高低6.1 能力不等于可落地一個(gè)模型認(rèn)知能力再?gòu)?qiáng)如果在你的硬件配置上跑不動(dòng)或者單次推理耗時(shí)太長(zhǎng)或者批量任務(wù)經(jīng)常超時(shí)它仍然不適合生產(chǎn)環(huán)境。評(píng)估時(shí)要記錄這些“非認(rèn)知”但直接決定落地的指標(biāo)響應(yīng)耗時(shí)單條輸入到完整輸出的時(shí)間。資源占用顯存、內(nèi)存、CPU、GPU利用率。并發(fā)能力同時(shí)跑多少個(gè)請(qǐng)求會(huì)開始超時(shí)或失敗。成本按調(diào)用次數(shù)或按Token計(jì)算的費(fèi)用。穩(wěn)定性連續(xù)跑多輪是否出現(xiàn)卡死、超時(shí)、輸出截?cái)?。低配置機(jī)器能跑一個(gè)小模型不代表它能跑批量推理。之前我遇到過(guò)模型內(nèi)存占用不高但是并發(fā)一高就頻繁報(bào)錯(cuò)的情況排查后發(fā)現(xiàn)是輸出隊(duì)列設(shè)置過(guò)小。這個(gè)問(wèn)題如果不做壓測(cè)根本看不到。6.2 對(duì)照測(cè)試時(shí)控制變量做多個(gè)模型對(duì)比時(shí)必須控制變量。不能在模型A上用默認(rèn)提示詞在模型B上用精心優(yōu)化的提示詞然后說(shuō)A不如B。這不公平也反映不了真實(shí)差距。正確做法是多個(gè)模型使用完全相同的提示詞。使用相同的輸入數(shù)據(jù)、相同的輸出格式要求。使用相同的解碼參數(shù)先把隨機(jī)性壓住。如果某個(gè)模型需要額外優(yōu)化至少要記錄“默認(rèn)配置”和“優(yōu)化配置”兩套結(jié)果。我建議至少跑兩輪第一輪默認(rèn)參數(shù)看基礎(chǔ)能力第二輪簡(jiǎn)單提示詞優(yōu)化看可調(diào)教空間。兩類結(jié)果分開記錄不要混在一起。這樣能看出一個(gè)模型的真實(shí)下限和可優(yōu)化上限。注意對(duì)比時(shí)不要讓“在線服務(wù)偶發(fā)延遲”影響超時(shí)判斷。先確認(rèn)網(wǎng)絡(luò)和服務(wù)狀態(tài)穩(wěn)定再記錄耗時(shí)數(shù)據(jù)。7. 一套可以直接復(fù)用的評(píng)估流程7.1 評(píng)估前的準(zhǔn)備清單如果你正準(zhǔn)備評(píng)估一個(gè)AI模型的認(rèn)知能力可以先按下面這個(gè)順序準(zhǔn)備明確業(yè)務(wù)目標(biāo)和核心任務(wù)寫2到3個(gè)必須跑通的場(chǎng)景。拆出認(rèn)知能力維度選擇至少3個(gè)測(cè)試方向。準(zhǔn)備私有測(cè)試數(shù)據(jù)或組合任務(wù)避開公開原題。固定模型版本、推理環(huán)境、解碼參數(shù)和提示詞模板。設(shè)計(jì)簡(jiǎn)單、中等、困難三個(gè)難度的測(cè)試樣本。定義“通過(guò)”標(biāo)準(zhǔn)包括格式、內(nèi)容、一致性要求。準(zhǔn)備錯(cuò)誤分類標(biāo)簽和結(jié)果記錄表。不用一次性做太多。第一次評(píng)估控制在20到50條樣本重點(diǎn)是跑通流程和發(fā)現(xiàn)明顯的失敗模式。跑順之后再擴(kuò)展到幾百條。7.2 評(píng)估中的記錄模板我建議每條測(cè)試記錄以下字段字段內(nèi)容任務(wù)ID測(cè)試樣本編號(hào)難度簡(jiǎn)單 / 中等 / 困難輸入完整輸入內(nèi)容或文件路徑模型輸出完整輸出內(nèi)容是否通過(guò)通過(guò) / 不通過(guò)錯(cuò)誤類型指令理解 / 推理缺失 / 上下文忽略 / 幻覺 / 輸出不規(guī)范 / 其他備注影響結(jié)果的環(huán)境異常、參數(shù)調(diào)整等這個(gè)表格看起來(lái)簡(jiǎn)單但特別有用。有了它你就可以隨時(shí)回看失敗樣本而不是只看一個(gè)分?jǐn)?shù)。記錄時(shí)盡量保留原始輸出不要只記錄“對(duì)”或“錯(cuò)”。之后復(fù)盤時(shí)原始輸出能幫你發(fā)現(xiàn)很多指標(biāo)之外的細(xì)節(jié)。7.3 評(píng)估后的結(jié)論怎么寫寫完結(jié)果表再做匯總。匯總要回答三個(gè)問(wèn)題在目標(biāo)業(yè)務(wù)場(chǎng)景里這個(gè)模型能不能用。在哪些難度等級(jí)和任務(wù)類型上可靠哪些不可靠。如果要上線需要補(bǔ)充什么機(jī)制來(lái)兜底。不要寫“模型A比模型B好”這種籠統(tǒng)結(jié)論。應(yīng)該寫“在20條多步推理任務(wù)中模型A通過(guò)率70%模型B通過(guò)率45%模型A失敗主要集中在長(zhǎng)文本條件遺漏”。這樣的結(jié)論才能指導(dǎo)選型和開發(fā)。如果時(shí)間有限我會(huì)優(yōu)先補(bǔ)測(cè)“最失敗的區(qū)域”。比如模型在困難任務(wù)上失敗率很高就先多造20條困難任務(wù)確認(rèn)失敗模式是否穩(wěn)定。穩(wěn)定的話這就是邊界不穩(wěn)定可能是評(píng)測(cè)樣本本身有問(wèn)題。評(píng)估認(rèn)知能力這件事本質(zhì)上不是給模型打分而是確認(rèn)它的可靠邊界。邊界清楚之后你才知道哪些環(huán)節(jié)可以交給模型哪些環(huán)節(jié)必須有人工校驗(yàn)或程序兜底。踩過(guò)幾次“模型看似聰明但交付不可控”的坑之后我更傾向于把評(píng)測(cè)流程做得笨一點(diǎn)、慢一點(diǎn)、看得細(xì)一點(diǎn)。這樣至少能保證一個(gè)能力被認(rèn)可之前我們已經(jīng)用足夠有區(qū)分度的任務(wù)驗(yàn)證過(guò)它。