Adversarial Examplesに興味がある

adversarial exampleを勉強したくて読んだ。
メモ。

  • 本文ではDNNの直観的でない以下の2つの性質について触れている
    • 個別ユニットを観察するのも、複数ユニットの組合せを観察するのも違いはない
    • 入力と出力のマッピングが非連続なので、
      ちょっと入力に摂動を加えると誤識別を起こせる

性質1. 個々のユニットの値に特に意味はない。層全体で意味を持っている

  • 従来、CVでは特徴量抽出に対して焦点を当ててきた.
    この考え方の延長で、ある座標空間における各座標に対して意味を付与でき、
    これを調べると入力画像との対応が取れるものと扱ってきた。
  • あるユニットを活性化させた入力画像群(natural basis)を抽出(下図)
    するとユニットごとに意味の割当があるように感じる

f:id:yusuke_ujitoko:20170928233642p:plain

  • でも適当にとった基底(random basis)を活性化させた入力画像群をみても意味がある気がする(下図)

f:id:yusuke_ujitoko:20170928233715p:plain

→結局NNは座標系をdisentangleしていない

性質2. adversarial exampleを作れる

  • 汎化能力の高いニューラルネットワークは、摂動にはロバストであってほしい。
    つまり,訓練データ内で距離が非常に近いもの同士は同クラスに分類されてほしい.
  • でも非線形関数が積み重なると、入力空間に対して重要性が低いスポットが発生し,
    滑らかさは保たれない
  • 実際 adversarial examplesを作れば誤りを発生できる。
    (以下はalexnetで作成) f:id:yusuke_ujitoko:20170929000252p:plain

    • 層の数が変わっても、活性化関数が変わっても、訓練データの異なるサブセットを使っても、同じ摂動を加えると誤る

Adversarial training

「このadversarial exampleを学習に活用すれば,より汎用的でロバストにできるかも」
という発想で実験が行われている.

MNISTの識別では,もとのデータセットにadversarial exampleを少し加えたものを学習に用いることで,少しテストエラーを低くできた.
どうやら前方の層を参照して作成したadversarial examplesよりも後方の層によるadversarial examplesの方が効果的のよう.