Adversarial attack — CS筆記

Jimmy Hsieh
11 min readOct 22, 2023

--

前言

上一年在準備考資工研,所以有點久沒更新學習心得,之後會考慮寫一篇考研心得分享一下。

之後我決定每次讀論文時或是上課的時候,如果學到一些我覺得還滿有趣或是實用的知識時,就會打一篇心得文給大家學習,例如今天的這篇文要介紹 ’Adversarial attack’ 給大家認識。

這篇主要是參考李洪毅老師的上課內容以及其他有關Adversarial attack的論文,如果想要再詳細理解原理和應用的話可以再去額外學習。

目錄

  1. 什麼是Adversarial attack
  2. 簡介Adversarial attack
  3. Adversarial attack的原理
  4. 其他Adversarial attack
  5. Adversarial attack的影響
  6. 如何應對Adversarial attack
  7. 總結

一 . 什麼是Adversarial attack?

先問一個問題,以下兩張圖片(圖一)哪一個是「狗」?

圖一

相信大家認為這兩張都是「狗」,而你們應該都是用眼睛「看、觀察」來判斷出來。

那如果是用神經網路(Nerual Network)來觀察呢?目前為止有很多network都能辨別圖片,舉個例子,我們使用基本的CNN(Convolutional Neural Network)來辨別圖片,假設這個CNN本身辨別圖片的能力就很好,基本上絕大部分的圖片都能正確辨別,因此照理來說它應該也能正確辨別出來兩張圖片都是「狗」。

然而,當你滿懷信心將圖片丟入network並等待結果時,最後結果告訴你:左邊是「狗」,而右邊是「郵輪」!

為什麼會是這個結果?大部分的人第一反應都是認為是network的辨別能力沒有訓練完整造成不準確的分類,而有少部分的人認為是圖片出問題。

那其實真正的原因就是圖片出了問題,可是明明用眼睛看兩張圖片都是一樣的,然而為什麼network還是不能正確辨別呢?其實這就是對抗性攻擊(Adversarial attack)的其中一個例子:它能在圖片加入人眼觀察不到的雜訊(perturbations),而這個雜訊卻又能讓network辨別錯誤,導致辨別出來的結果與正確答案不一樣。

二 . 簡介Adversarial attack

Adversarial attack是一種在機器學習和AI中使用的技術,是人為的惡意攻擊,讓系統誤認目標,混淆視聽,或是將特定的A判別為B,目的都是要讓系統的判斷產生錯誤,尤其是神經網絡。對抗性攻擊的目標是創建看似正常的輸入,但當模型處理時,會導致不正確或意外的結果,就像上面那個例子。

我稍微再詳細講解上面的例子:左圖是正常沒被污染的image,右圖是被加了雜訊的污染圖(perturbed),因此我可以把右圖拆解成(圖二):

圖二

你會發現其實雜訊是縮了很小之後再加上去的,目的就是要欺騙人眼,而讓神經網絡去辨別這個雜訊導致分類錯誤。

三 . Adversarial attack的原理

原理很簡單,我們先分成兩個視角:一個是正常人使用network來判斷圖片,另一個人是壞蛋想要誤導正常人和network判別錯誤。

目前有一張「正常的圖片 𝑥」,以及另一張「被污染的圖片 𝑥′」,還有正常的神經網路「Network 𝑓」。

今天正常人把正常的圖片 𝑥 丟入Network 𝑓 裡 ,經過分析後判別出來的結果為 𝑓(𝑥) ; 而壞蛋會把正常的圖片 𝑥 進行非常細微的修改變成「被污染的圖片 𝑥′」,再丟入Network 𝑓 裡,得出的結果是 𝑓(𝑥′)(如圖三)。

圖三

再來,身為正常人的你,會希望Network產生出來的結果 𝑓(𝑥) 為「貓咪」; 而如果你是想要系統誤認目標壞蛋,應該是希望產生出來的結果 𝑓(𝑥′) 不是「貓咪」,而是其他東西,例如糖果、鍵盤等等。

假設正常目標「貓咪 y」是正常人想要network辨別出來的target ,因此正常人會希望結果 𝑓(𝑥) 與 y 之間的差距越接近越好 。

反之,壞目標「糖果、鍵盤 ŷ」則是壞蛋想要誤導network辨別的target,那麼壞蛋會希望壞目標 ŷ 與正常的結果 𝑓(𝑥) 之間的差距較大,而與 𝑓(𝑥′) 差距越小越好,因此可以整理以下關係(圖四):

最後,我們可以將圖片 𝑥 之間的關係寫成 || 𝑥 — 𝑥′ || ≤ ε ,ε可以當作極小的誤差,而分類結果會希望 𝑓(𝑥) 和 𝑓(𝑥′) 差距越大越好,當 𝑓(𝑥) 和 𝑓(𝑥′)很大的時候,代表壞蛋攻擊成功了。

四 . 其他Adversarial attack

White-Box Attack & Black-Box Attack

「白盒子攻擊(White-Box Attack)」和「黑盒子攻擊(Black-Box Attack)」是常見的網路安全領域中用於描述攻擊者對系統的了解程度的術語,特別是在針對機器學習模型和深度學習模型的攻擊中經常使用。

1. 白盒子攻擊(White-Box Attack):

白盒子攻擊指的是攻擊者對目標系統的內部結構和工作原理有詳細的了解,通常包括對模型的體系結構、參數、訓練資料等有深入的了解,攻擊者可以存取模型的原始碼、權重參數,以及其他內部資訊。

這種類型的攻擊通常被認為是最具威脅性的,因為攻擊者可以充分利用其對系統的了解來有針對性地攻擊模型,找到模型的弱點並進行欺騙性操作。

2. 黑盒子攻擊(Black-Box Attack):

跟白河攻擊不一樣黑盒子攻擊表示攻擊者對目標系統的內部結構一無所知,僅能觀察輸入和輸出。

雖然攻擊者無法存取模型的原始碼、參數,也無法直接觀察模型的內部工作,但攻擊者可以依賴試驗和探索來發現系統的漏洞,並進行攻擊。這種類型的攻擊通常更具挑戰性,因為攻擊者必須依賴更多的試誤和外部資訊來發現和利用系統的弱點。

FGSM & PGD

這裡我主要講一下White-box attack中的兩個攻擊方式:

  1. FGSM(Fast Gradient Sign Method)

這是是一種簡單而有效的對抗性攻擊方法, 旨在生成「對抗性範例(Adversarial example)」,例如被污染的圖片 𝑥′,這些範例能夠欺騙模型以產生錯誤的輸出,以下是它的公式:

上面的 𝑥 和 𝑥′ 分別是正常的Input 以及 Adversarial example,而 sgn 函數在 FGSM 中用於確定在輸入資料上添加多少擾動,以便最大程度地影響機器學習模型的輸出,但又保持擾動盡可能小,以使對抗性範例與原始輸入相似。 它幫助攻擊者確定梯度的方向,以欺騙模型的預測結果。

而 L( x′, y, ŷ​) 中, L 是損失函數,用於測量模型輸出與目標之間的差異 ; y 還有 ŷ 分別是正確的目標 y以及錯誤的目標 y_target,也就是期望模型輸出的錯誤類別。最後根據對該模型的損失函數梯度(Gradient)對原始輸入資料的每一個資料點進行微小的異動。

而FGSM 只應用一次梯度下降來產生對抗性範例,這使得生成對抗性範例非常高效,但通常生成的對抗性範例可能不如一些迭代方法(如PGD)具有強大的攻擊性。

2. PGD(Projected Gradient Descent)

它透過迭代地應用梯度下降來產生看起來與原始輸入相似的對抗性範例,但這些範例會導致模型錯誤分類,簡單來說,PGD 就是 FGSM 的迭代,以下是它的公式:

你會發現他的公式跟FGSM長得很像,只是多了迭代,而它的範圍則是我們上述講的 || 𝑥 — 𝑥′ || ≤ ε,而 α 是用於控制擾動大小的超參數。

因為PGD 是一個迭代方法,它多次應用梯度下降和投影來產生對抗性範例。 這意味著PGD可以產生更強大、更難以偵測的對抗性範例。

五 . Adversarial attack的影響

很多人認為:被污染的data不要用就好了啊!然而事情沒有想像中的這麼簡單,我以生活上的例子來說明:

現在越來越多車子具有自動駕駛的功能,自動駕駛的原理大致上是由鏡頭捕捉路上的號誌以及其他物,再根據自動駕駛的Network判斷路上車況。而像上面的告示牌,左邊是正常的STOP標誌,右邊是有貼一些膠帶或是受污損的STOP標誌。

對大家來說,左右兩邊的號誌都很好用人工判斷出來,然而對自動駕駛上的Network來說,它會認為右邊的標誌不是 STOP 而是其他標誌,假設辨別出來的標誌是「可以直行」,那麼車子就會依照辨別結果繼續直行前進,最後可能導致車禍發生。

六 . 如何應對Adversarial attack

我們會教Network如何應對Adversarial attack、教它如何 training 和 identify。

訓練模型的流程很像疫苗的原理,大部分可以概括為以下流程:

將「已被滅活、減弱或部分破壞的病原體」注射到人體內,並讓「免疫系統」開始辨識其中的病原體或成分,引發細胞免疫反應,這使得免疫系統在將來再次暴露於相同的病原體時能夠更快、更強大地應對。

「病原體」可以對照Adversarial example,「免疫系統」對照Network,我們希望 Network能夠學會分辨Adversarial example並在之後應對這些攻擊,這就是對抗性訓練(Adversarial Training):一種透過在訓練資料中加入Adversarial example 並使用它們重新訓練模型的方法。 這可以提高模型的穩健性,使其在面對對抗性範例時更加強大。

目前的訓練流程是:

  1. Generation of Adversarial Examples (生成對抗性範例)
  2. Incorporation of Adversarial Examples into the Training Data (將對抗性範例加入原本資料裡)
  3. Re-training the Model(再加以訓練model)
  4. Robustness Evaluation(提高穩健性)

現在很多方式都能做Adversarial Training,DL、RL、ML都能使用,而對抗性訓練的關鍵在於流程1:在訓練資料中生成對抗性範例,並在模型訓練過程中調整模型的參數,以使其能夠在對抗性範例上更具穩健性。 這種方法的可行性不僅取決於模型類型,還取決於具體的任務和應用。

七 . 總結

Adversarial attack 往往會被人們所疏忽的,雖然在一般的影像辨識的應用中,可能造成的傷害並不會太大,但隨著深度學習被使用在越來越多個人隱私或生命財產安全的應用,如果未能注意到隱藏的問題會造成很大的風險。

因此學會如何應對攻擊是一個滿重要的學問,大家如果對此主題有興趣的話可以找資料來學習一下。

參考

--

--

Jimmy Hsieh

我是一個碩士生,接觸AI與數據科學相關領域,而我寫medium的原因單純只是想要把我平常所學的知識和心得記錄下來,希望能和其他初學者和大佬們一起討論學習。