深層学習モデルに対する敵対的攻撃(Adversarial Attack)を説明しようと試みる

日本語の記事が少ないので書いてみました。敵対的攻撃の中でも、画像分類モデルに対する非線形最適化手法をベースにした攻撃手法について紹介します。

深層学習モデルの脆弱性

深層学習モデルは、Adversarial Exampleと呼ばれる入力に対して脆弱性を持っています。この事実は、Szegedy et al.によって2014年に発見されました。Adversarial Exampleとは、人の目では知覚できないくらい小さく、かつモデルの予測を狂わせるようなノイズが加わった入力を指します。

Adversarial Exampleは、偶然生成されてしまうこともありますが人為的に(意図的に)作り出すことが可能です。自動運転や監視システムなどの様々な分野に深層学習が応用されていることを考慮すると、Adversarial Exampleの存在は脅威になり得ます。したがって、モデルの頑健性を正確に評価したり、より頑健なモデルを作成したりするためにも敵対的攻撃に関する研究が盛んに行われています。

敵対的攻撃(Adversarial Attack)とは

敵対的攻撃(Adversarial Attack)とは、前項で説明したAdversarial Exampleを人為的に作成する手法を指します。(悪意を持ってAdversarial Exampleを使用することもAdversarial Attackと呼ばれますが、この記事では単にAdversarial Exampleの生成手法をAdversarial Attackと呼ぶことにします。)

敵対的攻撃手法には、深層学習モデルの勾配やパラメーターなどを含む全ての情報にアクセスできることを仮定したwhite-box attackと、モデルの予測のみを用いて攻撃するblack-box attackがあります。また、学習データにノイズとなるような入力を混入させるpoisoning attack、特定の入力を与えた場合にのみ異常な挙動を引き起こすように仕向ける、back-door attackなども知られています。

本記事では特に画像分類モデルに対するwhite-box attackに注目して説明するため、他の手法や他のタスクに対する攻撃に関心がある方は以下の文献を参照ください。

敵対的攻撃を最適化問題として定式化する

定式化①

white-box attackでは、次のような最適化問題を解くことによって敵対的攻撃を行う場合が多いです。

$${\rm maximize}_{x} L(x, y)~{\rm s.t.~} \|x-x_{org}\|_p\leq\varepsilon$$

ここで、$L(\cdot,\cdot)$は生成された画像を敵対的画像にするための目的関数、$x_{org}$は本来の入力、$y$は正解ラベルです。$x_{org}$に加えた摂動を知覚困難なものにするために、制約式によって摂動の大きさを制限します。摂動の制約には、$\|\cdot\|_p, (p=0, 1, 2, \infty)$やwasserstein距離などが使われます。$p$ノルムで摂動を制約する攻撃は$l_p-attack$と呼ばれます。

目的関数$L$としては以下のような関数が用いられることが多いです。

logit$Z(x)$最小化

logitとはモデルの出力であり、1000クラス分類器の場合は1000次元ベクトルになっています。通常はこのlogitをsoftmax関数などに通すことで予測確率を出力します。
logit最小化による敵対的攻撃の場合、正解クラスのlogit $Z(x)_c$を最小化することによって正解クラスに分類される確率がなるべく小さくなるような入力を求めます。言い換えると、$L(x, c)=-Z(x)_c$を最大化します。

Cross Entropy loss

名前の通り、cross entropy lossを用いて正解クラスに対する予測確率を最小化します。特定のクラスに誤分類させたい場合は、そのクラスに対する予測確率を最大化します。

C&W loss

Carlini & Wagner で提案された目的関数であり、この関数を使う場合は$L(x, c) = -Z(x)_c + \max_{i\neq c} Z(x)_i$を最大化します。これはマージン最大化と呼ばれることもあります。この目的関数を使うことで、正解クラスの予測確率を低減すると同時に2番目に予測確率が高いクラスの予測確率を増加させることができます。この特徴により、単純なlogit最小化よりも効率的に攻撃することができます。

DLR loss

Croce & Heinによって提案された目的関数で、targeted / untargetedの両方が提案されています。

定式化②

また、定式化①で制約とされていた部分を目的関数に、目的関数とされていた部分を制約とした以下の定式化が用いられる場合もあります。

$${\rm minimize~} \|\delta\|_p {\rm ~s.t.~} \arg\max_{i} Z(x_{org}+\delta)_{i}\neq c$$

定式化①では制約が単純な形をしているため、実行可能領域への射影等によって制約をそのまま扱うことができますが、定式化②の場合は同じように対応することができません。そこで、定式化②の場合は定式化①で使った目的関数をペナルティ項として使用することで実行可能解を探索します。

有名な攻撃手法

[1] L-BFGS

Adversarial Exampleの存在を初めて主張した文献[1]で使われた手法です。Adversarial Example生成を矩形制約付きの最適化問題として定式化し、準ニュートン法の一種であるLeast memory-BFGS法を用いてAdversarial Exampleを作成しました。

現在は主に計算量の観点から二次微分やその近似を使わず、一次微分のみを使ったアルゴリズムが主流です。

FGSM系統

[2] FGSM

ニューラルネットワークの線形性がAdversarial Exampleの存在を説明できるのではないかという仮説のもと、勾配の符号方向に大きさ$\varepsilon$の摂動を一回だけ加える手法です。

$$ x_{adv}=x_{org}+\varepsilon {\rm sign}(\nabla L(x_{org}, y_c)) $$

が生成されるAdversarial Exampleです。論文では$L$としてモデルの学習に使用した損失関数が採用されています。

[34] I-FGSM (BIM) / PGD

実行可能領域への射影を用いることで、FGSMを反復的に行うのがI-FGSM(BIM), PGDです。

$$ x_{adv}^{(k+1)} = Proj\left(x_{adv}^{(k)}+\eta {\rm sign}(\nabla L(x_{adv}^{(k)}, y_c)) \right) $$

のようにAdversarial Exampleを生成します。$Proj$は実行可能領域への射影を表し、ステップサイズ$\eta$は固定です。

[5] MI-FGSM

I-FGSMの更新方向として、勾配方向のモーメンタム$g^{(k+1)}=g^{(k)}+\mu \frac{\nabla L(x_{adv}^{(k)}, y_c)}{\|\nabla L(x_{adv}^{(k)}, y_c)\|_1}$を使用した手法です。また、一つのモデルの勾配ではなく複数モデルの勾配の平均を更新方向の計算に用いるというアイデアを提案しています。

[6] SI-NI-FGSM

Nesterov 加速に着想を得て提案された手法です。

$$ \begin{align}
x_{nes}^{(k)}&=x_{adv}^{(k)}+\eta\cdot\mu\cdot g^{(k)} \\
g^{(k+1)}&=\mu\cdot g^{(k)}+\frac{\nabla_x L(x_{nes}^{(k)}, y_c )}{\|\nabla_x L(x_{nes}^{(k)}, y_c )\|_2} \\
x_{adv}^{(k+1)}&=Proj (x_{adv}^{(k)}+\eta⋅sign(g^{(k+1)} ))
\end{align}
$$

のように更新します。

[7] Frank Wolfe

凸最適化問題に用いられるFrank-Wolfeのアルゴリズムを用いたAdversarial Attackです。Frank-Wolfe法は、各反復において目的関数を線形近似し、その関数を最小化する方向に更新します。ステップサイズを$0\leq\eta\leq1$の範囲で決定することで、実行可能解を初期点として与えれば射影を使うことなく実行可能領域内部を探索することができます。

$l_{\infty}-$attackの場合、線形近似した関数の最小化問題を解析的に解くことができるため、以下のような更新式になります。

$$\begin{align}
g^{(k)}&=\beta\cdot g^{(k-1)} + (1-\beta)\cdot \nabla L(x_{adv}^{(k)}, y_c)\\
v^{(k)}&=-\varepsilon {\rm sign}(g^{(k)}) + x_{org}\\
d^{(k)}&=v^{(k)}-x_{adv}^{(k)}\\
x_{adv}^{(k+1)} = Proj\left(x_{adv}^{(k)}+\eta~d^{(k)} \right)
\end{align}$$

通常のFrank-Wolfe法では$g^{(k)}$として目的関数の勾配をそのまま使いますが、この文献では勾配のモーメンタム方向を使用しています。

[8] APGD

PGDの更新式に探索点の移動方向に関するモーメンタム項を加え、ステップサイズを動的に決定する(ステップサイズを定数としない)方法を提案しています。

ステップサイズの更新ルールは以下の通りです。

  • ステップサイズ更新条件を判定する反復(チェックポイント)を漸化式$w_{j+1}=w_j+\lceil N_{iter}~p_{j+1}\rceil, p_{j+1}=\max(p_{j}-0.03, 0.06)$に従って前計算する
  • 各チェックポイントで以下の条件のいずれかを満たした場合にステップサイズを0.5倍する。
    • 前回のチェックポイントから最良目的関数値が更新されていない
    • 前回のチェックポイントから目的関数値の更新回数が反復の$\rho$%よりも少ない

[9] ACG

共役勾配法に着想を得た手法で、APGDと同様の方法によってステップサイズを決定します。以下の指揮によって更新します。

$$ \begin{align}
s^{(k)}&=s^{(k-1)}+\beta\nabla L(x_{adv}^{(k)}, y_c)\\
x_{adv}^{(k+1)}&=x_{adv}^{(k)}+\eta^{(k)}\cdot{\rm sign}(s^{(k)})
\end{align}$$

$\beta$の計算方法にはさまざまなものが提案されていますが、ACGではHSの公式が採用されています。

以下の手法については随時追加 or 論文のみ追加します。

DeepFool系統

DeepFool

深層学習モデルの頑健性を、敵対画像が存在する摂動サイズの下限によって評価することを提案した手法です。反復ごとに最も敵対画像を生成しやすい方向へ更新します。以下の更新式を、画像が敵対的でなくなるまで繰り返します。

$$ \begin{align}
w’_{k}&\leftarrow \nabla Z(x_{i})_{k}-\nabla Z(x_{i})_{c} (\forall k )\\
f’_{k}&\leftarrow Z(x_i)_{k} – Z(x_i)_{c} (\forall k )\\
\hat{l}&\leftarrow{\rm arg}\min_{k\neq c}\frac{|f’_k|}{\|w’_k\|_2} \\
r_i&\leftarrow\frac{|f’_\hat{l}|}{\|w’_\hat{l}\|_2}w’_\hat{l} \\
x_{i+1}&\leftarrow x_i + r_i
\end{align}
$$

$\hat{l}$は、決定境界までの距離が最も短いクラスを攻撃対象として選択していることに相当します。私は各反復において、最も登りやすく(クラス選択)最も勾配が急な方向に更新するようなイメージだと解釈しました。

DDN

記事を書きました。

距離関数や探索空間を工夫した手法

HSV色空間で敵対画像を探索する手法

摂動の大きさをCIEDE2000で計算する手法

Wasserstein距離を用いて摂動の大きさを制約する手法

参考文献

[1] Intriguing properties of neural networks, Christian Szegedy, Wojciech Zaremba, Ilya Sutskever, Joan Bruna,Dumitru Erhan, Ian Goodfellow, ICLR2014

[2] EXPLAINING AND HARNESSING ADVERSARIAL EXAMPLES, Ian J. Goodfellow, Jonathon Shlens & Christian Szegedy, ICLR2015

[3] ADVERSARIAL EXAMPLES IN THE PHYSICAL WORLD, Alexey Kurakin, Ian J. Goodfellow, Samy Bengio, ICLR2017

[4] Towards Deep Learning Models Resistant to Adversarial Attacks, Aleksander Madry, Aleksandar Makelov, Ludwig Schmidt, Dimitris Tsipras, Adrian Vladu, ICLR2018

[5] Boosting Adversarial Attacks with Momentum, Yinpeng Dong, Fangzhou Liao, Tianyu Pang, Hang Su, Jun Zhu, Xiaolin Hu, Jianguo Li, CVPR2018

[6] Nesterov Accelerated Gradient and Scale Invariance for Adversarial Attacks, Jiadong Lin, Chuanbiao Song, Kun He, Liwei Wang, John E. Hopcroft, ICLR2020

[7] A Frank-Wolfe Framework for Efficient and Effective Adversarial Attacks, Jinghui Chen, Dongruo Zhou, Jinfeng Yi, Quanquan Gu, AAAI2020

[8] Reliable Evaluation of Adversarial Robustness with an Ensemble of Diverse Parameter-free Attacks, Francesco Croce, Matthias Hein, ICML2020

[9] Diversified Adversarial Attacks based on Conjugate Gradient Method, Keiichiro Yamamura, Haruki Sato, Nariaki Tateiwa, Nozomi, Hata, Katsuki Fujisawa, Issa Oe, Hiroki Ishikura, Toru Mitsutake, ICML2022

[10] DeepFool: A Simple and Accurate Method to Fool Deep Neural Networks, Seyed-Mohsen Moosavi-Dezfooli, Alhussein Fawzi, Pascal Frossard, CVPR2016

[11] Towards Evaluating the Robustness of Neural Networks, Nicholas Carlini and David Wagner, IEEE Symposium on Security & Privacy, 2017

この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。

関連記事

コメント

この記事へのコメントはありません。

CAPTCHA