簡體   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