Популяризация машинного перевода на основе нейросетей: уроки от Яндекс.Переводчика (на английском без перевода)

Короткая версия доклада:

Перевод на основе нейросети получается человечнее в сравнении с так называемым «пофразовым переводом» - в нём учитываются контекст и смысл целого предложения. Основное различие между нейронной и пофразовой системами перевода - это способ, которым они представляют язык, что обуславливает все их принципиальные различия. При решении проблем обработки естественного языка предполагалось, что, по аналогии с распознаванием речи или изображений, остается решить вопрос преобразования сигналов в произвольные символы, подходящие для компьютерной обработки – то, что называется прямым кодированием (one hot encoding).

При пофразовой системе используются матрицы выравнивания слов, чтобы определить, какие пары фраз в паре предложений могут служить переводами друг для друга. Полученная таблица фраз становится главным фактором в линейной модели, которая вместе с такими компонентами, как языковая модель, используется для генерации и отбора потенциальных переводов. Хотя это может производить впечатление беглого владения языком, на самом деле система не очень понимает, что она делает.
Нейронная система, в свою очередь, включает эти сложные прямые кодировки в гораздо меньшее пространство. Сеть обучается тому, как представлять слова, а также учится переводить, как подбирать слова, а также узнает, как преобразовать вводимое предложение в целевое. Векторное представление слов, применяемое в нейронном машинном переводе, как правило, сопоставляет каждому слову во входных данных вектор длиной в несколько сотен вещественных чисел. Когда слова представлены в таком векторном пространстве, сеть может научиться моделировать отношения между ними.

Однако процесс обучения векторным представлениям более требователен, чем механическое запоминание примеров, используемое во фразовом переводе. Кроме того, непонятно, что делать с теми редкими входными словами, которые недостаточно часто встречались, чтобы сеть могла построить для них приемлемое векторное представление. В Яндекс.Переводчике имеется многолетний опыт разработки системы пофразового перевода, однако в прошлом году началось изучение возможности интеграции также и нейронного машинного перевода. В то время как среднее качество переводов пофразовой системы ниже, дисперсия воспринимаемого качества нейронных переводов может быть намного выше. При пофразовой системе лучше запоминает редкие слова и фразы, поэтому у нее меньше «пробелов» в знании языка. При нейронной – больше внимания уделяется контексту, поэтому некоторый шум во входном сигнале может повлиять на весь перевод.

Пофразовая система перевода просто заучивает фразы из корпуса, поэтому, когда дело доходит до низкочастотных входных данных, он имеет явное преимущество над нейронным методом. С другой стороны, при нейронном методе увидеть слово несколько раз, чтобы построить приемлемое векторное представление. Он также очень старается моделировать зависимости в данных, поэтому, если сталкивается с мусором во входных данных, легко может производить в десять раз больше мусора в выходных. Две системы машинного перевода — фразовая и нейронная — вели себя совершенно по-разному на одних и тех же входных данных. Каждая из них при этом демонстрировала довольно высокое качество перевода. Поэтому в Яндексе построили ансамблевую систему из двух различных систем. Вместо того чтобы комбинировать две системы во время декодирования каким-нибудь сложным способом, был избран более простой подход: выбирать результат одной из двух систем. Для этого были обучены классификаторы с использованием CatBoost.

Первый классификатор, обученный на небольшом наборе ошибок, выявил особенно катастрофические сбои в нейронной модели, второй использовался, чтобы выловить менее очевидные ошибки – как недоперевод, когда нейронная сеть просто отказывается сотрудничать и оставляет часть исходного предложения непереведенной. В настоящее время мы экспериментируем с включением все более разнообразных типов контекста в нашу систему перевода, чтобы лучше переводить текст в конкретных ситуациях и для различных задач. Например, экспериментальная система, которая при переводе использует предыдущее исходное предложение наряду с текущим. Кажется, сеть вполне способна научиться понимать, когда нужно «обратить внимание» на слова из предыдущего предложения.

Кроме того, в ближайшее время на Яндекс.Браузере планируется запустить систему, которая будет автоматически размечать обучающую выборку извлеченных из интернета параллельных текстов метками «навигация», «заголовок», «содержание», а затем настроить ее так, чтобы она предсказывала эти метки в процессе перевода.