當前位置:
首頁 > 最新 > PaddlePaddle平台對抗樣本工具包Advbox

PaddlePaddle平台對抗樣本工具包Advbox

作者:姜輝,郭星,高磊,韋韜

摘要

對抗樣本廣泛存在於深度神經網路中,其表現出來的顯著反直觀特點吸引了越來越多的研究者進入對抗樣本檢測、生成與防禦研究領域。對抗樣本工具包能夠為研究者深入開展研究提供極大的便利,免去重複「造輪子」的精力與時間消耗,可以高效地使用最新的生成方法構造對抗樣本數據集用於對抗樣本的特徵統計、攻擊全新的AI應用抑或是加固業務AI模型。目前大部分主流的機器學習平台/框架均已有相應的對抗樣本工具包,如Tensorflow平台的cleverhans等。我們為PaddlePaddle平台貢獻了對抗樣本工具包Advbox,便於平台的開發者、使用者等參與者能夠更好地發現和降低模型健壯性的風險敞口。相較於cleverhans,Advbox在代碼結構、易用性和參數調優上都更有優勢。我們期待有更多開發者和研究者加入到PaddlePaddle平台中來,共同豐富和完善PaddlePaddle平台的安全生態,也歡迎貢獻自己最新的對抗樣本檢測、生成或防護演算法,驗證評估後我們也會及時更新至Advbox中。


1. 背景

深度神經網路(DNNs)已經-成為近幾年來最為炙手可熱和引人矚目的人工智慧(AI)學習模型。在圖像分類等具體識別、分類任務上,深度神經網路都表現出能夠與人類相媲美,甚至於遠超人類的模式識別和分類能力。然而最近的研究表明深度神經網路自身非常容易受到對抗樣本(adversarial example)的攻擊,攻擊者可以在正常數據輸入的基礎上精心構造足夠小的擾動,生成對抗樣本。對抗樣本在難以被肉眼或者常用統計方法所檢測到的同時,能夠導致AI模型以較高的置信度輸出錯誤的分類(non-targeted attack),或者錯誤分類為攻擊者指定的目標類別(targeted attack)。

對抗樣本的數學定義可表述為,我們將模型的得分函數(scorefunction)表示為

,對於給定的輸入x,假設為y類,我們簡單地表示為。在原輸入x的基礎上施加很小的擾動,即。對於非指定目標攻擊,對抗樣本讓原輸入x對應的y類得分下降而使其它類得分超過y類得分;對於指定目標攻擊,對抗樣本將使目標的得分超過其它類別(包括y類)。

對抗樣本的存在,將威脅深度神經網路在實際業務和物理場景中的應用。具體的例子如圖1-1所示:

圖1-1 對抗樣本生成示意圖

inception v3[1]模型將左側圖片識別山地車,通過加入肉眼無法區分的擾動構成對抗樣本(右側的圖片),被inception v3模型以高置信度識別成蟑螂。

對抗樣本在多種機器學習、深度學習模型廣泛存在。並且對抗樣本存在顯著的遷移特性,即同一模型(白盒)的不同實例間(不同的超參數)可以使用對抗樣本進行遷移,不同模型(黑盒)間同樣能夠被對抗樣本遷移攻擊。

為了方便對抗樣本的研究以及利用生成的對抗樣本加固模型,目前主流的機器學習平台都提供了對抗樣本生成的工具包,如Tensorflow的cleverhans[9]。本文主要介紹PaddlePaddle平台的對抗樣本工具包Advbox,與cleverhans相比使用更加簡潔,並且攻擊成功率方面也有明顯優勢。目前Advbox已經在github[2]上隨PaddlePaddle一起開源,歡迎更多朋友貢獻演算法。


2. 工具包Advbox

我們在百度深度學習平台PaddlePaddle上開發了對抗樣本工具包Advbox[2],並成為PaddlePaddle平台中的重要安全工具。Advbox的目的有三個:第一,作為測試深度學習模型抵禦對抗樣本的健壯性的基準。第二,通過生成的對抗樣本加固現有的模型(對抗訓練)。第三,作為對抗樣本研究的工具包。

目前,Advbox實現了多種生成對抗樣本的攻擊方法,包括

FGSM[3](Explaining and Harnessing Adversarial ExamplesBy Goodfellow et al.),BIM[4](Adversarialexamples in the physical world by Alexey Kurakin et al.), DeepFool[5] (DeepFool: a simple and accuratemethod to fool deep neural networks by Seyed-Mohsen Moosavi-Dezfooliet al.),同時還有JSMA[7](The Limitations of DeepLearning in Adversarial Settings by NicolasPapernot et al.)

。其中JSMA,FGSM,BIM同時實現了包括誤分類non-targeted攻擊和指定目標的targeted攻擊。下面是相關演算法的介紹以及Advbox工具包的使用。


2.1 相關演算法介紹

2.1.1 FGSM演算法

FGSM由Goodfellow等研究者於2015年提出,他們試圖從AI模型的線性角度解釋對抗樣本存在的原因。假設線性模型權重參數為w,輸入為n,擾動為,則新的輸出為。這樣一來,激活函數輸入就相較原始輸入增加了

。如果權重w的量級為m,其維度為n,擾動最大值為ε,那麼對抗樣本對激活函數造成的影響即為,隨著維度n的增加,擾動給激活函數輸入帶來的增量也相應增大,最終將會改變激活函數的輸出值。

作者認為目前大部分深度神經網路的激活函數都採用ReLU而不再是sigmoid函數,越來越多的線性被引入導致了對抗樣本的存在。基於這一假設,作者提出了FGSM用於生成對抗樣本,採用Linfinity作為範數約束,對於非指定目標攻擊,其構造目標函數為;對於指定目標攻擊,目標函數變化為。直觀上來看,損失函數對於輸入x的梯度是損失函數變化最快的方向。在非指定目標攻擊場景下,沿著梯度方向增加像素值將會使得原始類別標籤的損失值增大,從而降低模型判定對抗樣本為原始類別的概率;在指定目標攻擊場景下,沿著梯度相反方向增加像素值將會使得指定目標類別標籤的損失值減小,從而增加模型判定對抗樣本為指定目標類別的概率。

同時在論文中,作者還首次揭示了對抗樣本的分布特徵,即對抗樣本往往存在於模型決策邊界的附近,在線性搜索範圍內,模型的正常分類區域和被對抗樣本攻擊的區域都僅佔分布範圍的較小一部分,剩餘部分為垃圾類別(rubbish class),如圖2-1所示。

圖2-1 對抗樣本的分布

左圖展示了在一張輸入樣本上變化ε,mnist10個類別每個類別對應softmax層參數的變化。這張圖片的正確類別是4。右圖是生成曲線的輸入,黃色框中表明了正確分類的輸入,黃色框左上角對應負ε,右下角對應正ε。每個類別對應的非規範化的對數概率明顯與ε分段線性相關,而且在廣泛的ε範圍內錯誤的分類比較穩定。

2.1.2 BIM演算法

2017年Google Brain的Kurakin等研究者在FGSM的基礎上提出了BIM用於快速生成對抗樣本。BIM實際上是一個迭代版的FGSM,同樣採用Linfinity作為範數約束。

對於非指定目標攻擊,作者在每次迭代中使用FGSM生成對抗樣本,並加入clip函數用於圖片歸一化的值域回歸,即:

對於指定目標攻擊,作者在迭代中採用類似的方法,即:

在實際生成對抗樣本的過程中,作者建議值為1。直觀上,BIM與FGSM一樣方便理解,同時簡潔高效,攻擊效果顯著優於FGSM。後續有很多BIM的變種[6],都有著不俗的攻擊效果。

不過後續研究表明,基於迭代的方法有相對較差的遷移性,使得進行黑盒攻擊的效果變差。而只有一步的基於梯度的方法雖然白盒攻擊的效果不好,但是能產生更具遷移性的對抗樣本。

2.1.3 DeepFool演算法

DeepFool[4]由EPFL的Moosavi-Dezfooli等研究者於2015年提出,收錄於2016年CVPR會議中。作為一種白盒對抗樣本生成方法,DeepFool原理上由二分類模型出發,計算最小擾動距離為當前輸入點到分割超平面的最短距離,推導出二分類任務下的擾動生成方法,並從二分類推廣至多分類。DeepFool使用L2範數約束,對抗樣本生成效果優於FGSM與JSMA方法,在當時是比較先進的攻擊方法。

2.1.4 JSMA演算法

2016年Papernot等研究者基於L0的範數約束,提出了指定目標攻擊的JSMA[7]方法用於生成對抗樣本。JSMA旨在儘可能減少需要改變的像素點,目標是找到整幅圖片中對指定目標具有利的最大顯著性像素點,通過改變該像素值的大小,實現基於單像素點的對抗樣本生成。作者構造了顯著性列表(saliency map)用於搜索最佳像素點,如公式2-1所示,當像素點對指定目標類別的偏導數小於0時,增加該像素點的像素值將導致指定目標類別的得分函數值降低;當該像素點對其它類別的偏導數和大於0時,增加該像素點的像素值將導致其它類別的得分函數值增大,等價於降低了指定目標類別的得分函數值。這樣的像素點對指定目標不利,不屬於最佳像素點。相反,當像素點對指定目標類別的偏導數大於0或者對其它類別的偏導數和小於0時,增加該像素點的像素值將有利於模型判定為指定目標類別,顯著性最大的像素點即為JSMA所要搜索的像素點。在實際的對抗樣本生成中,由於單像素點的約束過強,作者建議放寬至兩個像素點對的生成上,如公式2-2所示。

公式2-1 JSMA顯著性列表計算公式

公式2-2 像素點對的顯著性列表計算公式

作者在MNIST數據集上使用JSMA生成了對抗樣本,如圖2-2所示。我們可以看到,對角線上的圖片為原始圖片,在L0的範數約束下,肉眼較容易地區分對抗樣本與原始圖片的差別。

圖2-2JSMA在MNIST數據集上生成的對抗樣本


2.2 Advbox核心功能

Advbox主要分成一下幾個模塊:

Attack:attack class定義了攻擊方法的介面,後面所有攻擊方法都繼承Attack基類,實現相應的介面。

Model:model class表示深度學習的模型,定義了模型相關的介面。

Adversary:adversary class包含初始圖像,以及生成的untargeted或者targeted對抗樣本。


2.3攻擊步驟

Advbox目前實現的方法都是基於白盒的攻擊。下面以mnist舉例,

1、首先要訓練一個模型並保存模型參數。

fluid.io.save_params(exe,"./mnist/", main_program=fluid.default_main_program())

2、然後載入模型的參數還原模型。

fluid.io.load_params(exe,"./mnist/", main_program=fluid.default_main_program())

3、利用還原的模型,構造一個PaddleModel對象。

m= PaddleModel(fluid.default_main_program(), IMG_NAME, LABEL_NAME,

logits.name, avg_cost.name, (-1,1))

4、選擇一種攻擊方法,比如GradientSignAttack(FGSM),將PaddleModel作為參數傳給GradientSignAttack。

att= GradientSignAttack(m)

5、把image和label作為參數傳入4中的attack對象中,則進行攻擊,生成對抗樣本保存在返回值Adversary中。

adversary= att(Adversary(data[0][0], data[0][1]))


2.4 測試結果

我們在mnist數據集上訓練了簡單的cnn模型,訓練的準確率達到了98%。然後在此模型上進行了untargeted攻擊,選取了mnist的測試集10000張圖片。分別使用了FGSM和BIM進行攻擊,攻擊成功率分別達到了97.6%和99.98%。


2.5 與cleverhans對比

Advbox基於Paddle最新的Fluid[8]開發,與Tensorflow中的cleverhans[9]庫主要有以下兩點優勢:

1、使用的簡潔性。cleverhans的攻擊方法使用之前,需要先在攻擊模型上繼承cleverhans.model中的Model類,而使用Advbox攻擊的時候只需要把攻擊模型的program作為參數傳給攻擊類即可。Advbox相對於cleverhans使用起來簡單很多。

2、攻擊成功率的優勢。cleverhans中的迭代的攻擊方法均使用了固定的步長eps,一方面步長eps的設定對使用者而言需要一定的經驗和技巧,另外一方面eps的值影響著攻擊的成功率,eps過高會導致對抗樣本的修改肉眼看上去過與明顯,而eps設置低的話會導致攻擊的成功率降低。因此在adversary庫中針對這一點進行了改進,eps中的值的設置採取了從小到大進行迭代的方式,一方面能提高攻擊的成功率,另外一方面能保證對抗樣本的修改不顯得過於明顯,在攻擊成功率和對抗樣本的修改之間取得一個平衡。


3. 總結

Advbox是Paddle上一個開源的對抗樣本工具集,你不僅可以利用Advbox生成對樣樣本,測試模型的健壯性,還可以利用Advbox生成對抗樣本來加固你的模型。目前Advbox支持FGSM,BIM,JSMA和DeepFool等方法,後續將會有更多的攻擊方法(如L-BFGS[10], Carlini/Wagner[11])加入。Advbox已經成為PaddlePaddle平台上重要的安全工具,歡迎大家參與Paddlepaddle以及Advbox的工作。更多精彩內容請關注實驗室的公眾號。

Advbox的github地址如下:

https://github.com/PaddlePaddle/models/tree/develop/fluid/adversarial


4. 參考資料

[1]ChristianSzegedy, VincentVanhoucke, Sergey Ioffe,et al. Rethinking the Inception Architecture for Computer Vision, 2015.

[2]https://github.com/PaddlePaddle/models/tree/develop/fluid/adversarial

[3]Ian J.Goodfellow,JonathonShlens, ChristianSzegedy. Explaining and Harnessing Adversarial Examples, 2014.

[4] AlexeyKurakin, IanGoodfellow, Samy Bengio.Adversarial examples in the physical world, 2016.

[5]Seyed-MohsenMoosavi-Dezfooli,AlhusseinFawzi, PascalFrossard. DeepFool: a simple and accurate method to fool deep neuralnetworks, 2015.

[6]Yinpeng Dong, Fangzhou Liao, Tianyu Pang,et al.Boosting Adversarial Attacks with Momentum, 2017.

[7] NicolasPapernot, PatrickMcDaniel, Somesh Jha,et al.The Limitations of Deep Learning in Adversarial Settings,2015.

[8] http://staging.paddlepaddle.org/docs/develop/documentation/en/design/fluid.html

[9] https://github.com/tensorflow/cleverhans

[10] Pedro Tabacof, Eduardo Valle.Exploring the Space of Adversarial Images, 2015

[11] NicholasCarlini, David Wagner.Towards Evaluating the Robustness of Neural Networks, 2017

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 百度安全實驗室 的精彩文章:

TAG:百度安全實驗室 |