私の備忘録がないわね...私の...

画像処理とかプログラミングのお話。

AutoAttack[日本語まとめ]

基本情報

2022年5月時点の adversarial attack SOTA.

論文 [Croce+, ICML20] arxiv.org

github github.com

Abstract (概要)

最近の防御手法は正確な評価が出来ていないため, SOTA が良く分からない. ちゃんとした評価, つまりちゃんとした攻撃が出来ない理由は攻撃や勾配の難読化, マスキングに関するハイパラを上手く調節出来ていないからである. 本論文では, まずPGDを拡張した二つの手法を提案する. これはステップサイズと目的関数の欠陥を改善している. 私達はこれらを二つの補完的な既存の攻撃と組み合わせて, パラメータフリーで高速な攻撃を実現する. 私達はこのアンサンブル手法で50個以上のモデルを攻撃し, 1つの例外を除き, 全てのモデルのロバスト精度を低下させた. そして10%以上の防御手法が機能していないことを明らかにした.

Introduction (導入)

これまで色々な防御手法が提案されてきたが, まともに機能しているのは adversarial training だけである. 理論的保証を持つ手法などもあるが, やはり adversarial training の方が強い. 防御手法が正しく評価できていないのは, パラメータのチューニングを必要としない汎用的な攻撃手法が無いからである. 本論文はこれを提案する.

最も一般的な攻撃手法は PGD だが, これも時には機能しなくなる. これは固定されたステップサイズと cross-entropy (CE) loss が原因である. 私達が提案する Auto-PGD (APGD) はステップサイズを選ぶ必要がなく, また CE loss 以外の損失関数も使う. この手法のパラメータはイテレーション回数だけであり, その他の要素は全て自動的に調節される.

また既存の攻撃が上手くいかない理由の一つとして, 多様性の欠落, つまり FGSM や PGD ばかりを使っていることが問題として考えられる. 攻撃に多様性を生むために私達は white-box FAB と black-box Square Attack を上述の二つの手法に組み合わせる. すなわち4つの攻撃のアンサンブルを行う. 本論文ではこのアンサンブル攻撃を AutoAttack と呼ぶ.

本論文では, 35本以上の論文からなる50種類以上の防御手法を AutoAttack によって評価した. AutoAttack に含まれる3つの white-box な手法は5回のリスタートしか行っていない. 結果としては, 2つの防御手法以外は全て報告された値よりも小さなロバスト精度となった. さらに少しだけ計算量を増やした AutoAttack+ の場合では, 1つを除き, 全て上手くいった. また13個以上のモデルが10%以上のロバスト精度の低下を引き起こしており, これらは防御手法として機能していない.

私達は AutoAttack が究極の攻撃と思っている訳ではないが, ハイパラのチューニング無し, かつ比較的計算量の少ない手法としては良いものだと思っている.

Adversarial examples and PGD (敵対的画像とPGD)

通常の PGD は各イテレーションのステップサイズが固定であり, またランダムスタートを用いる. またノルムに応じて, 勾配は正規化が行われる. 例えば  l_\infty norm であれば, 勾配を符号関数にかける.

Auto-PGD: A budget-aware step size-free variant of PGD (Auto-PGD: step size を選ぶ必要がない PGD の変種)

色々書いているが, 要はステップサイズを徐々に減少させるPGDである. Budget-aware のように budget (予算) という言葉が論文中で使われるが, これはイテレーション回数を指している. Budget-aware という言葉は後述のチェックポイントの計算を指していると思われるが, これもステップサイズを効率的に減少させる枠組みでしかない. Auto-PGD が普通の PGD と異なるのは step-size を減少させるという点と後述の DLR loss だけである.

Gradient step (勾配計算による敵対的画像の更新)

APGD の更新は以下のように普通の PGD にモーメンタムを加えただけである. 下の式の  \alpha は0.75で固定される.

 \displaystyle
  \begin{align}
    z^{(k+1)} &= P_S \left( x^{(k)} + \eta^{(k)} \nabla f(x^{(k)}) \right) \\
    x^{(k+1)} &= P_S \left( x^{(k)} + \alpha \cdot \left( z^{(k+1)} - x^{(k)} \right) + (1-\alpha) \cdot \left( x^{(k)} - x^{(k-1)} \right) \right)
  \end{align}

Step size selection (step size の選択・減少)

始まりの step size  \eta^{(0)} 2\epsilon であり, ここからある条件に応じて, 1/2ずつ減少させていく. 条件を満たしているか判定するチェックポイント  w_j (例えば 0 iteration目, 20 iteration目, 40 iteration目, ...) の設定は後述. 条件は以下の二つのどちらかを満たしていれば, というものである.

  1.  \displaystyle \sum^{w_{j-1}}_{i=w_{j-1}} \boldsymbol{1}_{ f(x^{(i+1)}) \gt f(x^{(i)}) } \lt  \rho \cdot (w_j - w_{j-1})
  2.  \eta^{(w_{j-1})} \equiv \eta^{(w_{j})} and  f^{(w_{j-1})}_{\text{max}} \equiv f^{(w_{j})}_{\text{max}}

ただし,  \boldsymbol{1} は条件を満たしたとき1, そうでなければ0の関数,  f は損失関数,  \rho=0.75,  \equivは両辺の値が一致しているか判定するものである.

条件1の左辺は攻撃が成功した, つまり損失関数の値を上昇させることができたステップの回数である. つまり条件1は, 前回のチェックポイントから今回のチェックポイントまで, 更新が上手くいったステップが全体の75%以下かを判定するものである.

条件2は前回のチェックポイントで step size が更新されず, 一番良い adversarial example も更新されていないときである.

Restarts from the best point (一番良いところからリスタート)

チェックポイントで条件を満たしたら, 次のイテレーションは今までで一番良いやつからスタート.

Exploration vs exploitation (大域的な探索と局所的な最適化)

最適アルゴリズムはグローバルな探索から局所的な最適化に徐々に移ってほしい. 経験的に, 最初の探索には時間をかけてよい. 実際, 最初から小さなステップサイズを選ぶのは, これまでの random start の成功から見ても悪手である. 我々はチェックポイントを  w_j = \lceil p_j N_{\text{iter}} \rceil のように定める. ただし,  p_0 = 0, p_1 = 0.22 であり, 以下のように更新される.

 \displaystyle
    p_{j+1} = p_j + \max \{ p_j - p_{j-1} - 0.03, 0.06 \}

例えば, 100 iteration のとき,  w_0 = 0, w_1 = 22, w_2 = 41, w_3 = 57 である.

Comparison of APGD to usual PGD (通常の PGD と APGD の比較)

APGD と モーメンタム付きの PGD を CE loss とロバスト精度で比較する. つまりステップサイズの調整有り・無しの比較を行う. データセットはMNISTとCIFAR-10である. 通常の PGD のステップサイズは  \epsilon / tで,  t\in\{0.5,1,2,4,10,25,100\}である. APGD のイテレーション回数は  N_{\text{iter}}\in\{25,50,100,200,400,1000\}である.

結果としては, APGD の方が攻撃性能が高いことが分かった. また APGD は大きいイテレーション回数のときは, 序盤で微小な精度の増加を犠牲に, グローバルな探索を行うことで, 最終的により強い攻撃となっている.

An alternative loss (CE loss に対して, もう一つの損失関数)

ある画像の正解クラスを  y , そのクラスのロジットを  z_y, 確率を  p_y とする.

CE loss は  p_y\approx1 のとき,  \nabla_x \text{CE}\approx\boldsymbol{0} となり, 勾配消失する. 勾配消失すると PGD の計算が出来なくなり, 攻撃が上手くいかなくなる.

ここで, 興味深い事例を紹介する. 分類器の最終層の出力, つまりロジットを1000倍するだけで,  p_y\approx 1, すなわち \nabla_x \text{CE}\approx\boldsymbol{0}となる. これは確率を計算する softmax 関数, 更に言えばその内部の exponential 関数の影響である. これは最終層の出力にある大きな値をかけるだけで, CE loss による攻撃は機能しなくなるということを表している.

下のグラフは実際にこれを実験で確認してみたものである. これは上の説明を基に, 最終層の出力を rescaling factor (横軸)で割っている. つまり横にいくほど (大きな数で割るほど), 攻撃が成功しやすくなるということである.

また adversarial attack で良く使われる CW loss は以下のように表され, これはロジットに大きな値をかけても勾配消失しない. だが, これもロジットを大きな値で割ると, 勾配消失が起きる. ちなみに CE loss も超大きな値で割ると勾配消失を起こす (はずである).

 \displaystyle
    \text{CW} = -z_y + \max_{i\ne y}z_i

Difference of Logits Ratio Loss (ロジットの比率の違いを利用した損失関数)

本論文で提案される Difference of Logits Ratio (DLR) loss は以下のようなものである. ただし,  \pi はロジットの降順で決まるクラスである. つまり  z_{\pi_1} は一番大きなロジット.

 \displaystyle
    \text{DLR} = -\frac{z_y-\max_{i\ne y}z_i}{z_{\pi_1}-z_{\pi_3}}

これは各ロジットの値を何倍しても分母と分子で打ち消し合い, 上述のような勾配消失が起きない.

更にこれの targeted attack 用は以下のようになる. 分母で  z_{\pi_3} z_{\pi_4} が出てきているのは  z_{\pi_3} のみを使うと,  z_{\pi_3} = z_t のとき, 定数になってしまうからである.

 \displaystyle
    \text{Targeted-DLR} = -\frac{z_y-z_t}{z_{\pi_1}-(z_{\pi_3}+z_{\pi_4})/2}

APGD versus PGD on different losses (様々な損失関数を用いた通常の PGD と APGD の比較)

PGD と モーメンタム付きの PGD, APGDを比較する. 損失関数としては, CE, CW, DLR を用いた.

結果としては, CE のとき32/43, CW のとき37/43, DLR のとき35/43の割合で APGD が勝った. APGD が負けたモデルは gradient masking / obfuscation が起きていて, 非常に大きい step size が最適となっていた. つまりこれらは不適切な防御モデルである.

APGD はどんな損失関数を用いるときでも, PGDまたはモーメンタム付きのPGDより優れている.

DLR は CE より基本的に優れている. CW は DLR に対して最大で21%悪くなり, また最大でも5%程しか良くならなかったため, 壊滅的な結果を起こさないという意味で DLR の方が優れている.

AutoAttack: an ensemble of parameter-free attacks (チューニングの必要があるパラメータの無いアンサンブル攻撃)

速度の観点で, ランダムスタートの無い \text{APGD}_\text{CE} と9つの target class に攻撃を行う \text{APGD}_\text{CE}^\top , 9つの target class に攻撃を行う \text{FAB}^\top , 1回の実行で5,000クエリを必要とするSquare Attackを比較した. 各 white-box 攻撃 (前半の3つ) では100イテレーションで攻撃を行なった. 結果としては, \text{APGD}_\text{CE} が一番早いという結果となった (当たり前である).

AutoAttack の重要な性質として, アンサンブルの構成要素である4つの攻撃の多様性が挙げられる. APGD は  l_p-ball の中で adversarial example を作るが, FAB は誤分類を達成する最小の摂動を見つけようとする. FAB はロジットの勾配に依るものの, 基本的にgradient masking に強いとされる. Square Attack は score-based なブラックボックス手法であり, ランダムサーチを使うため, 勾配の情報を一切必要としない. Square Attack はクエリ効率と攻撃成功率が高く, 時には white-box 並の強さを誇る. FAB と Square Attack はパラメータ数が少なく, 多くのモデルとデータセットに汎化される. よって私達はこれのパラメータを固定した.

AutoAttackのパラメータは全てのモデルとデータセットで固定される.

Untargeted vs targeted attacks

ここでは  \text{APGD}_{\text{DLR}} と FAB で targeted attack を用いた理由について説明する. なお CE loss は untargeted のとき, randomized defense に対して良い結果を出すので, untargeted のまま使う.

FAB

Untargeted FAB は各 iteration でヤコビアン行列を計算するが, これはクラス数に線形で増加していく. よって巨大データセットでは使えない. これを防ぐために, 私達は targeted ver を使う. これは正解クラスと target class の間の識別境界を線形と考え, 問題を簡単にしたものである.

Experiments (Untargeted と targeted の比較)

ランダムスタートの異なる5種類の untargeted attack と 9 つの target class を持つ targeted attack を考える. 結果としては, CIFAR-10 と CIFAR-100, ImageNet では  \text{APGD}^\top_{DLR} がほとんど全ての場合で良い結果を残した. MNIST だけは Square Attack が一番良い結果となった. これらの結果から  \text{APGD}_{\text{DLR}} と FAB では targeted ver を用いる.

Experiments

Deterministic defenses (決定論的防御手法)

35個の防御手法から50個以上のモデルを用い, 実験を行った. ImageNet では1000枚抽出し, それを評価に用いる.

結果としては, 1つを除き, 全てのモデルで AutoAttack の強さが証明された. また各論文で報告されている値と, 13個以上のモデルで10%以上の乖離が, 8個以上のモデルで30%以上の乖離が見られた. 唯一負けたモデルは180回以上のリスタートと200回のイテレーションを行なっており, 我々より計算的に高価である.

4つの攻撃の中では  \text{APGD}^\top_\text{DLR} が最も良く, また壊滅的な結果となりにくかった. これらの結果は私達が新たに提案した DLR loss が gradient masking に強いことを示している.

Randomized defenses (ランダマイズ的防御手法)

Randomized defense は各施行毎に結果が異なるので, 表の値は平均, かっこの中は標準偏差である. 試行は全部で5回. ランダム性に対抗するために, 今回は untargeted ver で, 各イテレーションでは 20 回の勾配計算の後にその平均を用いている. ここでは FAB を用いなかった. なぜなら FAB は識別境界の上, または非常に近くの adversarial examples を計算するので, ランダム性の影響を受け, adversarial examples じゃ無くなってしまうからだ. と言いつつも表に載ってる様に見えるのだが, 流れ的には載ってる結果でダメと分かったから以後やらなかったという感じらしい. Square Attack は1イテレーションに対し, 20回の試行を行い, そこで平均的にロスが下がったら更新を行った. Square Attack はここで計算量が増えるので, 全体としては1000回のイテレーションを行なった. JEM-0 モデルに攻撃するときは, 5回のリスタートを行い, 各計算では勾配の平均を使用しない. これはランダマイズの影響が少ないからである. また JEM-0 モデルに対する adversarial example を JEM-1, 10 に使い回した.

結果としては, AutoAttack は常に良い結果を出し, また  \text{APGD}^\top_\text{CE} が最も良くなった.

Analysis of SOTA of adversarial defenses

最も頑健な手法達は adversarial training やその派生系だった. これらの中で一歩抜きん出ているものは追加のデータを用いる手法だった. また SOTA を主張しているいくつかの手法は全く頑健ではなかった. 興味深いことに MNIST で最も頑健だったモデルはその論文内で理論的に示された下限値93.32%と類似した結果となった (93.96%).

Appendix

結果だけ箇条書きで抽出

  • APGD と普通の PGD, つまりモーメンタムを使用していない PGD を比べても APGD の方が良かった.
  • 多くのデータセットとモデルに対して, APGD と 通常の PGD, モーメンタム付き PGD の比較を行ったが, APGD の方が良かった.
  •  l_\infty の実験では各 step で, 勾配に符号関数をかけた.  l_2 では, 正規化した. FAB のハイパラは Advertorch のを用いた. Square Attack は正方形のサイズ  p を0.8とした. これは元コードに同じである. また  p に関して piecewise constant scheduler を使用し, これは何のリスケーリングも行わなければ 10000 クエリの制限があることを示唆している. ただし, 我々は最大でも 5000 クエリしか行っていない (この辺の文章意味分かってないです. すみません.).
  • 大きいモデルだからといって, 性能が良いとは限らない.
  • 通常の PGD は  \epsilon / 4 が平均的に良いが, それでも分散は大きい.
  • 普通では上手くいかない step size  2\epsilon のような攻撃が上手くいっているときは, ランダムサーチが当たったようなものである. このようなモデルは gradient masking されている.
  • CE loss は元のクラスの確率を下げるという特性から, 誤分類さえ起こせば良いという訳ではない randomized defense に良い結果を出す.