はてな社内の勉強会で構造学習について発表しました

先週末、はてな社内の勉強会で構造学習、特に実装が簡単な構造化パーセプトロンについて発表しました。発表資料と説明用にサンプルで書いたPerlの品詞タグ付けのコードへのリンクを張っておきます。

「えっ、Perlかよ」という人がいるといけないので、Clojureで構造化パーセプトロンを使った係り受け解析のサンプルコードへのリンクも張っておきます(2種類あります)。PerlもClojureもあれば8割くらいの人はカバーできそうなので、安心ですね。

なぜ構造化パーセプトロンなのか

以下、深層学習の大バーゲン中になぜいまさら構造化パーセプトロンを紹介したいかをはてなのエンジニア向けに説明したポエムです。長いので要約すると

  • 世の中、深層学習が流行ってるけど、(はてなが現在やっている領域で)深層学習じゃないとできないっていう技術はほとんどない
  • 深層学習よりよっぽど簡単に実装できて、色々な問題に応用できる構造化パーセプトロンっていうのを紹介したい
  • これまで機械学習になじみがなかった人も構造化パーセプトロンを使って、新しくて面白いサービスや機能作っていきましょう!!!

という感じです。エンジニアとしての幅を広げるために深層学習を勉強するんだ、って思ってる人は止めません(むしろ僕に教えてください)。

世の中深層学習の大バーゲン中になっていて、twitterを見ても、はてブのテクノロジーカテゴリーを見ても深層学習の話題が登場しない日はないくらいの勢いです。エンジニアとして(遠くない将来に使うことになるかもしれない)深層学習を勉強したほうがいいのかなぁと思いつつ、どんどん新しい技術が出ていて、一体どれを試せばいいのやら…となっている人も中にはいるんじゃないかなと思います。ライブラリも色々出てるけど、PerlじゃなくてPythonばっかりでちょっとなぁ…という人もいそう?

それもそのはず、深層学習関連の研究のスピードは増すばかりで、査読がある論文誌や国際学会を待っていたらスピードに追い付かないという状況にすでになっています*1。この状況は少なくとも2-3年は続くと思います。

国から予算がどんどん出たり、深層学習や人工知能がプレスリリースに入っていると顧客も興味を持ってもらえるということで、企業でも必ずしも深層学習である必要がないものを深層学習でやっていたりします。しかし、エンジニアとしては世の中の流れに身を任せすぎず、チューニングしやすかったり、メンテナンスしやすい技術を選定していくべきだと思います。

はてなが音声や画像をメインに戦う会社だった場合、publishされている論文の中から使えそうな技術をいくつかピックアップし、最先端にキャッチアップする、ということが必要になると思います。論文の量も多いし、スピードも早いのでとても大変です。しかし、はてながメインで扱っているのはテキストであり、必要になる技術としてはNLP(自然言語処理)やIR(情報検索)です*2。これらの分野において、深層学習は論文こそたくさん出てきてはいますが、これまでの技術が使いものにならないと感じるほど精度が向上しているかというと、実はそんなことはありません。むしろ、これまでの技術と同等の性能を出そうとしてもチューニングすべきものが増えて、逆に大変になったという事例もかなり多いです。

そんな状況を踏まえて、適用範囲が広く、深層学習よりずっとシンプル*3でメンテナンスも容易な技術は何だろうと入社前後から考えて、これだろうと思ったのが(構造学習および)構造化パーセプトロンです。パーセプトロン自体は1950年代に出てきたアイディアで、それを構造学習に適用した構造化パーセプトロンは2002年に登場したすでに枯れた技術です。NLPやIRの分野では特に広く使われ、実装はとてもシンプルなくせに分野によってはstate-of-the-artだったりします。

はてなのエンジニアはとても手が早いので、構造化パーセプトロンのコードはきっとすぐに書けると思います。はてなにはユーザーから集められた面白いデータがまだまだ眠っていて、そのデータと機械学習を生かしてもっと面白いサービスや機能が作れると思っています。簡単で応用範囲の広い構造化パーセプトロンがそのきっかけになってくれればというのが、深層学習の大バーゲン中に構造化パーセプトロンを紹介したい意図でした。

楽しいサービス作っていくぞ!!!

Linguistic Structure Prediction (Synthesis Lectures on Human Language Technologies)

Linguistic Structure Prediction (Synthesis Lectures on Human Language Technologies)


はてなでは自然言語処理や機械学習を生かしてサービス開発をやっていく!というエンジニアやインターン生を募集しています。

*1:特にスピードの早い音声系とかだと国際会議に投稿後、発表する半年後にはもうディファクトが変わっていた、なんて話も聞きます

*2:少なくとも自分はそう思っている

*3:機械学習が専門でないはてなのエンジニアがPerlだけでも簡単にスクラッチから書ける