« CRF++ に激しいバグ | メイン | CRF++ マルチスレッド化 »

2006年03月21日

CRF++ 0.40

http://chasen.org/~taku/software/CRF++/

CRF++-0.40 を公開しました。リファクタリングして、C/C++ の API を作ってみました。
メモリーリークのバグも修正しています。

FlexCRFsという CRFのパッケージがあるのですが、そちらはマルチスレッドを使って学習の処理を高速にしているみたいです。深追いしてみると、期待値の計算を並列にやってパラメータのの更新は単純にLBFGSをシングルスレッドで動かしているようです。実際に期待値計算とパラメータ更新にそれぞれどれぐらい時間がかかるか調べてみると、圧倒的に前者の方が時間がかかっています。これはちょっと予想はずれでした。LBFGSってもっと処理時間がかかるものかと考えていたのですが。。。 

CRF、広くは最大エントロピー法の学習はEMアルゴリズムに似ています。モデルの確率分布の期待値を計算し、それを元にパラメータを更新するというプロセスを何度も繰り返していきます。期待値の計算ってのは、簡単に言ってしまえば頻度計算なので並列処理に向いているのは当たり前ですね。パラメータの更新はそんなに時間がかからない(LBFGSは高速である)ということがわかったので、超大規模な学習もやろうと思えばできそうです。

CRF++もマルチスレッドにしてみようとしたのですが、かなりトリッキーな方法でメモリを共有してメモリの消費量を抑えているため、簡単にはできそうにありません。

投稿者 taku : 2006年03月21日 23:46

トラックバック

このエントリーのトラックバックURL:
http://chasen.org/~taku/blog/mt-tb.cgi/196

このリストは、次のエントリーを参照しています: CRF++ 0.40:

» mature naked videos from mature naked videos
mature naked videos [続きを読む]

トラックバック時刻: 2007年01月07日 09:36

» naked gay man sex from naked gay man sex
naked gay man sex [続きを読む]

トラックバック時刻: 2007年01月14日 00:50