こんな夢を見た

修士学生による自然言語処理研究の記録。主にDeep LearningやEmbedding関連論文の軽い自分用まとめとして。内容に誤りが含まれている場合があります。お気軽にご指摘ください。

Towards AI-Complete Question Answering: A Set of Prerequisite Toy Tasks

Towards AI-Complete Question Answering: A Set of Prerequisite Toy Tasks
Jason Weston, Antoine Bordes, Sumit Chopra, Tomas Mikolov, 2015, arXiv
bAbI project

AIの言語理解力を試すQAタスクについて細分類して20種のデータセットを作成/公開。そして、Memory Networksの新たな拡張とその実力を実証。
似たようなデータセットは幾つかあるけど、求められる能力ごとに独立したようなデータセットにはなっていなかった。これならちゃんとそれぞれが純粋な能力の実験&分析をしやすいよ。と言っている。それぞれ何文かのstatementsで構成されたストーリーがあって、その後にQuestionsがあるという形。各QuestionにはAnswerとそれを導く手がかりとなるstatementsがアノテートされている。データはBordesら(2010)のsimulated worldから簡素な文法と語彙で自動生成っぽい。どんどんバージョンアップさせていくと言っている。種類も増えるとか(難しいdeduction、inductionとか)。
Winograd Schema Challengeなんかはデータセット外の背景知識が必要なので理解力を試すという点では不適とも言っていて、反面、このデータセットではデータセット内で必要な情報が完結するんです、というようなことを主張している。

以下、20のタスク。

  1. Basic Factoid QA with Single Supporting Fact
  2. Factoid QA with Two Supporting Facts
  3. Factoid QA with Three Supporting Facts
  4. Two Argument Relations: Subject vs. Object
  5. Three Argument Relations
  6. Yes/No questions
  7. Counting @
  8. Lists / Sets @
  9. Simple Negation
  10. Indefinite Knowledge
  11. Basic Coreference
  12. Conjunction
  13. Compound Coreference
  14. Time Manipulation
  15. Basic Deduction
  16. Basic Induction
  17. Positional Reasoning @
  18. Reasoning about Size
  19. Path Finding @
  20. Reasoning about Agent’s Motivations

独立とは言ったもののある程度の難易度の推移性はあって、例えば1<2<3、4<5、11<13はほぼ当然だし、後半の方はYes/Noの問いであれば全て6よりも難しいと言える。
一覧にして見てみれば、なるほど確かにその能力は(知能というからには)欲しいという感じである。これらは個別であれば結構すぐできるのではと思っていると、そのとおりで、実験では大半のタスクが高精度だった。
(training examplesが1000以下で)正解率が95%以下だったタスクは上のリストで@がついている4つのみ。しかも、7Countingと8Lists/Setsはそれぞれ10000, 5000 examplesに増したら届いた。(17,19は10000あっても届かなかった。)

実験はMemory Networksのモデル幾つか、LSTM、N-gramsで各タスクに挑戦。

Memory Networksは前回の論文からさらに拡張されている。元のモデルでの具体的な欠点は以下。

  1. 素性がBag-of-wordsだったので語順考慮できずargument関係把握(4,5)ができない
  2. 3つ以上の記憶を手がかりにすることができない(手がかり数kが固定だった)ため、もっと必要な問い(3,7)に答えられない
  3. RNNを使わないとR(esponce)の出力単語数が固定(1)だったため、複数解答が必要な問い(8,19)に答えられない

それに対してのそれぞれの改善のための拡張は以下。

  1. Non-linear sentence modeling。N-grams、multilinear mapなど、語順を考慮に入れたembeddingにして学習。
  2. memory探索の際に、新たに用意した特別なm'が選ばれるまで探索を続ける。m'は「これが選ばれたら"もう要りません"となる擬似メモリー(文)embedding」で、学習で決定する。
  3. 出力単語決定の際に、上と同様にしてループ&m''が選ばれたら終了。

実験結果としてはMemory Networksが圧勝。設定もまあMemNNに有利だとは言っている(LSTMとかはsupporting factを教師として用いていないため)。上で述べたが多くのタスクでほぼ100%近い精度を出せている。また、全タスクデータを用いて統一的にモデル学習したモデルでも精度はあまり落ちなかったので、変に尖った学習でなくとも解けているっぽい。強いていえば4のTwo argument relationsと19のPath findingでは20%くらいガクッと落ちていた(そこへは特にコメントはなし)。

感想。
個別の分かりやすいタスクに分けられていて、AIへの道を真面目に整備していてよい。大半をさくっと解いてしまったので組み合わせ的な問題を考えていくことになるだろうか。それとももっとノイジーな実データ寄りのデータを作るのかな。
Memory Networks強い。タスク自体はたぶん個々に精度よく出せるモデルは他にもあるだろうけど、ここまでサクッと適用して一般的に解いちゃっているというのがインパクト強い。形がいいのは認めるけどこんなにも上手くいくのか…という驚き。