Задача машинного перевода (Machine Translation — MT) — это задача перевода предложения (текста) x с одного языка (исходный язык) к предложению (тексту) y на другом языке (целевом языке).
Формально: задача поиска максимально правдоподобного предложения y на целевом языке для предложения x на исходном.
Нейронный машинный перевод (Neural Machine Translation — NMT) — решение задачи машинного перевода с использованием нейронных сетей.
Для решения задачи машинного перевода целесообразно применять рекуррентные нейронные сети вида Many to Many:
Архитектура приведенная выше называется Seq2Seq (Sequence-To-Sequence). Модель состоит из двух частей — кодировщик (Encoder) и декодеровщик (Decoder).
Кодировщик и декодировщик представляют из себя отдельные рекуррентные рекуррентные нейронные сети. Конечное скрытое состояние кодировщика является начальным состоянием декодировщика.
Таким образом, кодировщик выполняет извлечение информации о контексте исходного предложения (текста). Формируется конечное скрытое состояние. Декодировщик, используя накопленную информацию о контексте исходного текста, последовательно формирует предложение на целевом языке.
Для каждого текущего токена на исходном языке кодировщик предсказывает (задача классификации) следующий токен на целевом языке.
Модели Seq2Seq применяются при решении самых разных задач обработки естественного языка:
При решении задачи машинного перевода можем использовать глубокие рекуррентные нейронные сети:
Критерием оптимизации является категориальная перекрестная энтропия. Negative log probability — это результат применения логарифма к результату softmax, взятый со знаком минус.
Генерация следующего токена на целевом языке опирается на результат предыдущей генерации.
Поэтому, если модель предскажет неверный токен в середине предложения, все последующие токены будут предсказываться также неверно.
Для устранения этой проблемы применяется подход Teacher Enforcing.
Обучение реализуется следующим образом:
Таким образом, модель будет учиться предсказывать следующие токены не накапливая ошибку.
Одной из часто применяемых метрик качества системы машинного перевода является BiLingual Evaluation Understudy (BLEU).
Метрика BLEU не является ориентиром — может существовать несколько правильных переводов
В основе современного NLP лежит использование механизма внимания. Мы начнем знакомиться с ним уже сейчас, в рамках задачи машинного перевода.
Основной вопрос, возникающий при использовании рекуррентных нейронных сетей для кодирования контекста: можем ли мы сохранить всю информацию о контексте в одном векторе (в скрытом состоянии)?
В случае коротких текстов — нет проблем. Но статью из более чем 50 слов уже не получится адекватно сжать до вектора размерности 256 (допустим). При этом конечное скрытое состояние является основой нашего перевода. Таким образом имеем “бутылочное горлышко”.
Основная идея механизма внимания: на каждом шаге декодирования использовать связи со всеми скрытыми состояниями кодировщика для того, чтобы фокусироваться (обращать внимание) не только на всю входную последовательность, но и на отдельные подпоследовательности.
Вычисляем скалярные произведения между текущим состоянием декодировщика и каждым скрытым состоянием кодировщика.
Получаем n чисел, где n — количество токенов входной последовательности. Применяем softmax.
Используем полученный в результате применения softmax вектор в качестве коэффициентов и вычисляем взвешенную сумму состояний кодировщика.
Вектор, соответствующий взвешенной сумме, конкатенируем с текущим состоянием декодировщика и используем его для получения предсказания.
Механизм внимания позволяет извлекать из входной последовательности наиболее важную для текущего состояния декодировщика информацию.
Дан некоторый набор векторов-значений (values) и некоторый вектор-запрос (query).
Механизм внимания — это метод получения взвешенной суммы векторов-значений в зависимости от вектора-запроса (аналогией может быть поисковая система, например Google, которая по запросу ранжирует сайты).
В механизме внимания необязательно использовать скалярное произведение векторов — можно использовать вспомогательные обучаемые матрицы (когда размерности векторов-запросов и векторов-значений различаются). Также можно добавлять функцию активации.
Однако в современном NLP в механизме внимания обычно используется скалярное произведение (поскольку его быстро считать).
Механизм внимания лежит в основе самых современных моделей глубокого обучения — трансформеров, с которыми мы скоро познакомимся.