社内の検索技術勉強会ふりかえり
これはただの集団 Advent Calendar 2019の16日目の記事です。
昨日はTapanさんのMonixの話でした。
最初はZIOについて書こうと思っていたのですが、 TapanさんのMonixの話と内容がほとんどおなじになってしまったので 社内で行っている検索技術勉強会について書くことにします。
概要
昨年2月頃から社内のエンジニアを中心に始めた勉強会です。 検索技術を勉強する機会を作るためにふわっとはじめました。 週一回お昼休みに集まって、ご飯を食べながら進めています。
メンバー
メンバーは開発チームのエンジニアがだいたい6名ほどで、 それ以外にAIチームの方が1名参加してくれています。 初期はもっと参加者がいましたが、このぐらいの人数で落ち着きました。
内容
はじめに取り組んだのは情報検索の基礎という有名な本です。
タイトルどおり情報検索の基礎を学ぶ上で外せない本です。 特に第1章〜第8章まではポスティングリストやTF-IDFなどの検索技術の基本的な概念・手法がつまっていて非常に勉強になりました。 それ以降の章に関してはどちらかというと機械学習の話になってきたので、 この本を使わずに機械学習に強いメンバーに独自で資料を作ってもらったりしました。 また、機械学習に関しては他の本で学んだほうが効率が良さそうだねということで、 第11章〜第18章は飛ばして読み、逆に第19〜第21章はウェブ検索についての章だったのでしっかり読みました。
この本は一番最初、全員で本を読みながらホワイトボードを使って議論するスタイルで進めていました。 このやり方はしっかり理解ができるという点では良かったのですが、あまりにも進みが遅かったためすぐに変えなければなりませんでした。 その後は、各章ごとに担当を割り振りスライドを作ってもらって発表する形式になり、結果的に進みは良くなりましたが、 自分の担当箇所以外の理解度が低くなってしまった印象があります。 例えば、ジグソー法などでもう少しうまく議論が発生する仕組みを取り入れてみても良かったかもしれません。
余談ですが、この本で学んだことをまとめた同人誌を技術書典7で販売しました。
情報検索の基礎を読み終わったので、現在はランク学習(Learning to Rank)に取り組んでいます。 ランク学習とは機械学習で文書の並びを予測する手法です。
この題材に関しては、なんと昨年のアドベントカレンダーで一人でランク学習についての記事を書かれている方がいたので、 この記事を読みながら少しづつすすめていっています。
また、同じ方が発表されたヤフーにおける機械学習検索ランキングの取り組みの資料も非常に参考になります。
上記の資料をもとに、ランク学習を用いた検索基盤を構築するのが目下の目標です。 情報検索の基礎は良かったのですが、あまり手を動かせておらずアウトプットが少なかったため、今回は モブプログラミングなどでメンバー全員でコードを書きながら進めてみようと思っています。
その後のことについては、やりたいことが多すぎて何をやるか決まっていません。 案としては以下のようなものが上がっています。
- ランク学習の本(Learning to Rank for Information Retrieval)を読む
- SIGIRで採択された論文を読む
- 情報検索のためのユーザインタフェースを読む
まとめ
ふりかえってみると、9ヶ月ほど続いている勉強会になっていました。 まだ検索技術の初歩的な部分しか触れていませんが、 なにより継続することが一番難しいと思うので、これからも続けていければと思います。