Deep Learningのモデルは画像識別や自然言語処理の分野で高い精度を叩き出していますが、そのモデルを騙すようなデータ(Adversarial Example)を作成する方法に関しても幾つかの研究があります。有名なものだとGoodfellow et al. (2015)。元の画像に人間には分からない程度のノイズをのせることでDeep Learningのモデルを騙すことが示されています。
今回はこれに関連して自然言語、とりわけ質問回答のタスクにおいての論文Jia & Liang, (2017)を読んでみました。
問題
ある文章とそれに関する質問文があった時にその質問に答える文章を生成するようなモデルはDeep Learningを使って作ることができます。そのようなモデルを欺くようなデータ(Adversarial Example)を生成しました。問題は以下のようになっておりParagraphとQuestionを入力として与えられ、正解となる単語を答えることになります。
ParagraphとQuestionから正しいPredictionを得ることができれば成功です。ちなみに今回のデータセットでは必ず答えとなる単語はParagraphに含まれていることにします。
用いられた手法はとてもシンプルで自分でも簡単に試すことができるようなものにみえます。Adversarial Exampleの事例を見ると現実の世界でいかにエラーの少ないシステムを作ることが難しいかを改めて感じます。
画像分類と文章理解のAdversarial Example
詳細に入る前にちょっと画像分類とこの文章理解のタスクのAdversarial Exampleの考察が面白かったので紹介します。
画像に関するAdversarial ExampleはモデルのOversensitivityを利用して同じように見える画像でもほんの少しの差異でカテゴリが異なるようにすることができます。一方で今回の文章理解のタスクでは逆の現象が起きることがわかっています。このモデルでは汎化性能が高すぎるからかOverly Stable、つまり多少の差異には動じないようなモデルになってしまい、文章の意味を大きく変えたのに答えが変わらないということになるわけです。
ではどうやってAdversarial Exampleを作るかというと気をつける点がひとつあります。Adversarial Exampleを作るときに意味を変えるような変更をしてはいけません。そもそも文章の意味が変わったら真の答えも変わるはずだからです。真の答えとなるべきものは変えずに、モデルを騙すことができるようなデータを作成します。これをオリジナルの問題とcompatibleであるといいます。
提案手法ではある文を文章の後ろにつけるアプローチをとっています。これは意味を変えずに文章を機械的に変えていくのは難しいからだと思います。
Adversarial Exampleの生成
ではこのくっつける文をどうやって生成するかというと大きくわけて2つの手法が提案されています。
- AddSent : 質問文にある単語の幾つかと答えとなる単語を変えます。この変えられた質問から答えを導きだせるような文章を作りこれが追加される文になります。できた文章が文法的におかしい可能性もあるので最終的にクラウドソーシングで手直しをします。最終的にこれらの文章をモデルに食わせて最も回答率の悪い文章をAdversarial Exampleとします。
- AddAny : 文になっていなくてもいいので適当に単語をいくつかくっつけます。論文では10個の単語。
AddSentで面白いのは単語を変更するときにGloVeというword2vecのように単語の分散表現を作るアルゴリズムを使って似ているけど違う単語に変換していることです。
検証
検証にはこの問題を解くためのモデルBiDAFとMatch-LSTMというモデルを使っています。どちらもRNNの一種でそれぞれアンサンブル学習させたモデルでも試しています。どの手法でも正答率が下がっていることがわかります。面白いのはAddOneSentという項目です。これはAddSentから最後のプロセスであるモデルでの評価と選択をせずにランダムに選択をします。モデルに依存しないAdversarial Exampleを作ることがこの手法でできるのですが、これでも正答率をかなり下げることができていることがわかります。またAddAnyはもっとランダムなので、この文章理解のモデルを騙すことがそれほど難しいことではないことがわかります。
まとめ
文章理解のタスクでも比較的容易にAdversarial Exampleが作れることがわかる論文でした。
ただ文章理解のDeep LearningモデルがOverly stableという傾向を持つというのは興味深いのですが、論文ではモデルのこの特徴を考慮してAdversarial Exampleを作ったとあります。オリジナルな文章とcompatibleな文を付け足して誤答させるにはOversensitivityの方を考慮したという方が適切なんじゃないかと思うのですがどうなんでしょうか。