Модель seq2seq в машинном переводе | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
Алгоритмы и структуры данных Team Lead Архитектура и шаблоны проектирования Разработчик IoT C# Developer. Professional PostgreSQL Разработчик на Spring Framework
-5%
Flutter Mobile Developer NoSQL iOS Developer. Basic
-10%
C++ Developer. Basic C++ Developer. Professional Android Developer. Professional Microservice Architecture Unity Game Developer. Professional Базы данных Node.js Developer React.js Developer Специализация Java-разработчик
-25%
Web-разработчик на Python Framework Laravel Cloud Solution Architecture Vue.js разработчик Интенсив «Оптимизация в Java» Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Супер-интенсив "Tarantool" PHP Developer. Basic
Инфраструктура
Мониторинг и логирование: Zabbix, Prometheus, ELK Administrator Linux. Professional Дизайн сетей ЦОД Разработчик IoT PostgreSQL Экспресс-курс "Версионирование и командная работа с помощью Git"
-30%
Microservice Architecture Highload Architect Специализация Administrator Linux
-25%
Network engineer Cloud Solution Architecture Внедрение и работа в DevSecOps Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Супер-интенсив «СУБД в высоконагруженных системах» Супер-интенсив "Tarantool" Network engineer. Basic
Корпоративные курсы
Безопасность веб-приложений IT-Recruiter Дизайн сетей ЦОД Компьютерное зрение Разработчик IoT Вебинар CERTIPORT Machine Learning. Professional
-6%
NoSQL Пентест. Практика тестирования на проникновение Java QA Engineer. Базовый курс Руководитель поддержки пользователей в IT
-8%
SRE практики и инструменты Cloud Solution Architecture Внедрение и работа в DevSecOps Супер-практикум по работе с протоколом BGP Infrastructure as a code Супер-практикум по использованию и настройке GIT Промышленный ML на больших данных Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes» BPMN: Моделирование бизнес-процессов Основы Windows Server
Специализации Курсы в разработке Подготовительные курсы Подписка
+7 499 938-92-02

Модель seq2seq в машинном переводе

DataScientist_Deep_26.07_Site.png

Ключевая идея модели заключается в том, что мы рассматриваем входные данные (предложение на языке А) и выходные данные (предложение на языке Б) как последовательности слов.

График_1.png Таким образом, алгоритм перевода состоит из следующих основных этапов:

1) Энкодер (enc) последовательно считывает входное предложение и выдает вектор контекста «С». На рисунке передаче вектора контекста от энкодера к декодеру соответствует стрелка h4 → dec1.

2) Получив компактное описание входного предложения в виде «С», декодер (dec) генерирует слова на другом языке последовательно. Отдельным «словом» в словаре языка Б обозначим начало предложения «BOS» и конец предложения «EOS».

Схематично этот процесс представлен на рисунке.

Рассмотрим декодер подробнее

Его можно представить в виде следующей функции: Screenshot_4.png

Здесь ht — вектор скрытого состояния декодера на шаге t (можно сказать, что декодер — такая «stateful» функция от предыдущего слова), pt — распределение по словам на шаге t, w(t-1) это слово, которое выбрано в качестве основной гипотезы исходя из распределения p(t-1) на шаге «t-1».

Для энкодера аналогичное уравнение выглядит следующим образом: Screenshot_5.png

Обратите внимание, что в качестве финального вектора контекста C выбирается последнее скрытое состояние энкодера, в данном случае h4. В случае более сложных подходов (например, с добавлением механизмов т.н. «внимания») схема чуть усложнится.

В чем преимущество такого подхода?

Прежде всего тем, что количество параметров модели не зависит от длины предложения: одни и те же модели (enc и dec) работают на всех шагах по времени.

В завершение, вернемся к вопросу выбора правильной последовательности слов w1,w2,...wn, учитывая что декодер выдает только вероятности слов p1,p2,...pn.

Мы можем выбрать любое слово w(t-1) из категориального распределения p(t-1) над словарём, получить новое скрытое состояние ht и новое распределение pt. Выбору этого слова будет соответствовать определённая вероятность, которую будем обозначать p(t-1) (w(t-1)).

Выполняя на каждом шаге такую процедуру, получаем суммарную вероятность генерации последовательности слов: Screenshot_6.png

Простейший способ генерировать последовательность — выбирать на каждом шаге самое вероятное слово wt из распределения pt («greedy decoding»). Это, однако, не гарантирует нам, что мы найдём именно ту последовательность слов, которая максимизирует P(w1,w2,...wn) для заданного энкодера и декодера.

Дополнительные материалы

Есть вопрос? Напишите в комментариях!

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
1 комментарий
0

Решила посмотреть, какой материал есть у Вас для обучения анализу больших данных. Попозже почитаю статью. Но: Ваши дизайнеры - очень творческие личности. Интересные изображения к статьям позволяют остановиться и внимательно прочитать хотя бы название и краткое описание (релиз, дескрипшен) статьи. Возникло желание разобраться в методах, а потом, после обучения, найти и посмотреть фильм, откуда Вы взяли кадр к статье. Совёнок на плече, похоже, какого-то ученого на изображении вносит чувство разрядки и желания читать статью:)

Для комментирования необходимо авторизоваться