5

Java ライブラリ Mallet の SimpleTagger クラスを Conditional Random Fields (CRF) に使用したことがある方への質問です。使用可能な最大数の CPU に対してマルチスレッド オプションを既に使用しているとします (これがその場合です)。どこから始めればよいでしょうか?また、より高速に実行する必要がある場合は、どのようなことを試せばよいでしょうか?

関連する質問として、トレーニング プロセスを高速化する、確率的勾配降下法に似た方法があるかどうかという質問があります。

私がやりたいトレーニングのタイプは単純です。

Input:
Feature1 ... FeatureN SequenceLabel
...

Test Data:
Feature1 ... FeatureN
...

Output:

Feature1 ... FeatureN SequenceLabel
...

(機能は、自分のコードでデータに対して行った処理の出力です。)

Mallet 以外の CRF 分類子をほぼ機能させるのに問題がありましたが、もう一度バックトラックして他の実装の 1 つを再検討するか、新しい実装を試す必要があるかもしれません。

4

2 に答える 2

4

はい、確率的勾配降下法は通常、Mallet で使用される L-BFGS オプティマイザよりもはるかに高速です。SGD または L-BFGS のいずれかでトレーニングできるCRFSuiteを試すことをお勧めします。Léon Bottou のSGD ベースの実装を試すこともできますが、セットアップはより困難です。

それ以外の場合は、CRF++が最も使用されている CRF ソフトウェアであると思います。ただし、これは L-BFGS に基づいているため、十分に高速ではない可能性があります。

CRFSuite と CRF++ はどちらも簡単に使い始めることができます。

多数のラベルがある場合、これらすべてが遅くなることに注意してください。少なくとも CRFSuite は、(n-1) 次モデルで観察されたラベル n グラムのみを考慮するように構成できます。これにより、通常、トレーニングと予測がはるかに高速になります。

于 2011-03-28T18:21:13.333 に答える
2

この論文をご覧ください: http://www.stanford.edu/~acoates/papers/LeNgiCoaLahProNg11.pdf

確率的勾配降下法は、調整と並列化が難しいようです。

于 2012-08-12T13:20:08.367 に答える