情報学部大学生のダラダラ日記

β日記

機械学習や日記っぽいものを書きます

自動運転に潜む怖さ(論文紹介①Adversarial examples in the physical world)

スポンサーリンク

はじめに

 先日、UberのAI車が死亡事故を起こすという痛ましいニュースが流れました。

news.yahoo.co.jp

 この事故は「歩行者は歩道にいる」というシステム設計から起こった事故ですが、例えばAI車が読み込む標識などに誰かが細工をして「とまれ」を別の標識に認識させるようにしてしまったらどうなるでしょうか?結果は目に見えていると思います。今回はそこに関連する論文を紹介します。 

今回読んだ論文について簡単に

  • タイトル:Adversarial examples in the physical world
  • 発行年:2017(ICLR)
  • 著者:Alexey Kurakin,Ian Goodfellow,Samy Bengio
  • URL:https://arxiv.org/abs/1607.02533

Adversarial Examplesについての先行研究

 まず、Adversarial Examplesについて一言で説明すると、「画像にノイズを加えてモデルに誤った出力をさせてしまう」ことです。

f:id:Parco1021:20191109212451p:plain引用元:Goodfellow et al. (2014)

  元々のモデルの出力は57.7%でパンダとなっています。そこに真ん中の図のようなノイズを加えることでモデルの出力が99.3%でgibbon(テナガザル)となります。このように人間にとって見た目に差がなくても機械学習システムの出力を誤らせてしまうようなモデルに対する脆弱性攻撃のことをAdversarial Examplesといいます。

 機械学習、特にニューラルネットワークにおけるモデルは、モデルへの入力時の微弱な変化に対してとても弱いことがわかっています。また、モデルを複数用意しAdversarial Examplesの実験を行った場合、あるモデルが誤った出力をする時はそのほかのモデルも誤った出力をする可能性が高いことが示されています。

新規性

 上で挙げた先行研究は攻撃が全てコンピュータ内で為されていることを前提にしています。しかし実際に私達が機械学習システムを用いる時は声をSiriなどに入力したり、顔認証でスマートフォンをアンロックしたりなど実世界であることが多いです。今回の論文は特にカメラを通じた画像の認証におけるAdversarial Examplesの生成および実験を行っています。

実験で用いられたAdversarial Examplesの生成方法

 まずは変数の定義を説明します。

  • {\displaystyle X }…入力画像。3次元ベクトルであり、ピクセルの値は[0,255]の整数値
  • {\displaystyle y_{true} }…入力{\displaystyle X }の正しいクラス
  • {\displaystyle J(X,y) }…損失関数
  • {\displaystyle Clip_{\{X,ε\}}X'(x,y,z)=min⁡\{255,X(x,y,z)+ε,max⁡\{0,X(x,y,z)-ε,X'(x,y,z)\}\}} ピクセルが[0,255]の範囲外にならないようにクリッピングする処理

変数の定義がされたので今回の論文で用いられた手法を3つ説明します。

Fast Method

 上でも示したGoodfellow et al. (2014)による手法です。

{\displaystyle X^{adv}=X+εsign(∇_X J(X,y_{true} )) }

ざっくり式の説明をすると{\displaystyle ∇_X J(X,y_{true} ) }によって勾配ベクトルを求め、符号を求めるsign関数に引数として渡します。それが正ならば正の方向、負ならば負の方向(=正解クラスの遠ざける方向)へノイズを加え、より正解から遠ざける方法です。εは変数です。

Basic Iterative Method

 Fast Method を繰り返し行う方法です。

{\displaystyle X^{adv}_{N+1}=Clip_{X,ε}\{X^{adv}_N+αsign(∇_X J(X^{adv}_N,y_{true} ))\}}

 繰り返し行うのでピクセルの値が範囲外とならないようにクリッピングを行っています。

Iterative Least-Likely Class Method

{\displaystyle y_{LL}=argmin\{p(y|X)\} }

{\displaystyle X^{adv}_{N+1}=Clip_{X,ε}\{X^{adv}_N-αsign(∇_X J(X^{adv}_N,y_{LL} ))\}}

 Basic Iterative Methodと符号と損失関数の引数が違いますね。yLLはモデルが出力するクラスのうち、最も確率の低いものを示します。なのでこの方法は最も"あり得ない"クラスに寄せています。

εの決定

 先ほどの数式におけるεを決定するための実験です。

f:id:Parco1021:20191109235316p:plain引用元:Alexey Kurakin et al.

εが8を超えたあたりから滑らかになりますね。また、誤認率はl.l方法が最も高いです。

f:id:Parco1021:20191110000319p:plain引用元:Alexey Kurakin et al.

 上の画像を観てもわかる通り、εが8でも人間の目からはノイズが加わっていることはわからないと思います。 

実験の方法

 実験の方法はまず、画像を印刷します(a)。そして印刷した画像を携帯電話のカメラで写真を撮り(b)、自動でトリミングしたもの(c)をモデルへ入力します。

f:id:Parco1021:20191110001702p:plain引用元:Alexey Kurakin et al.

 以上のように入力は完了しました。また、本実験では

①Average case

②Prefiltered case…あらかじめ画像をフィルタリングし、元のモデルの出力を0か1かになるようにする

の2ケースが用意されていますが、②は考えずに①のみ結果を示します。

f:id:Parco1021:20191110003217p:plain引用元:Alexey Kurakin et al.

 Photosがカメラで撮った画像であり、Source imagesが元の画像です。Adv. imagesがノイズ込みの画像。

 表を見ると、例えばfast method のε=16の時、カメラを介すると誤認率がtop-1だとおよそ2/3、top-5だと1/3となっておりかなり低くなっています。元の画像においてはl.l.方法がAdversarial Examplesの誤認率が高く、fast methodが最も低いです。しかし、カメラを通じると、fast methodが最も誤認率が高くなっています。つまりカメラを介する場合とそうでない場合とでAdversarial Examplesの作成方法の優劣が変わっています。

さいごに

 今回は、僕達の身近なケースであるカメラを通じたAdversarial Examplesの論文を読みました。機械学習もセキュリティも初心者なのですが先輩や先生に教えていただきながらなんとか読み切ることができました。内容としてはとても興味深いものであり読んでいて楽しかったです。

 カメラを介するケースとそうでないケースで攻撃側の優劣が異なるということは防御側もテストをコンピュータ上で行うのではなく、カメラを介さなければいけないということであり、これもいたちごっこになっているそうです。

参考文献

 

 おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村

 

PVアクセスランキング にほんブログ村

スポンサーリンク