穩健性與可解釋性

模型除錯(model debugging)

/ MOD-ul dee-BUG-ing /

模型除錯,是查清「一個機器學習模型為何失敗、又該如何修復」的偵探活兒——是橫在「模型建好了」與「模型可信了」之間那門凌亂卻不可或缺的手藝。它不像除錯尋常軟體——這裡沒有一行寫壞了的程式碼等你去找。模型是一堆學出來的數字,而一個錯誤答案,很少會告訴你它為什麼錯。你得像一名重建案發現場的偵探那樣,去盤問行為、盤問資料、盤問模型的內部。

它的工具箱,就是這個領域裡其餘的一切,合在一起用。你去看那些錯誤,而不只是那個平均分——按子群體把表現切開,找出它在哪兒敗得最慘。你懷疑虛假相關和捷徑學習。你動用特徵重要性、顯著性圖、各種解釋工具,去追問模型倚仗的是什麼。你核查校準與不確定性,看它知不知道自己何時心裡沒底。你拿分布偏移和對抗輸入去測它。而關鍵在於:你常會發現,那個bug其實在資料裡——一批標錯的標籤、一處資料洩漏、一個缺失的人群——壓根不在演算法上。

它之所以要緊,是因為單單一個準確率數字,是一句讓人安心的謊言。一個模型可以考到95%,卻在那最要緊的5%上崩壞得災難性——一種罕見疾病、一個少數群體、一個關鍵的邊緣個案。除錯,正是把一個「平均而言管用」的模型,變成一個你能負責任地部署的模型的那件事。誠實的現實是:它是迭代的、不光鮮的、且永遠沒有真正完結的一天:你修好你能找到的,帶著監控上線,然後接著盯——因為你尚未找到的那些bug,正是那些將在真實世界裡冒頭的。

一個語音辨識器報出94%的準確率,然後上線了。投訴紛至沓來。把錯誤切片一看,真相大白:它對一種口音有97%的準確率,可對另一種在訓練資料裡只占很小比例的口音,卻只有70%。那個平均數,藏住了一處嚴重的失敗。修復之道並不是一個更好的演算法——而是從那個被虧待的群體裡,收集更多的資料。

平均分藏住了那處失敗;按子群體切片,才把它揪了出來。

模型除錯中最常見的意外是:問題不在模型——而在資料。標錯的樣本、答案洩漏進了輸入、人群代表性不足,所釀成的真實世界故障,比那些精巧的演算法缺陷要多得多。在你去調模型之前,先審計資料;bug通常就藏在那兒。

又稱
error analysismodel debugging模型调试误差分析模型除錯誤差分析