Эксперименты с обучением seq2seq модели показывают, что имеющегося набора обучающих данных (~76 тысяч сэмплов) маловато.
Хотя по мере добавления новых сэмплов (особенно в ходе итераций active learning) качество растет.
Можно предположить, что часть проблем модели вытекает из редкости некоторых слов и n-грамм.
А что, если попробовать сначала "разогреть" сетку сырыми, невалидированными данными?
У меня есть код автогенерации сэмплов из реальных текстов. С помощью набора правил и синтаксического парсера можно для произвольного утвердительного предложения сгенерировать вопрос и ответ:
T: я живу в Тюмени
Q: я где живу?
A: в Тюмени
Качество таких сэмплов недостаточно, чтобы без модерации добавлять их в основной датасет. Но их много - пара миллионов.
Кроме того, можно взять реальные диалоги, и сымитировать неполные реплики, рандомно убирая 1-3 слова. Например, из фрагмента:
- Надеюсь, рояль вам пригодился
- Ну конечно, Я даже пригласил настройщика.
можно взять вторую реплику, замаскировать в ней "пригласил" и заставить модель восстановить полную фразу "Ну конечно, Я даже пригласил настройщика.". По сути это то, что делают MLM.
Эксперимент показывает, что претрейнинг а) увеличивает крутизну кривой обучения, то есть модель учится быстрее б) не увеличивает конечную точность:
