0512
$2^9$。
こんなことをするために苦労してMathJaxを入れたんとちゃうんやで。
昨晩はRoI Poolingの謎をいろいろ調べていたのだけど、昨日の日記に書いたみたいな単純なトリックではなくて、インデックスからn-hot vectorを得るのにsparse_to_denseを使っていたのが良くなかったことがわかりました。上手くいく場合もあるのだけど、インデックスに重複があるとだめらしい。まあ、スパース行列に重複なんかあるはずないんだから仕方ないよな。結局one_hotをreduce_sumして0と比較することでn-hot vectorを得ることにしました。やれやれ。
仕事はまあまあ。上記の修正でRoI Poolingの勾配がテスト通るようになったので、いろいろリファクタしつつ結合。VGG16の重みの読み込みもうまくできたのだけど、ソースコードをよくよく読んだら画像サイズがわりと可変だったので(だからim_infoをテンソルで渡す必要があったのかー)明日それにあわせてちょっと修正します。あとMS COCOのダウンロードがなかなかうまくゆかない。
人間はなぜ言語をメタ言語としても読むことができるのだろう。つまり、なぜ言語の使いかたを言語で教わることができるのだろう。
たとえば、人間は国語辞典を読むとその単語の使いかたを理解して正しく使えるようになる。しかしRNNに国語辞典を食わせても、国語辞典っぽい話しかたを覚えるだけでその言葉の使いかたは覚えてくれない。
素朴には、知識という概念があって、言語の組み合わせによって知識を構築し、あるいは知識を読み出すことができることになっている。しかし、我々が一般に知識と呼んでいるのは言語的に構築されたものばかりではないはずだ。言語的な知識と非言語的な知識とはなぜうまく馴染むことができるのだろうか。初めは非言語的な知識しか持っていなかったはずなのに、ある時から言語によって知識を拡大することを覚えるのはなぜか。
脳があるプログラミング言語で書かれたプログラムだったとする。自然言語によって知識を獲得するというのは、このプログラムを自然言語で修正することに近いように思われる。それは一つのインタプリタを作ることになるだろう。しかし我々からはそのプログラミング言語は見えないのだ。そんなことができるようには思えないし、ましてや後天的に学習することなど想像もつかない。(これは冗談だが、もしそのプログラムが日本語で書かれていたら、eval()に相当する機能が存在するかもしれない。これは冗談だが。)
空腹を告げる鳴き声と論理哲学論考との間には明らかに階梯の断絶があるように見えて、実は広大なスペクトラムの両端でしかないのか。だとすれば、その中間にはどのような構造があるのか。この断絶(に見えるもの)は、「自分の意志が実際にこの身体を動かしている」という考えかたに感じる断絶にも似ているのかもしれない。だからこれも、うまく言えない。