В серии постов, обобщающих мою кандидатскую диссертацию «Адаптация предметной области для нейромашинного перевода», здесь я рассказываю о своей работе по простой адаптации нейронных сетей к новым данным.

Возможно, самый простой способ адаптировать любую нейронную сеть — просто продолжить ее обучение, но на новом наборе данных. Для машинного перевода это новые пары предложений:примеры предложений и их переводы.

Возможно, вы хотите, чтобы ваша система перевода новостей могла переводить научные статьи, отличающиеся стилем и лексикой. Если у вас есть предложения из научных статей, вы можете просто продолжить обучение на них своей системы перевода новостей.

Но насколько хорошо это действительно работает? Я узнал больше, разрабатывая системы для перевода биомедицинских статей.

Повторная адаптация домена для биомедицинского перевода

Я начал с модели, обученной переводить очень широкую область, новостные репортажи. Новостные сообщения не имеют ничего общего с биомедицинскими предложениями, которые я хотел перевести, но, что важно, доступно множество данных: миллионы доступных примеров перевода.

Затем я продолжил обучение на более релевантных данных из различных научных источников — от документов по экологии до руководств по охране здоровья и списков побочных эффектов лекарств. В этом домене меньше доступных источников, но все еще есть много достаточно релевантных предложений, чтобы показать модель.

И, наконец, я продолжил обучение на данных, которые были очень близки к тому, что я хотел: биомедицинские научные статьи. С такой конкретной целевой областью доступных данных для обучения мало — конечно, недостаточно для обучения хорошей модели перевода с нуля, но достаточно для настройки системы.

Итак, мой очень простой подход к «повторной тонкой настройке» заключался в следующем:

  1. Общий
  2. В домене
  3. Очень в домене

Я также попытался начать с внутренних данных, а затем перейти к общим, а затем вернуться к внутренним данным в порядке 2–1–2–3. Удивительно, но это сработало еще лучше — возможно, модель сможет извлечь больше пользы из широкой общей области, когда у нее будет «представление» о том, как выглядит язык, исходя из данных в предметной области.

Насколько хорошо это работает?

Насколько хорошо работают все эти методы, зависит от того, что именно вы измеряете. Если вас интересует только качество перевода в известном целевом домене — в данном случае научных медицинских статей, — этот подход к точной настройке работает хорошо.

Насколько хорошо это работает с разными целевыми доменами?

Но что, если есть некоторая неопределенность в отношении целевого домена? Может быть, вы предполагали, что вас будут волновать только результаты, скажем, по физиотерапии, но на самом деле вы также хотите перевести некоторые статьи по психологии.

Именно здесь вы видите преимущество обучения на больших общих и предметных наборах данных перед окончательным этапом настройки. Они, скорее всего, будут содержать примеры других типов языка.

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

Как оказалось, вместо этого системы склонны забывать любые домены, на которых они только что не обучались!

Насколько хорошо это справляется с ошибочными данными настройки?

Как говорится, мусор на входе означает мусор на выходе.

Особой проблемой является избегание мусора при обучении нейронных систем машинного перевода. К каждому обучающему примеру предъявляются требования:

  1. Одно предложение должно иметь смысл на одном языке
  2. Другое предложение должно иметь смысл на другом языке.
  3. Оба предложения должны быть хорошими и полными переводами друг друга.

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

С другой стороны, существуют риски, если в данных настройки достаточно часто появляются определенные «мусорные» шаблоны. Например, я заметил, что названия статей часто присутствуют только в данных обучения английскому языку. Итак, у меня было много настраиваемых пар предложений, которые выглядели так:

[Название статьи] Первое предложение статьи на английском языке-› Первое предложение статьи на немецком языке

Получается, что система, настроенная на подобные предложения, учится распознавать заголовок… и учится, что его перевод вообще не должен иметь ничего общего с заголовком. Таким образом, у меня получилось много таких переводов:

[Title Of Paper] –› Полная чушь на немецком языке

Забывание и выставление мусора — что делать?

Я обнаружил, что могу получить довольно хорошие биомедицинские переводы, постепенно направляя систему ко все более и более конкретным областям. Но у такого подхода есть свои риски:

  • Системы забывают, как переводить менее конкретные домены
  • Системы становятся чрезмерно подверженными любым проблемам с конкретными данными настройки.

В следующей главе моей диссертации я рассмотрю решения этих проблем при адаптации машинного перевода.