Козиев Илья (kelijah) wrote,
Козиев Илья
kelijah

Category:

Опыт использования hyperopt для оптимизации весов правил синтаксического парсера

Вот так выглядит процесс подбора >500 параметров для синтаксического парсера с помощью hyperopt:


Подробности эксперимента - под катом.

Есть проект синтаксического парсера для русскоязычных текстов. Классический ванильный NLP, включающий
вероятностную грамматику, нисходящий и восходящий алгоритмы и т.д. Правила пишутся лингвистами вручную. Для оценки качества делается сравнение результатов парсинга с золотым корпусом.

По большому счету одно из ключевых отличий этого парсера от использующих машобуч реализаций transition parser'ов заключается в способе подбора весов правил. Таковых правил около полутысячи, что делает ручной подбор оптимальных значений несколько утомительным - надо понять, что и на какую величину менять, прогнать разбор, получить новую оценку, и т.д.

Следует заметить, что зависимость метрик качества парсера от весов правил нетривиальна. Оптимумов может быть много. Правила влияют друг на друга сложным образом, так как парсер использует beam search с отсевом маловероятных альтернатив.

Решать задачу просто грубой силой aka grid search нереально, учитывая размерность пространства параметров (>500 real-valued значений).

Возникла идея - попробовать байесовскую оптимизацию, а именно библиотеку hyperopt. Хотя у меня были определенные сомнения, сможет ли hyperopt прожевать такую размерность пространства. Оказалось - может, хотя и без гарантий.

Каждый из параметров моделируется в пространстве hyperopt гауссовским распределением. В качестве среднего взято исходное (ручное) веса. Такой подход показал себя лучше, чем, например, линейные модели весов.

В результате экспериментов сделано 2 вывода.

1) Использовать hyperopt для non-convex задач с размерностью >500 реально.

2) Глядя на линию тренда (линейная регрессия, жирная зеленая линия), я бы сказал, что для накопления
необходимой статистики hyperopt'у нужно сопоставимое с размерностью пространства количество "измерений". Baseline был пробит уже на 150-й итерации, но даже к 500 итерации основная масса попыток плавает ниже "ватерлинии" бейзлайна.
Tags: hyperopt, парсер, синтаксический анализатор, синтаксический разбор
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 5 comments