こんにちは、インフォマティクスで機械学習系の業務を担当している大橋です。
今回から不定期ではありますが、その時々で気になった論文や技術を紹介していこうと思います。
今回はニューラルネットワークの脆弱性がテーマです。脆弱性に関連する敵対的サンプル(Adversarial Example)とは何なのかを概観したいと思います。
目次
敵対的サンプル(Adversarial Example)とは
近年、ディープニューラルネットワーク(以下、DNN)と呼ばれる技術が画像処理の分野で目覚ましい進歩を遂げています。
特に画像の中に写っているものを識別するタスクにおいては、人間の識別精度を超えて久しいです。
DNNはそれ以前の手法と比べて判別精度は高いのですが、その構造が複雑なため正しく学習できているのかはよく分かっていません。
学習済みのDNNの性質を詳細に調べてみると、期待に反する性質を持つことが分かりました。直観的には入力画像に微小の摂動を加えたとしても、予測結果は変化しないと期待します。
しかし、微小の摂動(せつどう:変化、攪乱)を加えただけで誤った予測をしてしまい、またそれが普遍的な性質であることが明らかになりました。
このような、入力に微小な摂動を加えて、学習済みのDNNに誤った予測をさせるもののことを敵対的サンプル(Adversarial Example)と呼びます。
DNNを現実世界に応用しようとした時、敵対的サンプルは脅威となります。例えば自動運転の場合、標識にちょっと汚れがついていただけで誤認識し事故を起こす可能性があるからです。
医療の現場の場合、些細な撮影条件の違いで重大な疾患を見落とす可能性もあります。また、このような脆弱性をついて攻撃されるおそれもあります。そのため現在、活発に研究されている分野です。
敵対的サンプル(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 sign method"として以下の摂動を加えています。
$$r =\epsilon \mathrm{sgn} ( \nabla_{x} J(\theta,x,y) )$$
この方法でも大半の入力に対してDNNを誤認識させることが可能です。(詳細は[2]参照)
具体例
これまで解説してきた敵対的サンプルの具体例をいくつか紹介します。
以下は①の方法で生成された、AlexNetに対しての敵対的サンプルです。左が正しく予測された画像、真中が加えた摂動(を10倍に増幅させたもの)、右が誤認識された画像です。
右の画像はすべてダチョウと誤認識されています。
参考文献[1]より引用
また以下は②の方法で生成された、GoogLeNetに対する敵対的サンプルです。左が正しく予測された画像、真中が加えた摂動、右が誤認識された画像です。
この例ではパンダがテナガザルと誤認識されています。
参考文献[2]より引用
誤認識された画像は、人間が見れば違いはほとんどありません。この程度の変化でDNNが誤認識するのは驚きですね。
対処法
このような微小な変化でDNNが誤認識してしまうのは、現実に応用する際には大きな課題となります。特に自動運転や医療の様に間違いが重大な損害をもたらすため深刻な問題です。
現在でもこのようなDNNを誤認識させる入力に対する完全な対処法は無いように思いますが、[1][2]ではオリジナルのデータに敵対的サンプルを混ぜてトレーニングすることで、完全ではないですが敵対的サンプルに対する堅牢性が向上することが報告されています。
おわりに
今回は敵対的サンプル(Adversarial Example)について簡単に紹介しました。
DNNは用意したデータの中では高精度をたたき出せたとしても、微小な摂動を加えただけで誤認識してしまう場合があるという内容の記事でした。
ここでは論文の要旨のみを紹介しましたので、詳細が気になった方は以下に挙げた参考文献を参照してみてください。
物体検出などAI機械学習を活用したシステムの構築に関するご相談(無料)を承っています
参考文献
[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.