Обучение Stanford-NER-CRF, контроль количества итераций и параметров регуляризации (L1,L2)
Я просматривал документацию / часто задаваемые вопросы StanfordNER, но не могу найти ничего, связанного с указанием максимального количества итераций в обучении, а также со значением параметров регуляризации L1 и L2.
Я видел ответ, который предлагается установить, например:
maxIterations=10
в файле свойств, но это не дало никаких результатов.
Можно ли установить эти параметры?
1 ответ
Мне пришлось копаться в коде, но я нашел его, поэтому в основном StanfordNER поддерживает множество различных алгоритмов численной оптимизации. Можно увидеть, какие из них реализованы и могут быть использованы для обучения CRF, изучив getMinimizer()
метод в CRFClassifier.java
файл.
Я настроил свой файл свойств для использования квазиньютона с ограниченной памятью Orthant-Wise, установив:
useOWLQN = true
L1-prior можно установить с помощью:
priorLambda = 10
Полезный прием - поиграть с параметром допуска сходимости TOL, который проверяется на каждой итерации: |newest_val - previous_val| / |newestVal| < TOL
, TOL
контролируется:
tolerance = 0.01
Еще один полезный параметр - это явное управление максимальным количеством итераций, для которых должен выполняться алгоритм обучения:
maxQNItr = 100