classic style

論文読んで見た系: 他-> http://gabdro.hatenablog.com/

"Distillation as a Defense to Adversarial Perturbations against Deep Neural Networks"について読みます

はじめに

機械学習と情報セキュリティ2016 - ももいろテクノロジー の記事を読んで
Distillation as a Defense to Adversarial Perturbations against Deep Neural Networks』(https://arxiv.org/abs/1511.04508)という論文を知りました.
蒸留を取り入れたアイデアと言われ,確かに上手くいきそうとタイトルからもわかる.

ということで本論文について紹介したいと思う.解釈が間違っているかもしれないがその場合指摘していただければ幸いです. よろしくおねがいします. 

※記事における図の一部は本論文を引用しました. 

 

本論の概要

Deep Neural Networkは意図的に作られた摂動(Adversarial Perturbation)を用いて作られた画像(→Adversarial Sample/Adversarial Examples)に対して脆弱性がある.

この脆弱性を防ぐために「defensive distillation」という防御機構(→蒸留モデル)を導入した.

導入した結果,元のDNNの精度を維持しながらMNISTから作成しながら,MNISTモデルでは蒸留モデルの有無でAdversarial Sampleの生成率が95%から0.5%未満になった.CIFAR10では87.8%から5.11%になった.

詳細について

Adversarial Sampleの作成方法

代表的なAdversarial Sampleの作成にはGoodfellowら[1]とPapernotら[2]がある.
[1]の手法は入力画像の全ての次元を計算した勾配の符号の報告に微小ずつ摂動させる手法.

[2]の手法は入力画像に対して限られた次元のみを選択し摂動を加える手法.

本実験では[2]の手法を用いて実験を行なった. [2]の手法について簡単に説明する.

 

f:id:planetaria:20170131195841p:plain

まぁこんな感じだろう..? 騙せたかどうかでNoだった場合にはOriginalを更新するかもしれない..
(作成した画像の例 やっぱり目視だとわからないですね)

original(cat) adversarial sample(bird)

f:id:planetaria:20170131194727p:plain

 

f:id:planetaria:20170131194736p:plain

 


ちなみに詳しくはPapernotら[2]の論文を読むべき(私はまだ読めてない💦) 

Defense Distillationの仕組み

defensive distillationの流れは下記図の通り.

f:id:planetaria:20170110205943p:plain

Hintonらの提案した蒸留と異なり,本モデルでは初期ネットワークと蒸留ネットワークで同じネットワークを用いる. また「Defensive Distillation」では温度Tも初期学習と蒸留時の学習で同じ温度を用いる. 

実験と評価 

Adversarial Sampleの生成率の実験

@手法
MNIST及びCIFAR10のデータから無作為に100個のサンプルを用いて,そのサンプルから各Target Class(騙したいラベル)に向けたAdversarial Sample全900枚の成功率を測定した. (おそらく失敗は生成時に顕著性マップ(saliency maps)に112個以上ビットが立ったら?)


@結果

 データセット 初期モデル 蒸留モデル
MNIST 95% 0.45%
CIFAR10 87.89% 5.11%
温度TとAdversarial Sampleの生成の関係

下記図は上記生成実験の蒸留時の温度TによるAdversarial Sampleの作成の成功率を示している.

f:id:planetaria:20170130224343p:plain

この結果からMNISTではT=40,CIFAR-10ではT=100で蒸留することにより生成率を極端に下げることができた. 

Defensive Distillation はよりロバスト性のある DNNになったか

テストデータに対して初期モデルと蒸留モデルでAdversarial Sampleを作る際に変動した画素数(特徴数)を比較する

f:id:planetaria:20170130154925p:plain

比較した結果. 初期モデルは蒸留モデルと比較すると8倍ほど異なった.  
正確には下記式を用いた

f:id:planetaria:20170131150105p:plain

この式を用いて蒸留前と蒸留後の{P_{adv}}を求め比較した.  

 

f:id:planetaria:20170131143544p:plain

 

図は青が初期モデル,赤が蒸留モデルのイメージ. 
おそらくだが,Adversarial Sampleの生成率を求めた時と同様に112までの摂動を加えてもAdversarial Sampleにならなかった場合は含まないと思われる.

感想

イデア自体はとても単純であった.
勾配が緩やかになるから雑な図だがこんな感じになる?から生成しにくく防ぎやすい

f:id:planetaria:20170130151646p:plain

滑らかになれば生成しにくくなる感じ.
また元画像からの距離が大きくなるほど,生成されるAdversarial Sampleは人間の目から見て違和感のある画像になる. 


実装自体は単純なので実際にやってみればよかったのですがGPUが現在,満席だったので断念..(´・ω・`)  卒業論文が一区切りしたらやってみようと思う. 

Goodfellowら[1]の手法で作成したAdversarial Sampleに対しても蒸留モデルがどの程度,有効であるかやってみたい(もう既に誰かやって論文出てそうですが..サーベイ不足)

 

参考文献

  1. [1412.6572] Explaining and Harnessing Adversarial Examples

  2. [1511.07528] The Limitations of Deep Learning in Adversarial Settings

 

一応,[2]の手法でASを作成したコード.. モデルとかは略

gist.github.com