覚え書きブログ

Adversarial examples

Adversarial examplesという、入力画像に意図的に妨害するノイズを入れることにより、DNNの認識を失敗させる方法が研究されている。

  • Explaining and Harnessing Adversarial Examples, Goodfellow et al., arxiv2015

入力画像xに、DNNのロス関数J(\theta,x,y)xに関する勾配をsign関数をとったものを足すだけで以下のように、パンダをテナガザル(gibbon)と高い信頼度で間違えるようになる。ちなみに、以下のように画像の見た目はほとんど変わっていない。ここで、\thetaはDNNのパラメータ、yは分類ラベルである。
f:id:hirotaka_hachiya:20170407092552p:plain

具体的には、以下のノイズを入力画像に付加する。この方法はFGSM(Fast Gradient Sign Method)と呼ばれている。
f:id:hirotaka_hachiya:20170407093210p:plain

なぜ、こんな単純なノイズ付加で失敗するのか?DNNの各レイヤーにて線形和を計算してからactivationしているからだと説明されている。単純な1階層の線形モデルを考えた場合、入力画像にノイズを加えることは、以下のように、w^\top \etaを足していることに対応する。
f:id:hirotaka_hachiya:20170407095950p:plain
ここで、\eta=sign(w)となるので、ノイズ項は、wの絶対値和に対応し、max normの制約(最大値が\epsilon以下)のもとでは最大の値をとることができる。例えば、w=(0.1,-0.2,-0.5)^\topだとすると、\eta=(1,-1,-1)^\topとなり、w^\top\eta=0.1+0.2+0.5=0.8となる。特に、wの次元が高い場合、w^\top\etaは次元数に比例した大きな値をとり、インパクトのあるノイズを加えることが出来る。つまり、線形和でノイズを積算してしまっている。