AI・機械学習 コラム

AIをだます!? Adversarial Example(敵対的サンプル)とは|誤認識の例・対処法

7月 20, 2020

はじめに

インフォマティクスで機械学習系の業務を担当している大橋です。今回から不定期ではありますが、その時々で気になった論文や技術を紹介していこうと思います。

今回のテーマはニューラルネットワークの脆弱性についてです。脆弱性に関連するAdversarial Example(敵対的サンプル)とは何なのかを概観したいと思います。

Adversarial Example(敵対的サンプル)とは?

近年、ディープニューラルネットワーク(以下DNN)と呼ばれる技術が画像処理の分野で目覚ましい進歩を遂げています。特に画像の中に写っているものを識別するタスクにおいては、人間の識別精度を超えて久しいです。DNNはそれ以前の手法とくらべて判別精度は高いのですが、その構造が複雑なため正しく学習できているのかはよく分かっていません。

学習済みのDNNの性質を詳細に調べてみると、期待に反する性質を持つことが分かりました。直観的には入力画像に微小の摂動を加えたとしても、予測結果は変化しないと期待します。しかし、微小の摂動を加えただけで誤った予測結をしてしてしまい、またそれが普遍的な性質であることが明らかになりました。

このような、入力に微小な摂動を加え学習済みのDNNに誤った予測をさせるもののことをAdversarial Example(敵対的サンプル)と呼びます。

DNNを現実世界に応用しようとしたとき、Adversarial Exampleは脅威となります。例えば自動運転の場合、標識にちょっと汚れがついていただけで誤認識し事故を起こしてしまう可能性があるからです。

医療の現場の場合、些細な撮影条件の違いで重大な疾患を見落とす可能性もあります。また、このような脆弱性を悪用されることもあるかもしれません。そのため現在、活発に研究されている分野です。

Adversarial Exampleのレシピ

Adversarial ExampleはDNNに間違った予測をさせる摂動を加えたものです。つまり、①正解以外の特定のラベルに誤認識するような最小の摂動を加える、もしくは②正解ラベルの予測誤差を最大化させる摂動を探せばよいことになります。

①は数式で表現すると、\(f\)をDNN、\(J\)をDNNの損失関数、\(\theta\)をDNNのパラメータ、\(x\)を入力画像、\(r\)を入力画像に対する摂動、\(y^{\prime}\)は\(x\)の正解とは異なるラベルとすると\(f(x+r)=y^{\prime}\)を満たしつつ\(|r|\)を最小化させることになります。

[1]ではこの問題をbox-constrained L-BFGSという手法を用いており、以下の関数を\(r\)に関して最小化する問題として近似的に解いています。

$$c|r|+J(\theta,x+r,y^{\prime})$$

ここで\(c\)は正の定数です。この方法を用いると、わずかな摂動を加えるだけでDNNを100%誤認識させることが可能です(詳細は[1]参照)。

②は数式で表現すると以下の摂動\(r\)を与えることになります。表記は①と同様です。

$$r =\epsilon \nabla_{x} J(\theta,x,y)$$

ここで\(\epsilon\)は正の微小定数、\(y\)は\(x\)の正解ラベルです。\(\epsilon\)が正のため上式が損失を大きする方向になります。負の場合はDNNの訓練時同様、損失が小さくなる方向になります。

[2]では、"fast gradient fast method"として以下の摂動を加えています

$$r =\epsilon \mathrm{sgn} ( \nabla_{x} J(\theta,x,y) )$$

この方法でも大半の入力に対してDNNを誤認識させることが可能です(詳細は[2]参照)

具体例

これまで解説してきたAdversarial Exampleの具体例をいくつか紹介します。

以下は①の方法で生成された、AlexNetに対してのAdversarial Exampleです。左が正しく予測された画像、真中が加えた摂動(を10倍に増幅させたもの)、右が誤認識された画像です。右の画像はすべてダチョウと誤認識されています。

参考文献[1]より引用

また以下は②の方法で生成された、GoogLeNetに対するAdversarial Exampleです。左が正しく予測された画像、真中が加えた摂動、右が誤認識された画像です。この例はパンダがテナガザルと誤認識されています。

参考文献[2]より引用

誤認識された画像は、人間が見れば違いはほとんどありません。この程度の変化でDNNが誤認識するのは驚きですね。

対処法

このような微小な変化でDNNが誤認識してしまうのは、現実に応用する際には大きな課題となります。特に自動運転や医療の様に間違いが重大な損害をもたらすため深刻な問題です。

現在でもこのようなDNNを誤認識させる入力に対する完全な対処法は無いように思いますが、[1][2]ではオリジナルのデータにAdversarial Exampleを混ぜてトレーニングすることで、完全ではないですがAdversarial Exampleに対する堅牢性が向上することが報告されています。

さいごに

今回は、Adversarial Exampleを簡単に紹介しました。DNNは用意したデータの中では高精度をたたき出せたとしても、微小な摂動を加えただけで誤認識してしまう場合があるという内容の記事でした。

ここでは論文の要旨のみを紹介しましたので、詳細が気になった方は以下に挙げた参考文献を参照してみてください。

参考文献

[1]Szegedy, C., Zaremba, W., Sutskever, I., Bruna, J., Erhan, D., Goodfellow, I.J., & Fergus, R. (2014). Intriguing properties of neural networks. ,arXiv:1312.6199.

[2]Goodfellow, I.J., Shlens, J., & Szegedy, C. (2015). Explaining and Harnessing Adversarial Examples. ,arXiv:1412.6572.

記事の評価をお願いします!

-AI・機械学習, コラム
-, , , ,

© 2020 株式会社インフォマティクス