你的LLM評估方法過時了嗎?這三個范式轉變不容錯過
在我的職業生涯中,我一直致力于為機器學習系統打造評估體系。在擔任 Quora 數據科學部門負責人時,我們為新聞源排序、廣告投放、內容審查等構建了評估機制。在 Waymo,我們團隊為自動駕駛汽車開發了評估標準。而在金融科技初創公司 Coverbase,我們利用大語言模型(LLMs)來簡化第三方風險管理的流程。這些經歷讓我意識到,在使用大語言模型時,我們需要在評估思路上做出一些細微而重要的調整。
本文的目的不在于為你的 LLM 應用提供具體的評估方法,而是提出以下三種評估范式的轉變:
- 評估應當是主體而非點綴。
- 比較差異的基準測試 。
- 將人工參與作為評估不可或缺的一部分。
需要說明的是,本文的討論重點是 LLMs 的應用,而非基礎模型的研究開發。同時,盡管文章標題如此,但我在本文提到的許多觀點同樣適用于其他生成系統(這得益于我在自動駕駛領域的經驗),而不僅僅是 LLMs 的應用。
1.評估應當是主體而非點綴
在機器學習的開發過程中,評估的重要性不言而喻,這一點對于 LLM 來說尤為突出。我認為 LLM 開發中評估的重要性提升有兩個原因:
a) 評估的比重增加了,因為在構建 LLM 應用時,可操作的空間相對有限,導致非評估工作的耗時減少。在 LLM 應用的開發過程中,我們通常是在 OpenAI 的 GPT 或 Anthropic 的 Claude 等基礎模型之上進行構建,而在應用層面可調整的參數較少。這些參數的調整速度更快(需要注意的是,雖然調整速度快,但并不意味著能更快地達到理想效果)。例如,修改輸入提示詞的效率遠高于為梯度提升決策樹(Gradient-Boosted Decision Tree)編寫新的人工特征。因此,非評估的工作量減少,評估所占的時間比例自然就提高了。
Image by author
b) 評估的絕對重要性也有所提升,因為生成式 AI 的輸出具有極大的多樣性,這使得評估工作變得更加復雜。與分類或排序任務不同,生成式 AI 的任務(比如撰寫關于某個主題的文章、制作某張圖像、為自動駕駛汽車規劃行駛軌跡)可能有無數種合理的輸出結果。因此,評估實際上是一個將高維空間投射到低維空間的過程。例如,對于 LLM 任務,我們可以評估:“輸出內容是否真實可靠?”,“是否含有有害信息?”,“語言表達是否簡潔?”,“是否頻繁使用‘當然!’等詞匯開頭?”,等等。在二元分類任務中,精確率和召回率是對結果的無損度量(直接測量你所觀察到的結果),而我提到的 LLM 任務的評估指標則是對輸出文本的損失性度量(測量的是你所觀察結果的簡化版)。準確地進行這種評估要困難得多。
這種評估范式的轉變,對于 LLM 應用項目團隊的建設,包括團隊規模和人員招聘,都具有實際的影響。
2.比較差異的基準測試
理想狀況是:我們在一個目標指標上不斷攀升,并持續改進。
Image by author
但現實情況如何呢?
在圖表上,你幾乎連兩個連續的數據點都畫不出來!
以下場景你可能似曾相識:
第一次產品上線后,我們收集到了更多數據,導致新的指標數據與之前的不具備直接可比性。而且,我們無法在新數據集上重新運行舊模型 —— 可能是因為系統其他部分已經更新升級,無法回退到舊版本來復現模型;又或者是評估指標依賴于 LLM 作為評判標準,而數據集龐大,每次評估的成本過高,等等。
第二次產品上線后,我們決定改變輸出結構。例如,之前我們指導模型輸出“是”或“否”的答案;現在我們讓模型輸出“是”、“否”、“可能”或“我不知道”。因此,之前精心準備的基準測試數據集變得不再適用。
第三次產品上線后,我們決定將單個 LLM 調用拆分為兩個 LLM 調用的復合調用,并需要評估這些子組件。為此,我們需要為子組件評估準備新的數據集。
……
問題的核心在于,在 LLM 時代,開發周期如此之快,以至于很難對同一指標進行持續追蹤。
那么,我們應該如何應對?
關注性能的變動。
換句話說,我們應該接受這樣一個事實:在圖表上,我們通常只能看到兩個連續的數據點(譯者注:例如,一個代表當前版本的性能,另一個代表新版本的性能)。關鍵是要確保每個模型版本都比前一個版本有所改進(基于你當時所掌握的知識),盡管我們很難從絕對意義上了解模型的性能水平。
假設我有一個基于 LLM 的語言學習輔導程序,它能夠首先判斷輸入內容是英語還是西班牙語,然后提供語法建議。一個簡單的評估指標就是“英語/西班牙語”標簽的準確率。現在,如果我修改了提示詞,并想要知道新的提示詞是否提升了準確率。除了手動標注大量數據并計算準確率之外,還有一種方法,就是只關注那些舊提示詞和新提示詞給出不同標簽的數據點。這樣雖然無法得知兩個模型的絕對準確率,但我可以確定哪個模型的準確率更高。
Image by author
我想明確一點,我并非全盤否定以絕對值為基準的價值。我的意思是,我們應該意識到這種做法的成本,而比較差異的基準測試(雖然它不能完全替代前者),通常是一種更經濟高效的方法來得出大致的方向性結論。這種范式的轉變,其根本原因之一在于,如果你是從零開始構建機器學習模型,那么你通常需要精心準備一個大規模的訓練集,評估數據集往往就是這一過程的自然產物。但這一點在利用預訓練模型進行零樣本或小樣本學習時并不適用(例如大語言模型)。
再舉一個例子,假設我有一個基于 LLM 的評估指標:我們用一個獨立的 LLM 來判斷 LLM 語言導師所提供的解釋是否足夠清晰。有人可能會問:“既然評估已經自動化,比較差異的基準測試是否仍然比基于絕對值的基準測試更節省成本?”答案是肯定的。因為現在的評估指標更為復雜,我們可以不斷優化這些指標本身(比如對 LLM 的提示詞進行工程優化)。一方面,我們仍然需要對評估結果本身進行評估,比較差異的基準測試能夠告訴我們新的指標版本是否有所改進。另一方面,隨著基于 LLM 的評估指標不斷演進,如果我們只關注比較 LLM 語言導師模型的相鄰版本,那么就無需費心用新版本的評估指標來補充所有舊版本模型的基準測試結果。
比較差異的基準測試可以作為一種高效的內循環快速迭代機制,而將成本較高的基于絕對值的基準測試或長期跟蹤方法留到外循環的低頻次迭代中使用。
3.將人工參與作為評估不可或缺的一部分
如上文所述,想要一勞永逸地篩選出一個完美無缺的黃金數據集,用以長期作為基準的想法可能并不現實。篩選工作將是一個持續且必要的開發環節,無論是直接對 LLM 的輸出進行篩選,還是對充當評委的 LLM 或其他更復雜指標進行篩選。我們應該致力于讓評估工具盡可能具備可擴展性;關鍵在于,即便如此,我們也不應幻想能夠完全擺脫人工篩選。我們越快接受這一點,就能越早開始對工具進行正確的投資。
因此,無論我們選用何種評估工具,無論是自研還是外部采購,都應確保有一個簡便易用的人工篩選界面。基本的界面可能如下所示:結合之前提到的比較差異的基準測試,它提供了一個并排比較的面板,用戶可以輕松瀏覽結果。同時,該界面還應支持用戶輕松記錄篩選筆記,以便這些筆記未來可以作為黃金標簽(golden labels)用于基準測試(從而減輕未來的篩選工作負擔)。
更高級的版本應當是盲測模式,篩選者不知道哪一邊是哪個版本。我們的數據多次證實,如果不進行盲測,即便是開發人員出于好意,也可能會有下意識地傾向于自己開發的版本。
這三個范式的轉變,一旦被識別,適應起來其實并不復雜。真正的挑戰在于,如何在興奮和快速的開發節奏中提前發現這些轉變。我希望分享這些思考能夠幫助那些在工作中面臨類似挑戰的人們。