OLL: オンライン機械学習ライブラリをリリースしました。
様々なオンライン学習手法をサポートしたライブラリ「OLL (Online-Learning Library)」をリリースしました。
学習、推定を行なう単体プログラムと、C++ライブラリからなります。(C++ライブラリ解説はまだ)。
New BSDライセンス上で自由に使えます。使った場合は感想や苦情などいただけると幸いです。
オンライン学習とは、一つずつ訓練データを見てパラメータを更新していく手法で、訓練データをまとめて見てから学習するバッチ学習(SVMs, 最大エントロピー法)と比べて非常に効率良く学習を行なうことができます。それでいながらSVMs, やMEsに匹敵する精度が出ます。
学習するデータの性質にもよりますが、例えば、英語の文書分類タスクで、15000訓練例、130万種類の素性の訓練データに対する学習が1秒未満で終わります(SVMsだと実装にもよるが20分ぐらいかかる)。
自然言語処理への機械学習の応用は以前のエントリなどを参考にしてください。
#データ読み込みがボトルネックになってます。
さらに、データを1回だけしか見ないで学習しても、かなり良い精度が出ますので(特に手法CWが良い)、訓練データを保存できない環境(作業領域とかが非常に限られているなど)において、訓練データを見てすぐ捨てるようなことも可能です。
現在サポートしている学習手法は以下の通りです(ニ値分類しかサポートしていません)。
・Perceptron [F. Rosenblatt 1958]
・Averaged Perceptron [M. Collins 2002]
・Passive Agressive (PA, PA-I, PA-II) [K. Crammer, et. al. 2006]
・ALMA (modified slightly from original) [H. Daume, 2007]
・Confidence Weighted Linear-Classification [M. Dredze, 2008]
注意事項として、OLLは自然言語処理など、素性種類数が非常に多いが各例は疎であるようなデータを対象に最適化されているので、画像データなど違うタイプの問題ではうまくいかないかもしれません。また、訓練データの偏りが激しい場合(正例が連続して出現する、正例、負例の絶対数がかなり違う)などは学習が失敗する場合があると思います。可能な限り学習データは前後のデータに相関が無いようにシャッフルしておき、正例、負例の数は同じくらいにしてください。
学習データが少なく、ぎりぎりまで情報を搾り取りたいという場合は真面目に学習するSVMs, MEsを使ったほうがいいでしょうし、学習データがふんだんにあり適当に学習してもいい、または素性設計に時間をかけたいので毎回結果を早く試したい場合などは本ライブラリを使うといいと思います。
まだそんなに試していないので、間違いとかあるかもしれません。精度悪いから、この手法が悪いとか結論を早急に出さないでください。実装が間違っている可能性があります。ご了承ください。なんかありましたら教えてください。
---
本当はExponentiated Gradientベースのいろいろな学習を行なうライブラリを公開するべく頑張っていたのですが、どうも収束が安定しないので気晴らしに作ってみました。実装簡単。ソースが気持ち悪いことになっているのは各訓練事例で手法を分岐するのはオーバーヘッドがでかいかなぁと思い分けてみた結果です。そのオーバーヘッドは無視できるくらいっぽいなので継承してきれいに書き直そうかなぁと。
TrackBack
TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3041/41162739
Listed below are links to weblogs that reference OLL: オンライン機械学習ライブラリをリリースしました。:

Comments
おぉ、すばらしい。これは機械学習テンプレートライブラリへの対抗?
Posted by: unno | 2008.05.11 at 12:09 AM
いや対抗意識とかはなく、逃避というエネルギーを有効活用してできたものです。そっちはCRFとか構造学習を結構気合い入れて作ってるみたいです。
こっちは他のプログラムが行き詰まり、フラストレーションがたまって、GW以降の空き時間にうりゃりゃーと作ったものです。なので最小の労力で最大の結果がでるものだけを切り出していて、ソースも大変なことになってます(ちょっとずつ直していきます・・)
ただ、外から使う分は大丈夫だと思うので、ぜひ使ってみてください!
Posted by: oka | 2008.05.11 at 03:39 AM