AI模型被「騙」怎麼破?《燃燒吧!天才程式設計師》冠軍團隊解決方案出爐

机器之心發表於2021-01-21

前段時間,一檔名為《燃燒吧!天才程式設計師》的競賽類綜藝讓「程式設計師」這一群體成功破圈,也呈現了 AI 在解決實際問題的過程中面臨的一些挑戰,如資料集中存在對抗樣本、影像中存在噪聲等。在本文中,CLS 戰隊(大賽頭名團隊)的優秀選手、奧比中光演算法工程師埼玉詳細解讀了他們在比賽中用到的解決方案。

AI模型被「騙」怎麼破?《燃燒吧!天才程式設計師》冠軍團隊解決方案出爐

近日,由螞蟻集團清華大學等組織共同協辦的首屆「Inclusion|A-tech 科技精英賽」(以下簡稱 A-tech 大賽)圓滿落幕。奧比中光科技集團股份有限公司 (以下簡稱「奧比中光」) 研究院 SDK 組負責人小蠻腰、演算法工程師埼玉(均為花名)從全球 20 位優秀 AI 工程師與網路安全極客選手中脫穎而出,與戰隊隊友共同斬獲大賽頭名。

首次 A-tech 科技精英賽的主題關注「科技的溫暖和美好」,以「野生動物保護」作為切入點,選手需要在比賽中,分析檢測 34 種可能存在的野生動物,並預測每種野生動物的位置、類別及置信度——資料中包含著大量「非正常影像」。本質上,這是一場對日常 AI 攻防的濃縮「還原」,正是在無數次的 AI 攻防的較量中,AI 安全相關技術也得到長足發展。

計算能力的萬億倍增長使得深度學習在處理各種任務中得到廣泛應用,如影像分類自然語言處理博弈論。然而研究者發現,現有深度學習演算法存在著嚴重的安全隱患:攻擊者可以透過給良性樣本新增特定噪聲,輕易地欺騙深度學習模型,並且通常不會被人發現。攻擊者利用人的視覺和聽覺無法感知的擾動,足以使正常訓練的模型輸出置信度很高的錯誤預測。這種現象被研究者稱為對抗攻擊。

也可以說,我們的模型被「騙」了,這激發了人們對對抗技術的廣泛興趣。那麼,什麼是對抗技術呢?

舉幾個例子, 如圖 1 所示 [1], 穿特殊圖案的 T 恤可以使目前大部分行人檢測器失效;給圖 2[2] 中左邊的大熊貓新增一個很小的干擾噪聲,雖然生成的圖片看起來和原始的沒有什麼區別, 但是卻會導致系統將其誤認為是長臂猿的照片。

AI模型被「騙」怎麼破?《燃燒吧!天才程式設計師》冠軍團隊解決方案出爐

圖 1[1]

AI模型被「騙」怎麼破?《燃燒吧!天才程式設計師》冠軍團隊解決方案出爐

圖 2[2]

不過,有矛就有盾,對抗技術包含對抗攻擊和對抗防禦,它是機器學習與電腦保安技術的結合,是一個新興的研究領域。以前的機器學習模型在面對攻擊者精心設計的對抗攻擊時,往往達不到預期的準確度。在實際應用中(如自動駕駛),這種錯誤的影響可能是致命的。

現有對抗攻擊的方法

目前常見的對抗攻擊方法一般有以下幾種:

1.FGSM(Fast gradient sign method)[5]

這是一種基於梯度生成對抗樣本的演算法,其訓練目標是最大化損失函式 J(x*,y), 以獲取對抗樣本 x*, 其中 J 是分類演算法中衡量分類誤差的損失函式,通常取交叉熵損失。最大化 J,即使新增噪聲後的樣本不再屬於 y 類。在整個最佳化過程中,需滿足 L∞約束 ||x*-x||∞ ≤ɛ,即原始樣本與對抗樣本的誤差要在一定範圍之內。

x* =x+ɛ*sign(∇xJ(x,y))

其中 sign()是符號函式,括號裡面是損失函式對 x 的偏導。

2.Deepfool[6]

是基於超平面分類思想的一種對抗樣本生成方法。在二分類問題中,超平面是實現分類的基礎,那麼要改變某個樣本 x 的分類,最小的擾動就是將 x 挪到超平面上,這個距離的代價最小。

多分類的問題也類似。具體如下圖所示,Deepfool 透過迭代計算的方法生成最小規範對抗擾動,將位於分類邊界內的影像逐步推到邊界外,直到出現錯誤分類。此方法生成的擾動比 FGSM 更小,同時有相似的欺騙率。

AI模型被「騙」怎麼破?《燃燒吧!天才程式設計師》冠軍團隊解決方案出爐

3.C&W(Carlini & Wagner)[7]

C&W 演算法使用一個變數 w,輔助尋找最小擾動 r_n:

r_n=0.5*(tanh(w+1))-X_n

基於 w 可以寫出 C&W 最佳化過程的損失函式

AI模型被「騙」怎麼破?《燃燒吧!天才程式設計師》冠軍團隊解決方案出爐

其中 f 被定義為

AI模型被「騙」怎麼破?《燃燒吧!天才程式設計師》冠軍團隊解決方案出爐

目前對抗攻擊領域的研究大多是針對影像分類領域, 如上述介紹的幾種方法。而針對目標檢測的研究相對較少, 且不同的攻擊技術需要採用不同的策略去防禦,即對症下藥。

針對帶對抗樣本目標檢測領域的研究目前分為兩個陣營,即 anchor-based 和 anchor-free, 針對 anchor-based 的對抗攻擊方法,如 DAG[2] and UEA[3],以及針對 anchor-free 的對抗攻擊方法,如 FLA[4], 在此不過多贅述。

A-tech 大賽中的「進攻」與「防守」

在 A-tech 大賽中, 「野生動物識別戰」任務就涉及到了對抗技術。該任務本質上是目標檢測任務, 裡面大約有 34 種可能存在的野生動物,需要預測每種野生動物的位置、類別及置信度,評測指標為 mAP@50。比賽不僅要看準確度,還要看速度,即比賽最終看的是哪個戰隊可以在測試集上達到既快又準(即更快的 FPS,更高的 mAP)。

該任務中的資料分為訓練集和測試集,其中測試集分為 A 榜和 B 榜。A 榜對選手可見,可以用來測試自己訓練的模型的精度,B 榜不可見,成績與排名以 B 榜排名為準,其中 A 榜和 B 榜獨立同分布

這只是一個目標檢測任務吧?如果這樣想,你很可能會被「騙」:比賽的訓練和測試資料中,含有大量的「非正常影像」。稍不注意,就會掉進主辦方設定的陷阱中。野生動物識別戰任務中的訓練資料是分三批提供的,如下所示:

第一批為正常的影像,如圖 3 所示。這些影像雖然看起來正常,但是也有「坑」,其標籤是離散的,也就是說,將同一張影像的多個標籤分散在了多張一模一樣的影像上。參賽者需要根據影像的 md5 來找出哪些影像和標籤是可以合併的。
AI模型被「騙」怎麼破?《燃燒吧!天才程式設計師》冠軍團隊解決方案出爐
圖 3

第二批影像中是新增有水印攻擊的圖片,如圖 4 所示,即在正常的物體上面新增了一些獵槍的水印。如果不注意,我們的模型就會學習到一些不該學習到的特徵。

AI模型被「騙」怎麼破?《燃燒吧!天才程式設計師》冠軍團隊解決方案出爐

圖 4

第三批影像中便是對抗樣本了。其中一半,是不帶類別標籤但有位置資訊的正常圖片,另一半是不帶類別標籤但有位置資訊的對抗樣本影像,如圖 5 所示:

AI模型被「騙」怎麼破?《燃燒吧!天才程式設計師》冠軍團隊解決方案出爐

圖 5

再來看看測試資料,野生動物識別戰任務中,A 榜的測試資料包含三部分:

1、影像裡面有自然噪聲,比如雨、椒鹽、高斯等,如圖 6 所示:

AI模型被「騙」怎麼破?《燃燒吧!天才程式設計師》冠軍團隊解決方案出爐

圖 6

2、有少量水印攻擊的影像,如圖 7 所示,是水印攻擊與雨水的混合影像:
 

AI模型被「騙」怎麼破?《燃燒吧!天才程式設計師》冠軍團隊解決方案出爐

圖 7

3、有少量對抗樣本,如圖 8 所示。第一眼看到這種影像時,我也很懵。

AI模型被「騙」怎麼破?《燃燒吧!天才程式設計師》冠軍團隊解決方案出爐

圖 8

面對上面的攻擊,為避免我們的模型被「騙」,應該採取怎樣的防禦策略?

訓練集和測試集視覺化:這是最重要的方法,只有瞭解影像的特徵,我們才知道應該採取什麼樣的防禦手段去防禦。在比賽中,奧比中光團隊對訓練集和測試集都進行了視覺化分析,看了影像之後,計劃先跑出 baseline,於是選取了 mmdetection 框架,採用了 res50+CascadeRCNN 的架構,跑出了 53% 的mAP。

應該採用什麼方法視覺化?只能說,戴上眼鏡一張一張地看……

1.測試影像去噪:視覺化測試集的時候,我們發現測試集的影像中存在彩色的椒鹽噪聲,如圖 9 所示。於是, 我們在將測試圖片輸入到模型進行判定之前,先對當前測試圖片進行去噪,如中值濾波,剔除其中造成擾動的資訊,使其不能對模型造成攻擊。

該方法可防禦測試集中的自然噪聲。注意 kernel 不能太大,否則測試時間過長,實驗中測試 kernel 為5的時候,效果最好,mAP 大約提升了 8 個點。

AI模型被「騙」怎麼破?《燃燒吧!天才程式設計師》冠軍團隊解決方案出爐

圖 9

2.訓練影像資料增強:訓練的時候採用相關的資料增強手段,比如新增常用的資料增強方法,映象、裁剪、隨機變換亮度、對比度、飽和度,隨機色度變換等。此外還有一些不太常用的方法,比如 cutout[8]方法,但是需要設定區域的大小範圍,否則將整個物體全部遮擋了,訓練效果會很差,如圖 10 所示,將圖中的獵槍水印的影響弱化了;以及將高斯分佈中取樣出的隨機值矩陣加入到訓練影像中,也能大大增強模型的泛化能力。

AI模型被「騙」怎麼破?《燃燒吧!天才程式設計師》冠軍團隊解決方案出爐

圖 10

其中第一類方法是目標檢測領域裡面通用的方法,可以增強模型的泛化能力,比如可以增強模型對強弱光的適應性,這也我們在比賽中採用的方法。而 cutout 方法則對水印攻擊有一定的效果,我們可以設定 cutout 的區域範圍,尤其可以對第二批獲取到的訓練資料做 cutout,這樣可以削弱水印攻擊的效果。而從高斯分佈中取樣出的隨機值矩陣加入到訓練影像中則可以針對測試集中的高斯噪聲,也具有增強模型泛化能力的效果。

3.生成對抗網路:既然有對抗樣本了,很多同學自然而然就會想到 GAN 了。沒錯,可以訓練一種專門去水印的生成對抗網路,用於影像的水印去除。

其實,去水印的目的就是將帶水印的影像轉變為無水印的影像,這本質上也是一種影像轉換任務。因此生成器的輸入為帶水印的影像,輸出為無水印的影像;而判別器用於識別結果到底是原始真實的無水印影像,還是經過生成器生成的無水印影像。透過兩者之間不斷的對抗訓練,生成器生成的無水印影像變得足夠「以假亂真」,從而達到理想的去水印效果。如果比賽時間充裕,這是一種很有效的方法。

4.採用兩階段的檢測方法:由於兩階段的檢測方法在第一階段不區分類別,只定位位置資訊,因此第三批的訓練資料可以用於做弱監督的訓練,只利用位置資訊,不利用類別資訊,能夠增加模型的迴歸能力,使其能夠定位的更準。

5.多尺度測試:測試的時候採用多尺度測試(可理解為 TTA)。這是一個比賽漲點神器,玩過俄羅斯的套娃吧,就是下圖這樣的:
AI模型被「騙」怎麼破?《燃燒吧!天才程式設計師》冠軍團隊解決方案出爐
6.資料清洗:如果人力與時間充足,可以採用對訓練集進行人工資料清洗的方法,不過該方法一般適用於工業界,在比賽期間是否採用該方法,就仁者見仁智者見智了。

結語

以上就是針對 A-tech 比賽中攻擊樣本的一些防禦策略。如果沒有這些防禦措施,直接拿一個目標檢測網路去訓練,估計會得到一個比較差的成績,假如無防禦的模型被用於實際的野生動物識別,後果將不堪設想。這次比賽深刻揭示了 AI 安全技術的意義。可以想象,如果在無人駕駛領域或者導彈定位系統中,模型的魯棒性差或者受到了不可預知的樣本攻擊,導致出現「誤傷」的情況,將有可能帶來重大風險。比如曾發生過的無人駕駛汽車撞到行人,著實令人痛心。

從另一方面來看,對抗樣本的存在是非常有意義的。它能夠讓模型看到很多以前它沒有見過的樣本,是有利於增強模型魯棒性的。就像 AI 換臉與 AI 鑑偽, 這種道高一尺、魔高一丈的較量不會停止:一場持續的科技競賽, 必然會呈現攻與防互相促進發展的狀態。

團隊介紹
  • 作者簡介:埼玉,奧比中光演算法工程師,在工業界有諸多落地應用,擅長深度學習在行人領域的應用。

  • 導師:小蠻腰,奧比中光研究院 SDK 組負責人。博士畢業於新加坡國立大學,影像識別經驗豐富,熟悉深度學習演算法,擅長 AI 影像識別、立體視覺。

  • 鳴謝:A-tech 大賽的專家、老師、工作人員以及一同參賽的大佬們。


參考文獻:
[1] Wu Z , Lim S N , Davis L , et al. Making an Invisibility Cloak: Real World Adversarial Attacks on Object Detectors[J]. 2019.
[2] Cihang Xie, Jianyu Wang, Zhishuai Zhang, Yuyin Zhou, Lingxi Xie, and Alan Yuille. Adversarial examples for semantic segmentation and object detection. In Proceedings of the IEEE International Conference on Computer Vision (ICCV), pages 1369–1378, 2017.
[3] Xingxing Wei, Siyuan Liang, Ning Chen, and Xiaochun Cao. Transferable adversarial attacks for image and video object detection. In Proceedings of the International Joint Conference on Artificial Intelligence (IJCAI), pages 954–960. AAAI Press, 2019.
[4] Q. Liao et al., "Fast Local Attack: Generating Local Adversarial Examples for Object Detectors," 2020 International Joint Conference on Neural Networks (IJCNN), Glasgow, United Kingdom, 2020, pp. 1-8, doi: 10.1109/IJCNN48605.2020.9206811.
[5] I. Goodfellow, J. Shlens, and C. Szegedy, 「Explaining and harnessing adversarial examples,」 in International Conference on Learning Representations, 2015.
[6] Moosavi-Dezfooli S M , Fawzi A , Frossard P . DeepFool: a simple and accurate method to fool deep neural networks[C]// Computer Vision & Pattern Recognition. IEEE, 2016.
[7] Carlini N, Wagner D. Towards evaluating the robustness of neural networks//Security and Privacy (SP), 2017 IEEE Symposium on. IEEE, 2017: 39-57.
[8] Terrance DeVries and Graham W Taylor. Improved regularization of convolutional neural networks with cutout. CoRR, abs/1708.04552, 2017.


相關文章