Эра рекуррентных сетей и классический Seq2Seq

В 2014 году исследователи из Google предложили архитектуру Sequence-to-Sequence (Seq2Seq). До этого машинный перевод опирался на статистические методы, где текст дробился на отдельные фразы и собирался по громоздким вероятностным словарям. Seq2Seq объединила две нейросети под названиями энкодер и декодер, обучая их работать вместе как единую систему.

Энкодер принимал исходное предложение слово за словом, используя рекуррентные слои (RNN, LSTM или GRU). Каждый шаг обновлял скрытое состояние сети с учетом текущего слова и накопленного контекста. В конце предложения последнее скрытое состояние энкодера объявлялось контекстным вектором всей фразы. Этот числовой массив передавался декодеру, который последовательно генерировал слова на целевом языке, опираясь на вектор смысла и ранее выданные токены.

Главным слабым местом раннего Seq2Seq стало так называемое бутылочное горлышко. Контекстный вектор имел строго фиксированный размер, обычно от 512 до 1024 чисел. Упаковать туда предложение из пяти слов получалось без потерь. Когда на вход подавался сложный абзац из сорока слов с придаточными предложениями и деепричастными оборотами, емкости вектора переставало хватать. Сеть физически забывала начало предложения к моменту, когда добиралась до точки, из-за чего перевод длинных текстов содержал грубые смысловые пробелы.

Внедрение механизма внимания

Решение проблемы бутылочного горлышка в конце 2014 года предложила группа Дмитрия Богданова. Идея заключалась в сохранении всех промежуточных состояний энкодера на каждом шаге, а не только финального вектора.

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

Появление архитектуры Transformer

В 2017 году команда исследователей Google опубликовала статью «Attention Is All You Need». Авторы полностью убрали рекуррентные и сверточные слои, оставив механизм внимания фундаментом всей модели. Новую архитектуру назвали Transformer.

Рекуррентные сети обрабатывали текст строго последовательно, шаг за шагом. Это делало невозможным параллельное обучение на графических процессорах. Обучение больших моделей на миллионах параллельных текстов занимало месяцы. Transformer стал обрабатывать все слова предложения одновременно, вычисляя связи каждого токена со всеми остальными за одну матричную операцию.

Как устроен Self-Attention

Внутри трансформера каждое входное слово преобразуется в три вектора через умножение на обучаемые матрицы весов.

  • Вектор запроса (Query) отражает то, какую информацию данное слово ищет в окружающем контексте.
  • Вектор ключа (Key) служит идентификатором содержимого слова для других токенов.
  • Вектор значения (Value) хранит непосредственное смысловое наполнение слова, которое будет передано дальше.

Чтобы выяснить связь между токенами, вектор запроса одного слова скалярно умножается на векторы ключей всех остальных слов фразы. Полученные значения делятся на квадратный корень из размерности векторов для стабилизации градиентов и пропускаются через Softmax. Итоговый результат умножается на векторы значений. На выходе получается обогащенный контекстом вектор каждого слова.

Multi-Head Attention и позиционное кодирование

Одного внимания сети недостаточно, поэтому вычисления разделяют на несколько параллельных потоков, называемых головами (heads). В оригинальной модели использовалось восемь таких голов. Одна голова учится отслеживать местоименные связи, другая следит за глагольным управлением, третья связывает подлежащее со сказуемым. Результаты всех голов объединяются и проецируются в общее скрытое пространство.

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

Характерные ошибки нейросетевого перевода

Современные нейросети переводят гладко и литературно, однако архитектура Transformer порождает специфические сбои, которые почти не встречались в старых словарных переводчиках.

  • Галлюцинации возникают при обработке редких или зашумленных фраз, когда модель уверенно генерирует грамматически безупречный текст, полностью отсутствующий в оригинале.
  • Пропуск отрицаний случается в длинных периодах, поскольку механизм внимания иногда распределяет веса на смысловые существительные и пропускает маленькую служебную частицу вроде «not».
  • Гендерные перекосы проявляются при переводе с языков без грамматического рода, где профессии инженера или врача по умолчанию переводятся в мужском роде, а медсестры или домработницы в женском из-за преобладания таких ассоциаций в обучающей выборке.
  • Буквальный разбор редких идиом происходит в ситуациях, когда устойчивое выражение распадается на прямое значение составляющих его слов.

Частые вопросы

Зачем в современных переводчиках используется токенизация Byte-Pair Encoding?

Словарный запас модели ограничен объемом оперативной памяти. Алгоритм BPE дробит редкие и незнакомые слова на частотные подслова и морфемы, позволяя сети переводить неологизмы и сложные словоформы без появления меток неизвестного слова.

Почему при зацикливании переводчик повторяет одну и ту же фразу?

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

Как метрики BLEU и COMET оценивают качество нейроперевода?

Метрика BLEU подсчитывает процент совпадения n-грамм между машинным переводом и эталонным текстом человека. Более современная метрика COMET использует предобученные нейросети для оценки семантической близости векторов двух предложений, допуская синонимичные замены слов.

Чем архитектура BERT отличается от классического переводческого трансформера?

Модель BERT использует только блок энкодера для анализа текста и извлечения признаков. Полноценный машинный перевод требует наличия декодера для авторегрессионной генерации последовательности, поэтому переводчики строятся на архитектурах Encoder-Decoder либо авторегрессионных Decoder-Only моделях.