前記事で End-to-End Memory Networks の実装を公開してたが、さらに社内勉強会の資料も公開する。
モデルもわかるように一応説明したつもり。
以下、前記事で書き忘れたこと+補足。
- 実装は CPU / GPU 両対応している。が、GPU の方が遅い(苦笑)。たぶんデータの渡し方が悪い&モデルが小さいので、演算時間がオーバーヘッドを上回れないのだろう。データの渡し方を工夫すれば改善するだろうが、Random Noise がどうせ台無しにするので、そこを頑張るのはやめた。
- 質問と記憶から応答情報を生成するのが基本。その応答情報を新しい質問とみなしてフィードバックすることで RNN 的な多層ネットワークを構成することができる。表現力が上がる……のかな? 実装では層の数をオプションで指定できるようにしているので、1層と3層で傾向がどのように変わるのか確認してみるのも面白いかもしれない。
- こちらのブログ記事 http://deeplearning.hatenablog.com/entry/memory_networks にて、Memory Network の IGOR フレームワークの名前の由来について「ちなみに I, G, O, R の 名前の由来はフランケンシュタイン博士の助手イゴール (IGOR) である」と記述がある。Memory Networks が汎用 AI を目指している野望がチラ見えるなあと感心していたのだが、結構頑張って探してもソースが見つからない。その代わり、ホームズの助手といえばワトソンであるようにフランケンシュタイン博士の助手といえば IGOR とよく知られている(らしい)が、原作の小説では博士に助手はいない、映画の第1作で初めて助手が登場するが、その時の名前は IGOR ではなかった、という余計な知識が記憶に追加されてしまった。( e.g. https://en.wikipedia.org/wiki/Frankenstein#The_creature )