RNN/LSTM модель word_is_noun: больше данных - выше точность, ошибаемость уже ниже 9.75%

Apr 24, 2016 17:53

(продолжаю эксперименты по задаче классификации слов СУЩ/НЕ СУЩ по репрезентациям, которые создаются рекуррентной сетью - см. http://kelijah.livejournal.com/181708.html)

Получив более-менее работающую модель с ошибаемостью порядка 12.25% на 100,000 самых частотных слов, я сначала поэкспериментировал с метапараметрами модели.

Смена LSTM на GRU дала существенный прирост скорости обучения, но просадку точности. С ванильной SimpleRNN пробовать не стал.

Вариации количества LSTM ячеек влияли на точность меньше, чем колебания точности между эпохами обучения. Dropout тоже давал некоторое улучшение, но на уровне шума. В итоге, эксперименты уперлись в значение ошибаемости 11.85%.

Затем я прикинул, что 100 тысяч слов в датасете, после отщипывания 10k на тестовый набор, дают грубо говоря 30,000 существительных. Учитывая разные окончания и суффиксы, это дает около 100 примеров употребления одного окончания. Это очень мало.

Поэтому было решено попробовать увеличивать размер датасета. При общем объеме SQL словарной базы в ~3 миллиона словоформ есть большой резерв.

Первое же удвоение размера до 200,000 слов показало, что именно данных не хватает модели для счастья. После 7ой эпохи ошибаемость упала до 9.735%. Это уже эффективно 4.5-грамная модель слов.

Текущие исходники без данных лежат тут: https://github.com/Koziev/word_is_noun

нейросети, deep learning, lstm, rnn, keras, рекуррентные сети, python, machine learning

Previous post Next post
Up