とりあえず deep learning してみる

いろいろと年度末に向けた TODO が溜まってきている。娘が生まれてからというもの、仕事の時間を8割に削減しているため、ひとまず年度内は新規の仕事は原則的に引き受けないようにしているのだが、継続の仕事だけでも思ったよりあるものである。

午前中は自然言語処理特論(大学院の授業)。みんなのソースコードを見ていると、特徴が出ておもしろい。「あ、これサンプルに使える!」と思ったりする。大規模化したときの効率なんかについて、ときどき補足を入れたりする(可読性や保守性のためにあえて効率を犠牲にしている場合もあるので、一概に効率をよくする必要はないのだが)。結局計算量を見積もるという意識がないと、あっさり何度も実行される重複した処理を書いたり、疎行列なのに密行列を作って演算したりするので、書いて実行し、直して「速くなった!」という経験を何度もするのが近道なのかな。

午後は SLP(自然言語処理の教科書)の輪読。時制やアスペクトに関する議論。このあたり、研究で時間に関することをしないと恐らくほとんど頭に残らないだろうが、一度聞いたことがあれば再度勉強するのは難しくないので、ちゃんと触れることができてよかった。問題は統語論で、今年度は統語論に関する章を読む時間がないのだが、あまり関係する研究テーマの学生がいないので、来年度になってからゆっくりできればいいかなと思っている。

夕方は DL(深層学習)勉強会。人工知能学会誌の特集を読む勉強会も、今日が最後。自然言語処理のための深層学習について、[twitter:@Bollegala] さんの記事を3人に紹介してもらう。やはり recursive neural network は興味深い。(recurrent neural network のほうは、精度は出ていてもなんか違う感があるが、それは初めて n-gram 言語モデルを聞いたとき「なんて荒っぽい近似なんだ」と思ったものに似ていて、実用上はそれでいいのかもしれない。)

実装レベルで理解していないのでまだなんとも言えないが、言語(記号)と再帰は永遠のテーマであり、最小の単位から大きな構造を無限に組み上げていく能力(仕組み)がある、というのはとても重要である。意味の最小単位は単語なのか何なのか分からないが、recursive neural network は単語から出発してフレーズや文、パラグラフの意味が合成できるというのはおもしろい。自分などは意味はもっと述語寄り、つまり節くらいが基本単位ではないかと思うのだが、ボトムアップに単語から意味らしきものを作れるのである。

まあ、「とりあえず SVM/CRF かける」「とりあえず pLSI/LDA 回す」というので研究になるのは数年の間だけだし、このブームのあとに何が残るのか、ということのほうが興味深い。(単語の分散表現と、再帰的な意味の計算、そして非線形の学習は残るのではないかと考えている)