Skip to main content

PGD and Adversarial Training

Projected Gradient Descent (PGD) は、adversarial robustness の標準的な white-box attack です。Madry らの研究以降、L∞L_\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)

L∞L_\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 を使います。

δ0∼Uniform(−ϵ,ϵ)\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⁡θ1n∑i=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 specificityL∞L_\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 の有無を確認する必要があります。

関連ページ​

主なソース​