Привет, Хабр! Меня зовут Николай Карпачёв, я руковожу группой базового качества перевода в Яндексе. Недавно мы впервые разработали модель документного перевода на основе YandexGPT и, используя различные оптимизации, уже применяем её в Поиске, Умной камере, а также в нейропереводчике Яндекс Браузера. Кроме того, мы протестировали новую модель на независимом международном бенчмарке DiBiMT, где заняли первое место по качеству англо-русского перевода.
В этой статье я расскажу:
почему нужно делать перевод именно с контекстом, на уровне документов, а не отдельных предложений;
как в этой задаче помогают LLM;
чего не хватает базовой general-purpose LLM для хорошего перевода;
как адаптировать большую языковую модель под задачу, когда размеченных данных мало.
Машинный перевод — одна из наиболее известных и классических задач в компьютерной лингвистике. Первые коммерческие системы появились уже в 1990-х годах, а начиная с середины 2000-х, движки real-time-перевода стали доступны уже для всех пользователей интернета.
С точки зрения используемых алгоритмов задача перевода также очень интересна. Исторически для популярных языковых направлений было доступно гораздо больше данных, чем для других генеративных задач NLP (например, суммаризации или question-answering). По этой причине многие современные алгоритмы впервые успешно заработали именно в задаче перевода.
Например, в 2014 году в статье Sequence to Sequence Learning with neural networks было описано, как обучить в режиме end-to-end модель генерации текстов на основе рекуррентной нейронной сети. Чуть позже для обработки длинных последовательностей хорошо заработал механизм внимания (Bahdanau et.al., 2014). А в 2017 году исследователи из Google предложили модель трансформера, которая заменяет последовательное обновление скрытого состояния из RNN на параллелизуемый механизм self-attention. Он позволил моделировать более сложные зависимости с гораздо большим расстоянием связей.
Вместе с тем после внедрения и улучшений трансформерных моделей качество алгоритмов перевода стало достаточно высоким. Для не очень длинных текстов общей тематики (general domain) автоматические переводчики стали допускать уже крайне мало ошибок. На практике это означало, что для некритичных сценариев можно было переводить предложения через машинные системы с минимальной постредактурой.
А в 2022 году появилась модель ChatGPT, которая с ходу практически идеально решила много сложных задач NLP без какого-либо дообучения или инжиниринга архитектуры. На первый взгляд, такой задачей должен был стать и перевод: ведь он и ранее хорошо работал, и на уровне простых промптов модель выдавала в целом близкие к желаемым ответы. Казалось бы, стоит немного аккуратнее подобрать подводку либо сделать простое дообучение под задачу — и всё, задача перевода решена.
На деле всё оказалось не так просто. Каждый год на международной конференции по переводу WMT в рамках трека-соревнования по базовому качеству перевода (WMT general translation task) сравниваются лучшие продакшен-системы, LLM и посылки участников трека. Среди сравниваемых систем также есть и «референсы» — переводы, сделанные профессиональными специалистами. Такой перевод, строго говоря, содержит некоторое количество ошибок и неточностей (в том числе смысловых), и полноценным идеалом его считать нельзя. Хотя существует ли идеальный во всех компонентах перевод — вопрос открытый, ведь часть текстов очень тесно переплетены с культурными особенностями и не имеют иноязычных аналогов.
Так или иначе, сравнение с «человеческими» референсами — это понятная и достаточно адекватная метрика итогового решения задачи.
В 2023 году LLM впервые поучаствовали в соревновании, и результаты GPT были хуже (но при этом очень хорошие для непереводной модели), чем у encoder-decoder-моделей, созданных для перевода.
В целом, конечно, результаты сильно зависят от языкового направления. Для перевода на английский качество англоцентричной GPT-4 гораздо ближе к человеческому, но для генерации на других языках LLM не хватает адаптированности.
В 2024 году LLM стали умнее, и многие ожидали, что уж теперь бейзлайн человеческого качества будет достигнут. Но, по результатам свежего WMT (ноябрь 2024 года), переводы человека остались статистически значимо лучше ML-систем в 7 из 11 представленных языковых направлений. И это если не учитывать тот факт, что сами «человеческие» переводы на WMT не являются безупречными.
Качество по метрике MQM по разным доменам. В крайнем правом столбце положение переводов человека в лидерборде. Источник: Findings of WMT24
Таким образом, можно сделать вывод, что на сегодняшний день LLM хоть и умеют работать «из коробки» в режиме минимального дообучения, но без специфичного тюнинга под перевод пока не обойтись — есть ошибки. Близкие к человеку результаты показывают только лучшие foundation-модели от команд вроде OpenAI или Anthropic. Типичный размер флагманских моделей — сотни миллиардов параметров. В любой продакшен-среде инференс таких моделей крайне тяжелый и требует очень много вычислительных ресурсов.
Получается, если мы хотим иметь доступ к быстрому и доступному пользовательскому переводу хорошего качества, нам нужно делать отдельные модели для перевода. И сейчас я расскажу про наш опыт в построении таких моделей.
Если вы проходили курсы по машинному обучению и обработке текстов, то наверняка сталкивались с лабораторными работами или проектами по теме перевода. И, скорее всего, видели, какие данные обычно используются для обучения и оценки качества моделей — предложения.
Обучающий датасет для переводчика — это классическая supervised-выборка пар src — reference, где src — это предложение на исходном языке, а reference — интересующий нас его перевод.
Почему именно предложения? Ответ прост, и он не связан с тем, по какой причине лучше делать переводы отдельных предложений.
Во-первых, исторически сложилось, что данные переводов собираются из нескольких источников: от профессиональных переводчиков и локализаторов, с помощью автоматических алгоритмов из интернета или заранее отобранных comparable corpora, а также аугментациями (подробно о техниках сбора параллельных данных мы недавно рассказывали в статье).
Гораздо больше таких данных можно получить, если искать параллельные предложения, а не полные документы. Предложения переводятся чаще, а их переводы обычно «выровнены» — меньше перестановок блоков и добавления какой-либо дополнительной информации (она, очевидно, вредит моделям и добавляет дополнительный шум в обучающую выборку).
Кроме того, из одного и того же датасета документов можно получить значительно больше обучающих сэмплов предложений, чем сэмплов параграфов или бо́льших фрагментов. Если суммарно данных не так много, то обучение на предложениях — единственный вариант.
Во-вторых, более ранние алгоритмы перевода плохо обобщались на документы. Сейчас, в 2025 году, мы знаем, что трансформерные модели неплохо работают с контекстом даже в несколько тысяч токенов, а ещё 10 лет назад такое было сложно представить. Поэтому в тот момент пользы от хороших датасетов документов было бы не очень много, ведь модели всё равно слабо держали контекст. А без умения работать с контекстом какой смысл в документном корпусе?
Но на практике нас слабо интересует перевод отдельных предложений: обычно мы воспринимаем информацию более крупными, законченными блоками. Собственно, и в случае переводов мы также смотрим фильм, читаем книгу или просматриваем веб-страницу целиком.
Модели на уровне предложений хоть и неплохо переводят в изоляции, однако плохо понимают контекст. Ниже — примеры типичных проблем sentence-level-перевода из статьи When a Good Translation is Wrong in Context: Context-Aware Machine Translation Improves on Deixis, Ellipsis, and Lexical Cohesion. В них представлены типичные ошибки контекстной согласованности при переводе по предложениям.
Неоднозначность при переводе указания (deixis). Значение указательных фраз или местоимений часто зависят от контекста, в котором они употребляются. Например, англоязычное you может переводиться в «ты» или «вы» в зависимости от выбранного тона формальности. Аналогично род в английском языке подразумевается из контекста, а в русском явно выражен в словоформе.
Эллипсис. Эллипсисом называют пропуск в тексте элемента предложения, который восстанавливается из контекста. Но не всегда эллиптические конструкции исходного языка текста присутствуют в языке перевода. В таком случае независимый перевод по предложениям приведёт к искажению смысла.
Лексическая когезия. Когезия — способ связывать между собой предложения внутри текста, а лексическая когезия делает это с помощью повторений или других референтных выражений между словами.
При независимом переводе блоков, в которых содержится лексическая когезия, перевод ключевых слов может получиться неконсистентным. В таком случае связность текста теряется, что также затрудняет восприятие смысла.
Понятно, что подобного рода ошибки — фундаментальное ограничение переводчика по предложениям. Даже идеальный перевод отдельных фраз будет подвержен таким проблемам согласования.
И также понятно, что цель нашего продукта — качественный перевод произвольных текстов, будь то статья из Википедии, субтитры к фильму или комментарий футбольного матча.
Поэтому в какой-то момент мы приняли решение больше не развивать модели перевода отдельных предложений, а сосредоточиться на решении более актуальной (и технически сложной) задачи контекстного перевода.
Итак, мы пришли к тому, что модели перевода по предложениям надо заменять на документные. Каким же образом можно получить такие модели?
На старте есть несколько ограничений:
Очень мало качественных doc-level-переводов для обучения.
Нужна модель, способная поддерживать в памяти и учитывать длинный контекст документа и начальной части перевода.
Отдельно важна гладкость (fluency) генерации текста.
С учётом таких вводных факторов стандартное обучение seq2seq-трансформерной модели с нуля, как было принято для sentence-to-sentence-переводчика, нереализуемо. Из-за нехватки документных данных SFT без претрейна будет работать плохо, а гладкость переводов внутри параллельных корпусов оставляет желать лучшего (там много машинных переводов и других синтетически сгенерированных данных).
Естественная идея — использовать LLM. И вот почему:
На достаточно больших размерах модели базовый претрейн уже неплохо справляется с широким спектром задач без in-domain-данных.
Так как LLM сначала учится просто «моделировать текст» и проходит гигантский объём данных на языке перевода (в нашем случае — русском), её генерации также получаются очень гладкими и более вариативными, чем у моделей, которые видели только параллельные корпусы перевода.
Типичный контекст больших языковых моделей — несколько тысяч токенов. Этого с запасом хватит, чтобы держать в памяти модели почти всю нужную информацию для перевода. Понятно, что есть исключения вроде точечных фактов, которые вводятся в начале повествования книги, но, как правило, критичный для перевода контекст находится в некоторой локальной окрестности параграфа.
Для изначальных экспериментов мы взяли несколько версий внутренней модели YandexGPT decoder-only и попробовали две стандартных стратегии адаптации LLM под задачу.
Мы попробовали применить обычный промптинг под перевод, никак не дообучая модель. В итоге мы пришли к таким наблюдениям.
Иногда LLM выдаёт крайне хорошие переводы: с богатым русским языком и перефразировкой, сохраняющей смысл.
При этом часто встречаются грубые ошибки, которых никогда не допустил бы человек или отдельный переводной трансформер. Например, потери больших блоков текста в переводе (undertranslation) или, наоборот, «придумывание» текста от себя в отрыве от source-предложения (overtranslation).
Другими словами, предобученная LLM гораздо лучше умеет строить предложения и знает какие-то факты, которые сложно найти в корпусах перевода. Но при этом она явно недообучена под задачу, поэтому у неё возникают большие сложности с полным сохранением смысла без переписывания.
К подобным выводам пришли и исследователи из Google, применив их внутреннюю LLM PaLM к задаче перевода. В статье Prompting PaLM for Translation: Assessing Strategies and Performance перевод с помощью prompt-engineering модели PaLM сравнивался с переводом актуальной модели Google Переводчика. Авторы пришли к выводу, что LLM совершает меньше стилистических и грамматических ошибок, а также нарушений согласованности, но генерирует гораздо больше переводов с пропуском информации и галлюцинаций.
Сравнение типов ошибок среди переводов двух систем компании Google: LLM без дообучения (PaLM) и Transformer (SOTA). Omission — ошибки, связанные с пропуском части информации и искажением смысла, Awkward — ошибки стиля, неестественные и плохо согласованные переводы. Источник: Prompting PaLM for Translation: Assessing Strategies and Performance
Переводы неадаптированных LLM более естественные и гладкие, при этом больше искажают смысл. Поэтому, если мы хотим применять LLM на практике, нужно адаптировать базовую модель конкретно под задачу перевода и увеличить точность сохранения смысла.
Второй классический способ адаптации модели к downstream-задаче — дообучение весов. Здесь нам уже потребуется обучающая выборка, как и в классическом обучении с учителем.
Откуда же взять обучающую выборку для документного перевода? Напомню, подавляющее большинство переводных данных — это параллельные предложения. А для решения задачи в идеале нужны параллельные фрагменты с распределением длин от предложений до очень длинных текстов.
Такого рода данные за разумный срок получить невозможно. Поэтому в качестве первого шага перехода к переводчику документов мы решили свести задачу к переводу параграфов или цепочки параграфов (примерно до тысячи токенов). С одной стороны, такая постановка задачи проще для оценки качества, сбора данных и моделирования. С другой стороны, в блоках такого размера уже содержится бо́льшая доля релевантной контекстной информации, нужной для разрешения проблем, которые мы обсуждали выше.
Какие есть варианты дообучения модели под перевод параграфов:
Данные предложений. Самой простой опцией будет взять классические обучающие данные sentence-wise-моделей и рассчитывать, что модель достанет семантический маппинг из предложений, а контекстная согласованность прорастёт автоматически из задачи LM-претрейна.
Document-level back translation. Можно получить псевдопараллельные документные данные, используя массив документов на целевом языке и обратную модель sentence-level-перевода. Действуем по аналогии с обычной аугментацией back translation: берём модель перевода с русского на английский и русский документ, переводим предложения по очереди и получаем синтетический «новый source».
Такая аугментация хоть и будет содержать ошибки неконсистентности, но за счёт высокой гладкости и связности псевдоперевода (оригинального русскоязычного документа) использование подобных данных научит модель употреблять более консистентную лексику, имена, формат единиц измерения при генерации перевода всего блока.
Multi-sentence resampling (MSR). В статье Multi-Sentence Resampling: A Simple Approach to Alleviate Dataset Length Bias and Beam-Search Degradation был предложен другой способ генерации псевдодокументных переводных данных. Простыми словами: имея корпус предложений и их переводов, конкатенируем случайные предложения и соответствующие референсы в блоки и считаем их новыми документами.
Недостаток подхода понятен: в полученном корпусе, в отличие от бэктранса, будет низкая контекстная согласованность (даже отрицательная, так как модель будет привыкать к не связанным между собой подряд идущим предложениям). Однако обучение на таких псевдодокументах делает модель устойчивой к большим длинам на входе и сильно уменьшает число галлюцинаций.
Автоматически собранные переводы параграфов. Проблемы синтетических данных понятны. Возникает логичный вопрос: почему бы не использовать аналогичные предложениям автоматические процедуры поиска и выравнивания?
Используя различные схемы алайнеров, мы получили несколько массивов параграфных переводов. Основная проблема таких выровненных данных в том, что парагафы (или более крупные главы) редко переводятся близко к тексту. В переводах книг часто допускаются перефразировки, изменения порядка повествования и художественная адаптация от авторов перевода.
Таким образом, используя разные типы источников параграфных данных, мы получили supervised-корпус для обучения.
Как же реализовать дообучение LLM технически? Самый простой способ — дообучение всех параметров модели (Full Fine-tuning). У такого варианта есть понятные проблемы, связанные с высокими вычислительными затратами на оптимизацию, но с точки зрения математической задачи FF — наиболее мощный инструмент.
Что же видим на практике?
Full Fine-tune LLM на данных предложений даёт результаты, крайне близкие к обучению на предложениях с нуля.
Full Fine-tune на данных документов сделал модель намного устойчивей к длинным параграфам, однако по качеству заметны большие проблемы.
Суммарное качество обоих вариантов почти не превышало обучение маленького трансформера с нуля. С одной стороны, это странный результат: неужели вся информация, полученная моделью на этапе претрейна, оказалась бесполезна для документного перевода? С другой стороны, если рассмотреть процедуру дообучения с технической точки зрения, на этапе supervised fine-tune происходит минимизация некоторого расстояния между вероятностным распределением модели и эмпирическим распределением обучающей выборки.
В случае Full Fine-tune мы оптимизируем все параметры языковой модели, соответственно, разница между обучением с нуля и использованием LLM pretrain состоит исключительно в начальном приближении. И если мы делаем оптимизацию достаточно агрессивно, то эффект от начальной точки гораздо меньше эффекта датасета.
Наши датасеты, как предложенческий, так и документный, не очень высокого качества. Поэтому модель, обученная в режиме FF, начинает «перенимать» проблемы обучающей выборки и в каком-то смысле переобучаться под её проблемы.
Как быть с таким tradeoff недоадаптации и переобучения под датасет?
Понятно, что схема выше — небинарная. Есть разные варианты PEFT / Sparse Fine-tuning, которые ограничивают «степень свободы» модели путём задания маски на оптимизируемые веса, ранга обучаемой добавки или конкретной группы изменяемых параметров (начальные или конечные слои).
Исходя из такого рассуждения, возникает идея: что если селективное и более ограниченное дообучение не сможет переоптимизироваться под проблемы и баги датасета, но при этом приучит модель к формату задачи перевода?
На практике так и получилось: мы попробовали разные варианты PEFT и пришли к тому, что дообучение в формате P-Tuning или LoRA даёт заметно лучшее качество, чем prompt engineering и full fine-tune.
Итак, разобравшись с Supervised Fine-tuning (SFT), можно получить модель, которая неплохо переводит фрагменты длиннее предложений. Но насколько хорошо его качество «по абсолютной шкале», в сравнении с человеком?
На практике у SFT есть много проблем.
Первая проблема — гладкость и связность перевода, иначе именуемая как fluency. Так как датасеты для SFT собраны с помощью различных эвристик и пайплайнов матчинга, качество самих текстов не очень высокое. По сравнению, скажем, с книгой или хорошо написанной статьёй, переводы из параллельных текстов представляют собой так называемый translationese — текст, который содержит несогласованность или странный выбор лексики, неестественный для русского языка. Обучая модели на таких текстах, мы никогда не получим модель, свободную от таких ошибок.
Как же решать проблему с гладкостью? Собрать ещё один supervised-корпус переводов — вариант нереализуемый: это долго, дорого и нужны переводчики с высоким уровнем компетенции. Нам же хотелось получить маленький корпус, желательно собранный автоматически, для целенаправленного улучшения гладкости и связности переводов.
Для решения этой задачи мы решили использовать синтетические данные исправлений гладкости. Процедуру, описанную ниже, мы называем fluency repair.
Мы заметили, что хоть базовая general-purpose LM не очень хорошо решает задачу перевода, она прекрасно генерирует связные и лексически богатые тексты. А точные переводы неплохо генерирует наша переводная модель.
А что, если использовать general-purpose LLM как перефразировщик, а базовую модель перевода — как генератор начальных гипотез? Тогда в идеале среди перефразировок мы получим точные (или с минимальным искажением) переводы, которые хороши в гладкости и естественности.
Кроме того, как наверняка многие из вас заметили, полученная выборка fluency repair содержит больше информации, чем обычная выборка для SFT, — в ней есть примеры исправлений. Такие исправления прекрасны тем, что можно делать обучение на триплетах (src, good, bad), а не только на парах (src, good). Мы можем явно показывать модели примеры не очень хороших по гладкости переводов и примеры исправлений, а также одновременно оптимизировать вероятность исправления и дебустить вероятности плохого ответа.
Подобная схема используется в различных вариациях обучения Learning from Human Feedback, также известного как LLM Alignment.
Классическая схема такого алайнмента представляет собой сравнение ответов модели с помощью оценок человека и обучение на парах/множествах отранжированных ответов. Технически подобное обучение, как правило, реализуется с помощью обучения модели награды (reward model) и последующей RL-оптимизации (PPO и прочих), либо полностью off-policy-обучением в режиме contrastive learning. В таком случае в качестве обучающих сэмплов берут напрямую оценки и ранжирования людей.
В нашем случае подход fluency repair синтетический и заточен на улучшение одной компоненты перевода — гладкости. Как же учесть и другие свойства?
Помимо fluency repair, мы используем и классическую процедуру сбора данных для alignment — сравнение различных переводов с помощью асессоров-переводчиков.
Такие данные гораздо более разреженные: среди пар переводов есть и близкие друг к другу, и радикально отличающиеся по качеству, и неоднозначные для сравнения. То есть такой способ сбора данных позволяет собрать много разных данных «в ширину», а fluency repair — для улучшения конкретного свойства переводов. Мы используем оба варианта сбора данных и некоторый набор фильтрации шумных сэмплов разметки и ошибок в синтетике.
Наконец, давайте соберём данные асессорской и автоматической разметок пар переводов и техническую реализацию alignment в единый пайплайн дообучения LLM под перевод.
Напомню, верхнеуровнево мы используем стандартную схему дообучения:
Бо́льшая часть наших датасетов — это off-policy-генерации разной природы (данные под исправление ошибок fluency + данные неструктурированных сравнений). Поэтому для прямого использования и более точной балансировки таких данных мы используем off-policy-методы и обучение напрямую на данных триплетов.
Сейчас state-of-the-art-подходом для off-policy-обучения на триплетах является вариант contrastive learning DPO (Direct Preference Optimization).
Напомню, DPO представляет собой оптимизацию logsigmoid-функции потерь на относительных приращениях вероятностей winner- и loser-гипотез текущей модели относительно reference-модели. За reference-модель, как правило, берётся базовый чекпоинт алайнмента.
Мы попробовали DPO и заметили очень большую нестабильность обучения. От незначительных изменений базового чекпоинта качество итоговой модели менялось радикально — вплоть до факта сходимости или развала модели.
Посмотрев на графики обучения, мы выделили три причины такого нестабильного поведения.
«Гейминг» контрастной функции потерь. Контрастное обучение (или contrastive learning) производится на тройках обучающих примеров — триплетах. Модели показываются два альтернативных перевода одного исходного текста, причём один из этих переводов лучше второго по какой-либо мере сравнения (оценка человека, метрика reward model, синтетические rule-based-порчи и исправления).
Для заданной тройки примеров (source, good, bad) задача обучения в том, чтобы предпочтения модели среди этих вариантов были «выровнены» с предпочтениями датасета. То есть p_model (good) > p_model (bad) с возможными вариациями строгости ранжирования и другими условиями на сами значения вероятностей.
Проблема такой схемы обучения в том, что для оптимизации функции потерь модели достаточно просто расставить варианты переводов в правильном порядке (p(good) > p(bad)). В общем случае это не гарантирует высокое качество перевода с максимальной вероятностью — итогового ответа переводчика.
С этой проблемой мы и столкнулись во время первых запусков обучения алайнмента: нейросеть очень хорошо обучалась ранжированию ответов из датасета, при этом все ответы из датасета становились очень маловероятными, а в пул наиболее вероятных добавлялись случайные и никак не связанные с текстом последовательности.
Другими словами, обучение вырождается в решение задачи ранжирования, а не генерации.
Мы придумали и используем следующее решение: чтобы LLM «не забывала» о том, что надо всё же писать хороший перевод как top-1-гипотезу, явно оставляем в loss-функции supervised-обучение на хороший референс (в данном случае лучшую гипотезу из триплета). С такой регуляризацией модель уже не «геймит» ранжирующую функцию потерь и одновременно оптимизирует две задачи: выравнивание ранжирования с preference-датасетом и supervised learning на хороший референс.
Такое обучение перестало деградировать и дало заметные улучшения относительно базового SFT-чекпоинта.
Зависимость от базовой модели. Если внимательно посмотреть на функцию потерь DPO, можно увидеть, что оптимизируется не само ранжирование (дельта вероятностей), а дельта относительных приращений вероятностей good- и bad-гипотез по сравнению с вероятностями исходного чекпоинта алайнмента.
Это гипотетически делает обучение более эффективным даже на тех примерах, где базовая модель и так хорошо ранжирует триплет. Но при этом, если ранжирование базовой модели было очень плохим, DPO loss проще сделать «чуть лучше» и не добиваться правильной расстановки вероятностей as is.
В нашем случае такое свойство приводило к большой нестабильности обучения: от замены init чекпоинта DPO итоговый результат очень сильно разнился. Иными словами, обучение DPO не было липшицевой функцией, и небольшие изменения в SFT непредсказуемым образом влияли на качество после alignment.
В качестве решения этой проблемы мы перешли на аналогичный DPO loss, работающий на сырых вероятностях модели — CPO (Contrastive Preference Optimization). Это сделало обучение стабильным без ухудшения пикового качества.
Малое количество документных данных. Ещё одной интересной проблемой алайнмента была его «низкоресурсность». Используя редактирования fluency repair и side-by-side-сравнения разных переводов, мы получили датасет порядка десятков тысяч сэмплов.
Небольшой размер этого датасета — ещё один фактор нестабильности сходимости. Модели не хватало данных для хорошей адаптации под задачу, и на практике возникало много галлюцинаций, а также пропусков длинных блоков текста.
Чтобы решить эту проблему, мы воспользовались технологией curriculum learning («обучения с расписанием»). Помимо корпуса документных триплетов, у нас есть корпус аналогичных триплетов из предложений, который мы использовали для старых sentence-level-моделей перевода. Данных предложений здесь на порядок больше. Именно по этой причине обучение на смеси двух типов (предложения + документы) эквивалентно обучению на предложениях.
Но можно делать и по-другому: сначала учиться на предложениях, а уже потом, в самом конце алайнмента, перейти на документы. В таком случае, с одной стороны, переводу документов обучается уже куда более сильная модель (она хорошо переводит предложения), с другой — обучение на документах происходит в самом конце и акцентировано только на них (документы «не размазываются» предложениями).
Здесь можно провести аналогию с обучением математике: если восьмикласснику дать учебник по гармоническому анализу, он ничего не поймёт, даже если будет очень прилежно стараться выучить правила. Но если он предварительно прочитает несколько учебников по алгебре и базовому матанализу, то справится и со сложной задачей. Так и наша LLM: сначала хорошо учится решать задачу на уровне предложений, а потом переходит к более сложной задаче контекстного document-level-перевода.
Выше мы подробно обсудили наш пайплайн дообучения на перевод. А что же получилось в итоге? Насколько хорошо LLM теперь справляется с контекстным переводом и решена ли задача?
Давайте разбираться.
Исторически в машинном переводе применялись автоматические метрики — BLEU, ROUGE, METEOR. Они стали плохо работать несколько лет назад, потому что качество моделей стало достаточно высоким и стало видно, что exact-match-метрики поощряют буквальные переводы без перефразировок.
С появлением BERT-like-моделей и decoder-only-моделей возникли автоматические метрики (машиннообученные под оценки людей). Корреляция таких метрик куда выше, чем у rule-based, но их проблема — в низкой робастности к переводам систем, не похожих на системы из train-выборки этих метрик. Тоже не подходят.
Остаётся оценка людьми как самая честная (и интерпретируемая) метрика качества. Мы используем стандартный в индустрии подход MQM и оценку с помощью асессоров-профессионалов, прошедших тест на знание языка на высоком уровне.
Метрика представляет собой выделение ошибок модели внутри некоторого связного по смыслу сегмента (порядка параграфа). Качество модели в таком случае эквивалентно среднему количеству ошибок на сегмент текста. Чем меньше ошибок, тем лучше, в идеале 0. Разделяют два типа ошибок: грубые (major) и остальные (minor).
В итоге мы получили следующий результат:
System | Major errors |
Yandex-old | 1.07 |
GPT-4o | 0.62 |
YandexGPT | 0.56 |
Human | 0.50 |
По общему количеству ошибок использование LLM дало огромный рост качества: мы практически в два раза снизили среднее число грубых ошибок на сегмент и сильно приблизились к уровню человеческих переводов.
А как изменились сами переводы? Переход на LLM и контекстную модель заметен и «на глаз»: текст перевода на русском стал гораздо более гладким и легкочитаемым, модель использует естественные формулировки и порядок слов, хорошо понимает идиомы. Другими словами, перевод стал менее буквальным и более литературным.
Вот несколько примеров.
“The Forsyte Saga”, John Galsworthy
Исходный текст: He himself had married a good deal of money, of which, it being then the golden age before the Married Women's Property Act, he had mercifully been enabled to make a successful use.
Новая LLM-модель: Он сам женился на богатой женщине, и, поскольку это был золотой век до принятия Закона о собственности замужних женщин, он, к счастью, смог успешно распорядиться деньгами.
NMT-перевод: Сам он женился на большой сумме денег, которыми, поскольку в то время был золотой век до принятия Закона о собственности замужних женщин, он, к счастью, смог успешно распорядиться.
“Farther Away”, Jonathan Franzen
Исходный текст: His intemperate youthful idealism, for which he'd done five years of hard time in Siberia, provided the impetus for Crime and Punishment and The Devils; his sensualism and compulsive nature and caustic rationality were the personally destabilizing forces against which he subsequently erected the fortress of The Brother Karamazov and lesser redoubts like The Gambler.
Новая LLM-модель: Его необузданный юношеский идеализм, из-за которого он провёл пять лет в Сибири, послужил толчком к написанию «Преступления и наказания» и «Бесов»; его чувственность, навязчивые идеи и язвительная рациональность были личностными дестабилизирующими факторами, против которых он впоследствии возвёл крепость «Братьев Карамазовых» и менее значимые укрепления, такие как «Игрок».
NMT-перевод: Его необузданный юношеский идеализм, за который он отсидел пять лет в Сибири, послужил толчком для создания «Преступления и наказания» и «Дьяволов»; его чувственность, компульсивный характер и язвительная рациональность были дестабилизирующими силами, против которых он впоследствии возвел крепость «Брата Карамазова» и меньшие редуты, такие как «Игрок».
“The Rebel Angels”, Robertson Davies
Исходный текст: The recapitulation is very similar to the exposition, although it is significantly more agitated. There is a grand pause during the first thematic section that leads into a massive climax. The second theme is also considerably shortened. The march theme from the introduction leads straight into an epic coda that features march rhythms and multiple high points in the orchestral texture, before ending on an E major chord.
Новая LLM-модель: Реприза очень похожа на экспозицию, хотя и значительно более взволнованная. В первой тематической части есть большая пауза, которая приводит к мощной кульминации. Вторая тема также значительно сокращена. Маршевая тема из вступления переходит прямо в эпическую коду, в которой присутствуют маршевые ритмы и несколько кульминаций в оркестровой фактуре, прежде чем закончиться на аккорде ми-мажор.
NMT-перевод: Краткое изложение очень похоже на экспозицию, хотя и значительно более эмоциональное. В первом тематическом разделе есть большая пауза, которая приводит к кульминации. Вторая тема также значительно сокращена. Маршевая тема из вступления сразу переходит в эпическую коду, в которой присутствуют маршевые ритмы и множество ярких моментов в оркестровой текстуре, а затем заканчивается аккордом ми мажор.
Сейчас новая модель уже доступна в нескольких наших сервисах:
— в Поиске, где помогает переводить зарубежные веб-страницы по наиболее популярным запросам;
— в Нейропереводчике, который доступен на новой вкладке Яндекс Браузера и помогает переводить тексты, документы и картинки в формате диалога;
— в Умной камере в приложении Яндекс и в Яндекс Браузере;
Скоро этот список пополнят и другие наши сервисы и продукты.