たなかこういちの開発ノート

システム開発に携わる筆者が、あれこれアウトプットするブログ

「Jubatus Casual Talks」に参加してきました

「Jubatus Casual Talks」という、Jubatus開発者主催のイベントに参加してきました。イベントの詳細は下記ページを見てください。
 
ほとんどTwitter(Jubatus公式 @JubatusOfficial )での告知のみのようでした。
 
運営の方の説明によると、Jubatusの利用者に発表してもらうのは今回初めての試み、ということでした。(故に「Casual Talks #1」なのでしょう。)
 
以下に各種情報をまとめておきます。
 
関連ツイート( #jubatuscasual ):
 
当日のUstream:
 
Jubatus公式Blogより、「Jubatus Casual Talks #1 を開催しました
 
<'13/8/26追加>
他の参加者によるレポート:


  *

 
さて、完全な初学者の私ですが、大いに勉強できました。特に、今回はJubatus利用者による発表、ということでしたので、実際の様々な利用ケースを窺い知ることができたし、Jubatusの“良くない点”もばんばん指摘されていたので、短い時間でJubatusの世界、ひいては機械学習の世界に浸っていくことができました。
 
学んだこと、その1:「甘くはないゾ」
 
Jubatusには様々な解析・学習手法や各手法に対応したアルゴリズムが実装されているので、機械学習を深く理解していなくてもお気軽に使えるのだろう、と勝手に思い描いていましたが、それは甘かったのでした(^_^;
 
目的に対して適用すべき解析・学習手法は一概にどうとは言えない
 
まず、ある目的なり問題なりがあって、機械学習的に解決しようと言うとき、どういった手法やアルゴリズムを適用すればよいかというと、それは一概には言えないのでした。例えば、システムのアクセスログから何かの異常を検知しようと言うとき、問題をAnomalyとして課題認識してもよいし、Regressionとして課題認識することもでできるし、もしかしたらClassifierの課題だとしても解決できるかもしれない。。
 
パラメーターチューニングの試行錯誤が大変
 
次に、よい結果を出すには、パラメーターのチューニングが重要で、その試行錯誤がなかなか大変ということ。また、どんなセッティングが適しているかはデータ次第だということなので、業務ドメインが同じで、解析・学習手法も同じだとしても、個々のケースでチューニングは変わるだろうということ。
 
結局、うまい結果が得られないとき、そもそものソリューション構成が不適切なのか、パラメーターチューニングが甘いのか、はたまた何かの実装不具合を踏んだのか、こういったことを切り分けていかなければならない。。。言われてみれば当然のことなのですが、銀の弾丸は無い、ってやつでした。。
 
学んだこと、その2:「機械学習に頼る前に、ルールベースでよいのでは?」
 
「ルールベース」とは、「If〜Then〜」形式の“ルール”を(大量に)格納しておいて、事象より抽出した属性セットをそのルールベースに食わせると、推論結果が得られる、と言うものです。
 
Wikipediaより、"Rule-based system"
 
「機械学習」と「ルールベース」の違いは、すごく意訳した理解では、次のように言えると思います。
 
機械学習における「機械が自身で学習した内容」といったものを、ルールベースでは事前知識として人間から与えられている。あるいは、ルールベースでは人間から知識を事前に与えてもらう必要があるが、機械学習では、機械が自身で知識を獲得していく。
 
「機械学習」も「ルールベース」も、AI(人工知能)の文脈で登場する概念で、私はちょっと混同していましたが、上記のような違いがあります。
 
で、Jubatusは機械学習なのですが、「ルールベース」でも全く精度は悪くないそうです。言われてみればそうなのかもしれません。“知識”的なものを、事前に人間から貰うか、機械が自分で獲得するかが異なるだけで、「保持している“知識”的なものに基づいて何かを判断する」という点では同じだからです。
 
ここから先には、二つの意見がありました。
 
一つは、、、
 
ルールベースでも精度は悪くはない。しかしそれは、ルールを頑張って準備した場合に限る。往々にしてルールベースがうまく稼働すればするほど、ルールはどんどん増加してどんどん複雑化していく。ある閾値を越えると、そのルール群はどこをどう修正すればよいのか全く分からなくなり、保守が破綻する。これは(経験的に)ほとんど必至である。だから、始めから機械学習に取り組むメリットがある。
 
、、、という意見。もう一つは、、、
 
ルールベースでも精度はわるくない。なので、機械学習といった新しいものに手を出す前に、ルールベースでできる範囲ならば、まずはルールベースでの運用を考えるべきである。それでもムリということになって、初めて機械学習を導入するべきである。
 
、、、という意見でした。んーまー、ある意味同じこと、価値観の違い的なところでしょうか。。
 
Jubatus開発者の海野さん( Twitter:@unnonouno )は、当然(?)前者の立場で、最初のチュートリアルで「ルールの管理より、データの管理の方が楽」とおっしゃってました。
 
学んだこと、その3:その他
 
以下、その他のあれこれ覚え書きを列挙します。
 
・Jubatus内部に構築される「学習モデル」を外部から(=Jubatusを利用するアプリケーションから)参照することは、現状では基本的にできない。が、学習モデルを参照したいと言う要望は多々あり、Jubatus開発チームとしても課題として認識はしている。(※学習モデルの現状態を参照することは、パラメータチューニングの試行錯誤をするにおいて、どちらの方向へ倒していけばよいかの当たりを付けるために是非欲しいのである。現状では、Jubatus開発チーム内でも、「R言語」で試行錯誤してからJubatusに適用するというケースもあるらしい。一方で、機械学習の方式の種類によっては、内部の学習モデルを参照してもほとんど理解不能、意味を成さないだろうという話もある。)
 
Wikipediaより、「R言語
 
・Jubatusには、「MeCab」という日本語形態素解析するOSSが組み込まれていて、英語のパース用に"space"、日本語のパース用には"mecab"というオプションを指定することで、自然言語の文章そのまま投入しても、それなりに処理してくれるような仕掛けが組み込み済みである。(※具体的にどういうことかと言うと・・・もうちょっと勉強します。。)
 
MeCab:http://code.google.com/p/mecab/
 
・Recommenderは、ある種の検索、さらにはある種のマッピングとして捉えることが(も)できる。
 
・Jubatusのウリである「Update-Mix-Analyze」のアーキテクチャにおいて、「Mix」が効果的に機能しないケースがある様子である。
 
 
というわけでした。
 
◆以上