2011-03-28 9 views
5

Una pregunta para cualquiera que haya utilizado la biblioteca de Java clase SimpleTagger de Mallet para Condicional Random Fields (CRF). Supongamos que ya estoy usando la opción de múltiples hilos para la cantidad máxima de CPU que tengo disponible (este es el caso): ¿dónde comenzaría, y qué tipo de cosas debería probar si necesito que corra más rápido?Mallet CRF SimpleTagger Ajuste del rendimiento

Una cuestión relacionada es si hay una manera de hacer algo similar al estocástico pendiente de descenso, lo que acelerará el proceso de formación?

El tipo de formación que quiero hacer es simple:

Input: 
Feature1 ... FeatureN SequenceLabel 
... 

Test Data: 
Feature1 ... FeatureN 
... 

Output: 

Feature1 ... FeatureN SequenceLabel 
... 

(. Cuando las características son el resultado del procesamiento que he hecho en los datos en mi propio código)

que he tenido problemas para conseguir que funcione cualquier clasificador CRF que no sea Mallet, pero es posible que deba retroceder nuevamente y volver a visitar una de las otras implementaciones, o probar una nueva.

Respuesta

4

Sí, descenso de gradiente estocástico es generalmente mucho más rápido que el optimizador de L-BFGS utilizado en Mallet. Sugeriría que probaras CRFSuite, que puedes entrenar ya sea por SGD o L-BFGS. También podría probar el SGD-based implementation de Léon Bottou, pero es más difícil de configurar.

De lo contrario, creo que CRF++ es el más utilizado software de CRF alrededor. Sin embargo, está basado en L-BFGS, por lo que podría no ser lo suficientemente rápido para ti.

Tanto CRFSuite como CRF ++ deberían ser fáciles de usar.

Tenga en cuenta que todo esto será lento si tiene una gran cantidad de etiquetas. Al menos, CRFSuite puede configurarse para tener en cuenta solo los n-gramas de etiqueta observados, en un modelo de orden (n-1), lo que generalmente hará que el entrenamiento y la predicción sean mucho más rápidos.

2

Por favor, echar un vistazo a este artículo: http://www.stanford.edu/~acoates/papers/LeNgiCoaLahProNg11.pdf

Parece métodos de descenso de gradiente estocástico son di fi culto para sintonizar y paralelizan.

+1

La sintonización sigue siendo un problema, pero puede paralelizar bastante fácilmente a SGD, ¡como Hogwild! muestra: http://pages.cs.wisc.edu/~brecht/papers/hogwildTR.pdf. –

Cuestiones relacionadas