読者です 読者をやめる 読者になる 読者になる

こんな夢を見た

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

Weakly Supervised Memory Networks

Weakly Supervised Memory Networks
Sainbayar Sukhbaatar, Arthur Szlam, Jason Weston, Rob Fergus, 2015, arXiv

弱教師あり学習によるMemory Networks。
Memory Networksでは、「記憶→使う記憶を探索→取り出した記憶を活用」の3ステップで問題を解くため、学習時には、探索の教師ラベル(どの文が必要か)と活用の教師ラベル(どの解を出力すべきか)の2つが必要となっていた(元論文では)。前者のラベルがついてあるデータは少ないし手間だし、どうにか後者の普通の解のみのアノテート問題で学習できないか、という論文。

"大きな"変更は3つ。

  1. 多層化(というより一貫化?というイメージ)
  2. 文内の単語順序考慮の新たな方法
  3. 入力文の順序考慮の新たな方法

まず1から。
記憶の探索で証拠文を得るプロセスにおいて、多層NNを利用してごちゃごちゃ情報を混ぜあわせている。ちょっと分かりづらいけどFig.2を参照。具体的には、(元祖Memory Networks流がやっていたように)具体的に証拠文1, 証拠文2, ...のように列挙して一段落した後にそれを解答決定処理の入力にするのではなく、探索ベクトルというより各文への重みベクトルとして順々に足しあわせて重みかけて…を何回か繰り返していってできたベクトルを解答処理の入力とする感じ。

活性化関数抜いて雑に流れを説明する。入力文ベクトルxiからは、行列Cをかけてできた記憶ベクトルmi_Cと行列Aをできたmi_Aをそれぞれ記憶。質問文ベクトルqに行列Bをかけてできた質問ベクトルu1。そのu0にmi_Aをかけると各文の重みp1iをもつ重みベクトルp1ができる。重みベクトルp1によって各記憶ベクトルmi_Cを足しあわせてできた証拠ベクトルo1。そして、証拠ベクトルo1と先の質問ベクトルu1を足して、パワーアップした質問ベクトルu2(もはやなんと呼べばいいのか)が完成。これを繰り返して、本稿ではu3とo3が完成。最後にそれを足して(実質u4)できたベクトルに行列Wをかけて、最終的な解予想ベクトルa'ができる。このa'に最も近い(クロスエントロピー最小)ベクトルaを持つような単語waを解答。

上の過程でのAもBもCも一応(一般化されたモデルとしては)層ごとに別のA1,A2,...と分けて学習することもできるが、学習しんどそうなので本稿ではそれはしていない。また、A=Cとしている。どうなるんだこれは…というごちゃまぜ一般モデル案からの強い制約。ちょっぴり今のはなんだったのか感。一般化されたモデルとしては、AもCも記憶文xiにかけるが、Aは「被探索用」行列、Cは「情報抽出用」行列という感じだ。Bは「探索用」行列かな。

次に2。文内順序のエンコーディング
BOWだと文情報として質が低いので順序考慮したい。なので文内での出現位置で単語の重みがでかくなるような重みづけをしている。それで(単語セットは一緒だけど順番は違う2文の)違いは出るのだろうけど、そんなのでいいのだろうかという疑問は残る式、そして説明不足。さらにベクトルの各次元すらも各次元で謎の変化が起きるようになっている。よくわかりませんでした。

最後に3。入力順序のエンコーディング
QAの中には入力文(event)の順序を考慮せねばならないものもある。例えば、「Tomは公園に行きました。Tomは学校に行きました。」で、「Tomは今どこにいますか?」というようなQA。
入力された順序によってあるベクトルtiを足すような感じ。ti(をくっつけた行列T)は学習するそうな。なお、これもA用(mi_Aに足す用)のT_AとC用のT_Aを作れる(けど本稿では共有)。tiを学習する以上、入力文の数が決まっているような感じがして大丈夫だろうかと思う。2の文内順序エンコーディングのときには文内の相対位置で重み付けしていたのに対して、今度は絶対位置iでの決定的なtiを用いて調整している。これもまた大丈夫だろうかと思う。

実験はTowards AI-Complete Question Answering: A Set of Prerequisite Toy Tasksの20個。
精度は勿論多少は落ちてしまったのだけど、弱教師ありとしてはなかなか頑張ったのではというスコア。ただし決定的に全然解けなくなってしまったタスクもあるように見える。具体的にはbasic inductionがかなり厳しそう。他に悪化が大きいのは3 supporting factや2 argument relations, positional reasoning, path finding。ちょっと不思議に思ったのが、2 argument relationsのスコアが3 argument relationsよりもかなり悪いこと。3の方の問題の癖に上手くフィットしたのだろうか。

なお、論文のFig.1は割と分かりづらい(自分はむしろ混乱した)ので式で理解ができたら無視したほうがいいかも。Fig.2に関しても同様。確率ベクトルと記憶ベクトル(をつなげて行列としたもの)が同じ長方形なのが紛らわしい。

最近更新されたっぽいStanfordの講義スライド -Memory Networks編-を見つけた。