Skip to main content

PGD and Adversarial Training

Projected Gradient Descent (PGD) は、adversarial robustness の標準的な white-box attack です。Madry らの研究以降、LL_\infty adversarial training では、内側の maximization を PGD で近似する min-max optimization が基本形になりました。

Robust optimization

自作概念図。Adversarial training は、内側で adversarial example を作り、外側でその adversarial example に対する loss を下げます。

PGD attack

PGD は、perturbation set Δ\Delta の中で loss を最大化するために、gradient ascent と projection を繰り返します。

δk+1=ΠΔ(δk+αsign(x(fθ(x+δk),y)))\delta^{k+1}=\Pi_{\Delta}\left(\delta^k + \alpha\,\mathrm{sign}(\nabla_x \ell(f_\theta(x+\delta^k),y))\right)

LL_\infty 制約では、projection は各 pixel の perturbation を [ϵ,ϵ][-\epsilon,\epsilon] に clip します。

ΠΔ(δ)=clip(δ,ϵ,ϵ)\Pi_{\Delta}(\delta)=\mathrm{clip}(\delta, -\epsilon, \epsilon)

さらに、画像範囲 x+δ[0,1]dx+\delta \in [0,1]^d も満たすように clip します。

Random restarts

PGD は非凸 optimization なので、初期値に依存します。そのため、random restarts を使います。

δ0Uniform(ϵ,ϵ)\delta^0 \sim \mathrm{Uniform}(-\epsilon,\epsilon)

複数の初期値から PGD を実行し、最も loss が高い adversarial example を採用します。Robustness 評価では、iteration 数と restart 数を明示する必要があります。

PGD as universal first-order adversary

Madry らは、PGD を「first-order adversary」に対する強い攻撃として位置づけました。つまり、gradient 情報を使う攻撃者に対して、PGD で見つかる worst-case example に耐えるように訓練することが、実用的な robust optimization の近似になります。

Adversarial training

Adversarial training は、clean example ではなく adversarial example で model を訓練します。

minθ1ni=1nmaxδiΔ(fθ(xi+δi),yi)\min_\theta \frac{1}{n}\sum_{i=1}^n \max_{\delta_i \in \Delta}\ell(f_\theta(x_i+\delta_i),y_i)

実装では、mini-batch ごとに PGD で δi\delta_i を作り、その adversarial input で gradient descent します。

TRADES

TRADES は、natural accuracy と robust accuracy の trade-off を明示的に扱う training objective です。Clean prediction と adversarial prediction の KL divergence を正則化として使います。

minθE[(fθ(x),y)+βmaxδΔDKL(fθ(x)fθ(x+δ))]\min_\theta \mathbb{E}\left[ \ell(f_\theta(x),y) + \beta \max_{\delta \in \Delta} D_{\mathrm{KL}}(f_\theta(x)\,\|\,f_\theta(x+\delta)) \right]

β\beta は robustness と clean accuracy の trade-off を制御します。

Robust overfitting

Adversarial training では、training robust accuracy は上がるのに、test robust accuracy が途中から下がる robust overfitting が起こることがあります。Early stopping、data augmentation、weight averaging、model capacity の調整が重要です。

実務上の注意

注意点内容
Attack strength弱い PGD で training / evaluation すると robustness を過大評価します。
Clean accuracy trade-offRobust training は clean accuracy を下げる場合があります。
Computational costPGD step 数の分だけ training cost が増えます。
Norm specificityLL_\infty で robust でも L2L_2 や spatial perturbation に強いとは限りません。
Adaptive evaluation防御を含めた attack で評価する必要があります。

数式で見る PGD と adversarial training

PGD attack は、loss を増やす方向へ perturbation を反復更新し、許された集合に projection します。

δk+1=Πδϵ(δk+αsign(x(fθ(x+δk),y)))\delta^{k+1}=\Pi_{\|\delta\|_\infty\le\epsilon}\left(\delta^k+\alpha\,\mathrm{sign}(\nabla_x\ell(f_\theta(x+ \delta^k),y))\right)

ここで、Π\Pi は feasible set への projection、α\alpha は step size です。この式の気持ちは、「画像を少しずつ、model が最も間違えやすくなる方向へ動かし、許容範囲から出たら戻す」というものです。

Adversarial training は、PGD で作った adversarial example に対して学習します。

minθE(x,y)[maxδϵ(fθ(x+δ),y)]\min_\theta\mathbb{E}_{(x,y)}\left[\max_{\|\delta\|\le\epsilon}\ell(f_\theta(x+\delta),y)\right]

この式は robust risk の直接的な最適化です。Clean accuracy と robust accuracy の trade-off、attack strength、label leaking、gradient masking の有無を確認する必要があります。

関連ページ

主なソース