穩健性(robustness)
/ roh-BUST-ness /
穩健性,指的是當現實條件比實驗室裡更亂時,模型仍能把活幹好的能力。一個脆弱的模型,就像一個把模擬考考得滿分、卻一遇到換種問法就當場僵住的尖子生。一個穩健的模型,能應付現實世界扔來的種種變化:一張模糊的照片、一種它沒訓練過的口音、一句帶錯別字的話、一個雨天裡的感測器讀數。它不必完美——它需要的是:在那些合理但陌生的輸入上,崩得優雅、崩得稀少。
穩健性有好幾種各不相同的「口味」,人們常把它們攪在一起。對自然變化(雜訊、光照、天氣)的穩健,不同於對蓄意攻擊(即對抗那一類)的穩健;而這又不同於對分布偏移的穩健——也就是整批資料的「人口構成」逐漸漂離了模型當初訓練的樣子。一個模型可能對其中一種堅如磐石,對另一種卻不堪一擊;所以光說「穩健」幾乎毫無意義,除非你講清楚:對什麼穩健。
穩健性之所以重要,是因為測試集在某種意義上會「騙人」。一個只用「長得像訓練資料」的資料來打分的模型,會拿到一張過分好看的成績單。可一旦它撞上部署時那種貨真價實的多樣性,準確率可能悄無聲息地跌落懸崖。正因如此,成熟的團隊在把模型託付給任何要緊之事之前,會拿被擾動的、被偏移的、最壞情況的輸入去對它做壓力測試——也正因如此,單單一個頭條式的準確率數字,幾乎說明不了這套系統在真實世界裡會如何表現。
ImageNet-C 是一個基準:它拿普通的測試影像,施加15種日常常見的「損壞」——霧、運動模糊、JPEG壓縮、雪——每種分五個嚴重等級。許多在乾淨影像上能拿到90%以上的模型,在這些被損壞的版本上會丟掉四分之一甚至更多的準確率,由此暴露出:那個頭條數字裡,有多大一部分其實仰仗於照片本身一塵不染。
「損壞」基準,揭示了「乾淨測試準確率」與「真實世界耐用度」之間的鴻溝。
對光禿禿一個「穩健」要當心。永遠要追問:對什麼穩健?又是怎麼衡量的?一個被加固到能扛住像素級對抗雜訊的模型,照樣可能在光照的一點簡單變化、或換了一家醫院的掃描儀面前徹底崩盤。穩健性不是一個你往上擰的旋鈕;它是一族彼此分立的性質,每一種都需要各自的檢驗。