yoheikikuta / paper-reading

Notes about papers I read (in Japanese)
156 stars 4 forks source link

[1905.02175] Adversarial Examples Are Not Bugs, They Are Features [paper-reading] #35

Open yoheikikuta opened 5 years ago

yoheikikuta commented 5 years ago

論文リンク

https://arxiv.org/abs/1905.02175

公開日(yyyy/mm/dd)

2019/05/06

概要

adversarial example にはデータが内包する non-robust feature によって引き起こされるものだということを示した論文。 元データから robust feature のみ、non-robust feature のみを含むようなデータセットを構築。 前者はそれを使って普通に学習するだけで adversarial example に(ある程度)強いモデルを作ることができる。 後者は人間にとっては知覚的ではない feature でも(adversarial でない)データに対しては汎化性能を持つモデルを作ることができ、それは(ある程度)特定のモデルに依存しない普遍的なものである。つまりはモデルの bug ではなくてデータに内在する feature であると考えられる。 全ての adversarial example に当てはまるわけではないし、結果も驚くほど顕著というものでもないが、解釈や今後の発展性を考えるとなかなかに興味深い。

yoheikikuta commented 5 years ago

Adversarial example 絡みで話題になっていそうなので読んでみることにした。 Adversarial example を起点にデータの性質とかモデルの性質とかにアプローチしていければ面白そうだと思っていたが、そういう匂いを感じさせる論文タイトルだったので。

yoheikikuta commented 5 years ago

DL モデルは人間にとって知覚的じゃない feature に対しても predictive になっている。

これは adversarial example においても顕著な内容で、人間の目で見ても違いはなくてもモデルの出力としては大きく異なるということが有り得るので、adversarial example はそれを利用して入力に摂動を加えて人間の期待とは異なるラベルを出力させるようにできる。

知覚的じゃない feature に対しても predictive というのは考えてみれば自然で、モデルは入力が与えられたらラベルを予測するために使える情報は全て使うが、人間がある種抽象的に知覚してラベル付けしている。

例えば犬の画像を判別するときに、人間は犬という生物の姿形の特徴を知覚してそれと画像に写っているものがマッチするかで判断する。仮に犬の画像になんか知らないけど特殊なノイズが加えられていたとしてもそれは人間が考える犬の定義とは無関係なので気にしない(し、よほど明確なものでないとそもそもできない)。しかし、モデルが判別する場合にはその特殊なノイズは犬以外の画像と区別するのに使えるので、データにそういうものが含まれていればそれも使って判別するようになるのである。

この考えを推し進めて、この論文では、adversarial example はこういった知覚的じゃない feature に対するモデルの sensitivity であり、その意味でデータの特徴から誘発されるものであるという主張をしている。 もう少し詳しく言うと、データからそういった feature を取り除くことでき、そのデータで学習したモデルは adversarial example に強いものにすることができる、と主張している。

推し進めて、の部分は non-trivial なので本当にそういうアイデアが通用するのかを調べていく。 ちなみにこの論文では画像データに対してのみ実験をしている(定式化自体は画像に限らないものではあるが、adversarial example ではよくある設定のように入力には摂動を加えることができるという前提)。

yoheikikuta commented 5 years ago

最初の導入だけ読んで気になるところは、やはりこのアイデアがそもそも有望そうかどうか、という点だろう。

例えば、典型的な adversarial example では入力画像に摂動を加えていって異なるラベルを出力させるようにする。これはモデルの振る舞いを考えれば確かにそうできるし、そうやって作った feature は知覚的ではない feature になっている。

一方で、普通に準備した画像データにそもそもそういう feature が存在して、何らかの方法でそれを取り除くことができる、というのはかなり non-trivial に聞こえる。 しかし、universal adversarial example などを思い出してみると、いくつかの DL モデルに普遍的に効く adversarial example があることから、モデル specific ではなくてデータに共通するような特徴として知覚的じゃない feature が内包されていると考えるのも無くはない気がする。

ということで、なかなか面白い着眼点なのかもしれないと思うので具体的に読んでいってみる。

yoheikikuta commented 5 years ago

まずはセットアップ。 multiclass には自然に拡張できるので議論はシンプルになるように binary classification の場合で進めていく。

記号はちゃんと書くのはサボるが以下のようになる。

feature という言葉遣いに注意が必要。 普通はモデルのどこかの層の出力を指すものだが、このモデルではそれを含むより広い対象になっている。あらゆる可能な関数が属する関数空間を対象にしていて、それゆえにデータから作り出せる可能な量を全てカバーすることができている。そしてその意味でデータから切り出せる可能な feature ということになり、モデルではなくてデータの性質と捉えることができる。 実際にはそのような関数空間を網羅的に調べることはできないので、DL モデルで実現できるものだけに限定して議論していくことになる。

classifier は一個モデルを決めると複数の f が得られる(例えばチャンネル毎の出力)ので、それを使って以下のように書く。b は bias で w が weight である。

yoheikikuta commented 5 years ago

このセットアップの下で、useful, robust という概念を定量的に定義する。

まずは ρ-useful で、これは feature がどれくらいラベルに align しているかを測るもの。 これは単純でラベルに correlate (negative にでも o.k.) していれば、それはラベル予測に有用な feature であるということを言っているに過ぎない。明らかにラベルに相関せずに予測に使えない feature というのも存在する。

次いで γ-robustly useful feature で、これは摂動を加えてもなお正しいラベルと align しているかを測るもの。 adversarial example は摂動を加えて誤認識させるものなので、これはそのような摂動を加えても変わらず正しいラベルと align しているという意味で robust と言っている。

この二つを導入すると useful だけど robust ではない feature というのも定量化できる。 つまりそのままだと正しいラベルに相関しているが、摂動を加えるとそうではなくなるような feature である。 そしてこのような feature をデータから分離できるのかというのが主な議論のポイントになる。

モデルを学習するときは以下のシンプルな loss function を minimize する。

yoheikikuta commented 5 years ago

ここで一つ注意が必要。 この論文は、robust な feature を得るような学習を提供するものではなく、データに内在する (non)robust を分離できるかと分離したらどうなるかを調べるものである。

上で述べた単純な loss を使って学習する限り、 adversarial example を作ればそれは誤認識を引き起こすものになり、robust なモデルとはなり得ない。なので現状では robust な feature を抜き出す方法が存在しない。

そこで robust なモデルを作るための学習方法が既に存在するという事実を利用する。 これがあれば少なくともそのモデルによって実現される robustly useful な feature は利用することができる。 適当な初期値の画像から始めて、feature sp. でその robustly useful な feature に近づけるという条件で画像を変更していけば、robustly useful な feature のみを含むような画像が作れるだろうというロジックだ(具体的なアルゴリズムは後で見る)。

robust なモデルの作り方は以下。これはシンプルなので特に言うことはない。

テクニカルに難しい話はないのだが、この論文はこの辺の議論がちょっと分かりづらい。データの性質という話をしたいはずだが結局特定のモデルに依存してるわけだし。 この辺は具体的な実験で何をやっているかを見てから整理した方がいいので、ちょっとそこまで置いておいて、とりあえずここではこうやって robust feature を判断しているということである。

yoheikikuta commented 5 years ago

それではどうやって robust feature のみを含むデータと non-robust feature のみを含むデータを作るか。 ここは論文の記述を読んでスッと理解するのはまあまあ難しいが、実際のデータの作り方を見るのが良いと思う。

robust feature のみを含むデータの作り方は以下。

$ C_R $ が上述の robust なモデルの作り方で作ったモデルである。 ある $ (x, y)$ に対して、適当な $ x' $ をサンプルしてそれを初期値として feature sp. において robust feature と近づくように画像を変更していく。適当な $ x' $ から始めるのはある程度意味のある造形からスタートするという意味と思うが、これは random noise から始めてもうまくいくことが示されている。

こうやって作ったデータは robust feature のみを含むものと期待される。 adversarial example が non-robust な feature によるものだという仮説が正しいのであれば、このデータを使う限り誤認識が生じないモデルが構築できるはずである(データに含まれる robust feature のみに注目するモデルができるはずなので)。

これと同じことを robust なモデルではなく普通に学習したモデルでやって作ったデータが $ D_{NR} $ である。 この場合、適当にサンプルした画像のラベル(つまり $ x' $ のラベル)と近いものになっていて、人間が見て $ y $ と認識できるような変化まではもたらさないということになる(下の例を参照)。

どんなデータが出来上がるか例を見ておく。 ベースとなる画像を選んで作成する場合は以下。$ DR $ は robust feature のみのデータで、適当なデータから始めても正しいカテゴリだと人間が判断できなくもないものになっている。一方で $ D{NR} $ は異なるラベルのものを誤認識させるものなので典型的な adversarial example みたいになっている。

次に noise から作成する場合は以下。 $ DR $ に関しては正しくカテゴリが判別できるようなデータが作れているところが興味深い。一方で $ D{NR} $ はただのノイズって感じで意味のある画像ではない。

yoheikikuta commented 5 years ago

一方で non-robust feature のみを含むデータの作り方は以下。 notation が酷すぎるが、以下のアルゴリズムにおける $ D{NR} $ はすぐ上に出てきた $ D{NR} $ とは別物である。ここではあくまで non-robust feature のみのデータを作りたいということになっている。

前提としては、ラベルが正しくなければ入力データには robust feature は含まれていないはず、というものだ。なのでラベル t はランダム、もしくは permutate してつける(これらは人間的には間違ったラベルがつけられていることになる)。 あとは普通に学習したモデル C において、ある (x, y) に対して (x+δ, t) となるように摂動を加えていく。 ラベルをランダムにして作ったものを $ D{\text{rand}} $、permutate して作ったものを $ D{\text{det}} $ とする。

こうやって作ったデータは non-robust feature のみを含むものと期待される。 ただし、useful ではあるのでこれを使って学習したモデルも adversarial example でなければ普通に予測できるはずである。一方で robust ではないので adversarial example には騙されるはずである。

どんな画像が出来上がるかの例は以下。 det の場合付け替えられるラベルは決まっているので、例えば元が deer なら必ず cat に変更される。


ここちょっと注意が必要なので追記。 ラベルを付け替えるのは training だけで、test に関しては元のラベルを使う。 そうすると、例えば、本当は犬の画像だけど猫とラベル付けされた training のデータがあり、それに摂動を加えてモデルに猫と思わせる。これは non-robust な feature で予測をすることになっていて、もし元データにもそのような feature が内在しているのであれば、test データの猫画像にもそういう feature がいくらか含まれていて、それゆえに non-robust feature での予測が汎化できる、と期待するわけである。

yoheikikuta commented 5 years ago

主要な実験結果を見る。 データは CIFAR-10 を使用。また、$ DR $ と $ D{NR} $ はベースとなる画像がある状態から作成したデータを使用。

まずは robust feature のみ、non-robust feature のみで学習したモデルの振る舞いに関して。 x 軸がどのデータセットでモデルを学習したかで、青棒が何も手を加えない普通のテストデータに対する正答率で、赤棒が adversarial example として作ったテストデータに対する正答率。

一番左が元データを使ってそのまま学習したもので、当然 adversarial example に弱い。 左から二番目が robust feature を構築するための既知の adversarial training で学習したモデルで、これは確かに adversarial example に強い。 左から三番目が $ DR $ を作って普通の loss で学習したもので、これが期待通り adversarial example に強いものになっている。これで完璧というほどの性能には達してないが(これは汎化ギャップと分布のシフトだろうと言ってる)、確かに robust feature だけを使えば adversarial example に騙されないモデルが作れるという主張をサポートする結果になっている。 一番右が $ D{NR} $ を作って普通の loss で学習したもので、これも期待通り元データには有効だけど adversarial example には弱いので、useful だけど robust でないというものになっている。adversarial example は non-robust feature によるものなので、摂動によって学習時に獲得した feature が変更を受けてしまって予測ができなくなっている。

yoheikikuta commented 5 years ago

次いで、ResNet-50 をベースにして non-robust feature のみのデータを作ったときに、色々なモデルでそのデータで学習した時に同じような結果になる(つまり確かに non-robust feature とかいうのが普遍的にありそう)というもの。

まず $ D{\text{rand}} $ とか $ D{\text{det}} $ で学習してもある程度は useful であることを示したのが以下。 non-robust feature のみで学習しても元々の D の test set に対して汎化性能を持ち、それゆえに useful である(ただし adversarial example には弱いはずなので robust ではない)。

ここで、rand の方が性能が良い理由を考えてみる。 rand の方はラベル付けに法則性がないので、モデルはより純粋に non-robust feature だけを相手にして予測をしてくれるはずである。 一方で、det の場合はラベル付けに法則性がある(例えば犬の画像は必ず猫とラベル付けされる)。つまり何かしらの robust な特徴(例えば共通するものとして丸い顔に耳が二つ)は残っていて、それもいくらか使って test データも予測するようになるので少し confused してしまって間違える可能性が上がる。 こんな感じだろうか。

以下が transfer の結果で、ResNet-50 をベースに構築した non-robust feature のみのデータで色々なモデルが学習できていることを示している。これによって non-robust な feature は普遍的に useful (ただし robust ではないことに注意) であるということを示している。

モデルに関係なく普遍的だと強く主張するにはやや弱い結果だが、ある程度の transfarability は確かに存在するように見える。ということで、non-robust feature というのは完全にモデル依存のものではなくデータに内在するある程度普遍的なものであるという主張だ。

ちなみに引いている赤点線は何の意味もない。 ResNet-50 の結果は transferability rate がなぜ 100% ではないのか?というのは謎。

yoheikikuta commented 5 years ago

non-robust feature にこのような性質があるのは確かに non-trivial なのでそちらを中心に書いたのだと思うが、同じように robust feature も一個 $ D_R $ を作ったら色々なモデルでそれが有効であることも示すべきだろう。 論文では以下のようにさらっと書いてあるのみ。

We also verify that this procedure is not simply a matter of encoding the weights of the original model —we get the same results for both DbR and DbNR if we train with different architectures than that of the original models

yoheikikuta commented 5 years ago

これらが主たる結果で、さらにデータがガウス分布に従う場合に理論的な解析をしている。 これはそれなりに計算を追ったのだが、追いましたというだけなので割愛しておく。 問題設定をだいぶ簡単化したおかげで、adversarial attack に対する脆弱性がデータのマハラノビス距離と l_2 perturbation の関係で定式化できたり、それに伴って gradient に対する性質が言えたりする。 これらは現段階では非常に示唆深いというところまではいってないように感じるが、今後の解析の発展性はあるかもしれない。

yoheikikuta commented 5 years ago

ということで読み終わった。 テクニカルに難しい話はないが、ロジックはややこしい部分もあったりするのでそこそこ時間を費やした。

この論文はコミュニティでも注目され discussion にも発展した。 discussion には例えばこの論文での結果は任意の adversarial example に対して言えるものではない、という話がありこの論文は revise するときにそれらを引用して主張を弱めたりもしている。

結構興味がある話なので、今後の更なる発展に期待しよう。