Введение в языковые модели
Языковая модель (Language Model, LM [1]) — это фундаментальная концепция в обработке естественного языка (NLP). Её задача состоит в том, чтобы моделировать последовательности слов, оценивая, насколько вероятна та или иная фраза в заданном языке.
Формально, языковая модель задаёт распределение вероятностей над последовательностями слов:
где — обучаемые параметры языковой модели, которые обычно находятся методом максимального правдоподобия (Maximum Likelihood Estimation, MLE) на больших массивах текстовых данных (корпусах текстов).
Знание вероятности всей последовательности позволяет нам решать две основные задачи моделирования:
-
Прогнозирование следующего слова (autoregressive LM): Оценка того, какое слово с наибольшей вероятностью продолжит начатый текст:
-
Прогнозирование промежуточных слов (masked LM): Восстановление пропущенных (замаскированных) токенов внутри контекста:
Эта задача эффективно решается архитектурой BERT и её улучшениями.
Применение языковых моделей
Языковые модели лежат в основе подавляющего большинства современных интеллектуальных систем, работающих с текстом и речью:
-
Автодополнение (аutocompletion): подсказка следующего слова на клавиатурах смартфонов или автоматическое завершение запросов в поисковых системах.
-
Исправление опечаток при вводе: выбор наиболее вероятных слов в контексте, если текст введён с ошибками и опечатками.
-
Машинный перевод: Выбор наиболее естественного варианта перевода среди нескольких допустимых вариантов.
-
Распознавание речи (speech recognition): Устранение акустической неоднозначности при распознавании речи.
Например, звуковые последовательности «с верой» и «сферой» звучат почти идентично, но языковая модель позволяет выбрать правильный вариант, опираясь на окружающий контекст предложения.
-
Генерация текста: создание креативных текстов, продолжение историй по их началу, ответы на вопросы в диалоговых системах.
Статистический подход: марковские цепи
По правилам вероятностей вероятность любой последовательности слов можно представить в виде следующего произведения:
Однако при таком подходе для вычисления вероятности -го слова нам нужно помнить весь предыдущий контекст . Число всевозможных контекстов растёт экспоненциально, поэтому мы никогда не соберём достаточно статистики, чтобы точно оценить вероятности длинных уникальных фраз.
Для решения этой проблемы в классическом NLP применяется марковское предположение, в котором мы предполагаем, что текущее слово зависит только от предыдущих слов, а не от всей предистории от начала текста:
Такая статистическая модель называется N-граммной моделью, где , поскольку в ней моделируются вероятности цепочек не произвольной длины, а лишь N-грамм - последовательностей из подряд идующих слов .
Эти вероятности оцениваются по количествам встречаемости соответствующих цепочек в обучающем корпусе текстов, которые далее будем обозначать как .
Униграмная модель
В этой модели и слова вообще не зависят от контекста, мы просто генерируем слова пропорционально их частоте встречаемости в языке:
Пример сгенерированного текста: «температура дождь облачно и солнце температура ветер градусы ожидается»
Биграмная модель ()
В этой модели . Каждое следующее слово зависит только от одного предыдущего:
Пример сгенерированного текста: «температура воздуха ожидается завтра будет облачно сильный ветер»
Триграм ная модель
В триграмной модели , и слово зависит уже от двух предыдущих:
Пример сгенерированного текста: «температура воздуха завтра днем составит плюс двадцать градусов»
Анализ окна контекста
Окно контекста () — это основной гиперпараметр статистических языковых моделей, который управляет их сложностью и степенью переобучения.
- При малом оценка вероятностей получается надёжной, так как удаётся накопить б ольшие статистики встречаемости коротких фраз. Однако в результате мы получаем плохую связность текста. Модель теряет нить повествования, как в примерах выше.
- При большом (таких как 5-граммы и выше) достигается высокая точность контекста, модель генериует грамматически безупречные длинные фразы. Однако из-за недостаточной статистики встречаемости длинных фраз в обучающем тексте мы сталкиваемся с проблемой разреженной оценки параметров такой модели. В итоге при генерации нового текста модель просто запоминает и копирует обучающую выборку кусками, не проявляя разнообразия.
Проблема разреженности
Допустим, мы применяем статистическую языковую модель для о ценки правдоподобия новых текстов
Это полезно, например, при классификации писем на спам и не спам, для чего в генеративных моделях требуются оценки и .
В этом случае даже для небольших мы столкнёмся с проблемой при встрече новых сочетаний слов в тестовой выборке.
Допустим, что при применении модели нам встретилась биграмма , которой не было в обучающей выборке. В этом случае счётчик . А поскольку вероятность всей цепочки считается как произведение
то правдоподобие всего предложения сразу превращается в ноль!
Также при генерации новых текстов будут невозможны переходы в новые слова, и генератор всегда будет повторять заученные фрагменты текстов из обучающей выборки.
Сглаживание Лапласа
Простейшее решение проблемы разреженности — добавить небольшую константу к счётчику каждого возможного события, чтобы ни одна вероятность не обращалась в ноль.
Модифицированная формула, например, для триграммной модели будет:
где — размер словаря (число уникальных слов).
- При малом мы максимально сохраняем оригинальное эмпирическое распределение. Точность возрастает, но разнообразие генерации падает (модель избегает новых сочетаний).
- При увеличении распределение стремится к равномерному, что приводит к увеличению разнообразия текста ценой снижения его связности.
Пример перерегулирования: При слишком большом модель решит, что , полностью игнорируя здравый смысл языка.