穩健性 是什麼?
Robustness:穩健性 的完整解釋
穩健性是指模型在面對輸入數據的微小擾動、對抗性攻擊或分布偏移時,仍能維持其性能表現的能力。
容易混淆
穩健性 vs 準確率
準確率看平均答對多少 穩健性看遇到變化時還穩不穩 最關鍵的區別是正常表現和受擾動表現。
穩健性 vs 泛化
泛化看能不能處理沒看過的新資料 穩健性看資料被小幅擾動後會不會崩 最關鍵的區別是新資料和被干擾資料。
記住這句就好
資料一變就壞掉的模型,不夠穩健。
實際案例
打字錯誤 使用者把拼字打錯一點點,模型還能理解意思,這就是穩健性好。
對抗攻擊 圖片裡只改幾個像素,模型就看錯,這代表穩健性不足。
算法與應用
常見改善方式包括資料增強、對抗訓練、正則化和更好的驗證。 穩健性不是越高越好就結束,還要看精準度和成本的平衡。 實務上常要一起看分布偏移和對抗樣本。
穩健性其實有三種,不要混談
講一個模型「夠不夠穩健」時,要先確認在講哪一種,因為量測方式與強化手段完全不同。
對雜訊的穩健性。 輸入有一點量測誤差、缺值或標註錯誤,輸出不會大變。強化方式是資料增強、加雜訊訓練、用對離群值穩健的損失函數。
對分布偏移的穩健性。 上線後遇到的資料跟訓練資料不是同一個分布。例如用白天的照片訓練,晚上就失準。這是實務上最常害模型上線後掉分的原因。強化方式是擴大訓練資料的涵蓋範圍、做領域自適應(domain adaptation)、上線後持續監控輸入分布。
對對抗攻擊的穩健性。 有人刻意構造一個人眼看不出差別、但會讓模型判錯的輸入。這是安全問題不是品質問題。強化方式是對抗訓練(adversarial training)、輸入檢測、限制模型的暴露面。
怎麼量穩健性
穩健性不能只看單一個測試集分數,那個分數只證明模型在跟訓練資料同分布的情況下有效。
實務上的做法是準備多組「壓力測試集」,各自對應一種你真的會遇到的變化:加了雜訊的版本、換光線或換裝置採集的版本、換時間段或換地區的版本。看的是模型在這幾組之間掉多少,而不是任何單一組的絕對值。
掉幅小代表穩健,掉幅大代表模型抓到的是資料集特有的捷徑,不是真正的規律。
這裡有個常見的陷阱:如果壓力測試集是從同一批資料隨機切出來的,那它跟原測試集同分布,測不出任何東西。壓力測試集必須在你關心的那個維度上真的不一樣。
情境判斷
Q1(直覺題):如果模型對少量雜訊很敏感,最先懷疑的是什麼?
→ 最先懷疑穩健性不足。
Q2(判斷題):訓練準確率高就代表模型很穩健嗎?
→ 不代表。它可能只是把訓練資料背熟,遇到新情況就掉下去。
相關術語
常見問題
怎麼評估模型穩健性?
A:通常會看噪聲、擾動、攻擊或分布改變下的表現。
對抗訓練一定有效嗎?
A:通常有幫助,但會增加訓練成本,也不保證所有攻擊都扛得住。
資料增強和穩健性有什麼關係?
A:資料增強能讓模型看過更多變形,有助於降低對單一模式的依賴。