繁体   English   中英

Mallet CRF SimpleTagger性能调优

[英]Mallet CRF SimpleTagger Performance Tuning

对于使用Java库Mallet的SimpleTagger类作为条件随机字段(CRF)的用户,这是一个问题。 假设我已经在使用多线程选项来获得可用的最大CPU数量(这种情况):我应该从哪里开始,如果我需要它运行得更快,应该尝试些什么?

一个相关的问题是,是否有一种方法可以类似于随机梯度下降法来加快训练过程?

我想做的培训类型很简单:

Input:
Feature1 ... FeatureN SequenceLabel
...

Test Data:
Feature1 ... FeatureN
...

Output:

Feature1 ... FeatureN SequenceLabel
...

(这些功能是我对自己代码中的数据所做的处理的输出。)

我很难让除Mallet之外的任何CRF分类器都能正常工作,但是我可能不得不再次回溯并重新审视其他实现之一,或者尝试一个新的实现。

是的,随机梯度下降通常比Mallet中使用的L-BFGS优化器快得多。 我建议您尝试CRFSuite ,您可以通过SGD或L-BFGS进行培训。 您也可以尝试使用LéonBottou的基于SGD的实现 ,但这很难设置。

否则,我相信CRF ++是周围使用最多的CRF软件。 但是它基于L-BFGS,因此对于您来说可能不够快。

CRFSuite和CRF ++都应该很容易上手。

请注意,如果您有大量标签,所有这些都会很慢。 至少可以将CRFSuite配置为仅在第(n-1)阶模型中考虑观察到的标签n-gram,这通常会使训练和预测更快。

请看一下这篇论文: http : //www.stanford.edu/~acoates/papers/LeNgiCoaLahProNg11.pdf

似乎随机梯度下降法很难调整和并行化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM