穩健性與可解釋性

對抗攻擊與防禦(adversarial attack and defense)

/ ad-ver-SAIR-ee-ul uh-TAK and dee-FENSS /

對抗攻擊,是刻意炮製專門讓模型失靈的輸入;而防禦,則是一切試圖阻止它的手段。這是一場安全領域的軍備競賽,很像病毒作者與防毒廠商之間沒完沒了的對決。攻擊方四處試探,尋找模型會崩潰的那些輸入;防禦方設法堵上這些薄弱點;攻擊方又找到新的。這場博弈玩了幾十年,至今沒有哪種防禦,能扛得住一個意志堅定、消息靈通的對手。

攻擊也分門別類。在「白盒」攻擊中,對手了解模型內部,能算出騙過它所需的精確擾動;在「黑盒」攻擊裡,對手只看得到模型的輸出,必須從外部一點點試探——然而這往往就夠了。攻擊可以針對模型在測試時的輸出(即「逃逸」攻擊),也可以「投毒」訓練資料,讓模型從一開始就學到一處暗藏的缺陷。最廣為人知的防禦——對抗訓練——做法很直接:把攻擊樣本直接扔進訓練集,逼模型學會抵抗它們;代價是更多的算力,以及常常會損失一些普通情況下的準確率。

為什麼要在意?因為模型越來越多地守護著要緊的東西:垃圾郵件與詐騙過濾、內容審核、生物辨識鎖、自動駕駛車輛。只要某個有動機的對手能從一個錯誤答案中得利,攻擊就不是假想。這個領域誠實的總結令人清醒:防禦能抬高攻擊的成本、擋住偷懶的攻擊,但面對一個聰明對手的、可證明的、普適的穩健性,仍是一個懸而未決的研究難題,而不是一件你能買到的產品。

一個團隊發布了一種新防禦,宣稱在攻擊下仍有96%的準確率。幾個月後,另一個團隊用一種專門針對這套防禦調校過的攻擊重新檢驗它——準確率瞬間崩到接近零。這一幕在許多論文中反覆上演,最終成了一則警世故事:千萬別只用「防禦當初想擋的那種攻擊」去評估它。

為何「被攻破的防禦」屢屢得以發表——以及「自適應評估」為何要緊。

防禦必須接受「自適應攻擊者」的檢驗——這種對手知道防禦存在,並會據此調整。許多已發表的防禦之所以「有效」,只是因為它們碰巧把模型的梯度攪渾了,騙過了弱攻擊;而一個更強、會自適應的攻擊則長驅直入。對任何「穩健」的說法都該存疑,直到它經受住了自適應評估。

又稱
adversarial robustness对抗攻击对抗防御對抗攻擊對抗防禦