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

Курсы

Программирование
Backend-разработчик на PHP
-9%
Алгоритмы и структуры данных
-9%
Team Lead
-6%
Архитектура и шаблоны проектирования Разработчик IoT
-13%
C# Developer. Professional
-9%
HTML/CSS
-11%
C# ASP.NET Core разработчик
-5%
Kotlin Backend Developer
-8%
iOS Developer. Professional
-8%
Java Developer. Professional JavaScript Developer. Professional Базы данных Android Developer. Professional Framework Laravel Cloud Solution Architecture Highload Architect Reverse-Engineering. Professional Vue.js разработчик Agile Project Manager VOIP инженер Scala-разработчик Супер-практикум по использованию и настройке GIT Symfony Framework Java Developer. Basic Unity Game Developer. Professional Супер-интенсив Azure
Инфраструктура
Экспресс-курс «IaC Ansible»
-10%
Administrator Linux.Basic
-10%
Мониторинг и логирование: Zabbix, Prometheus, ELK
-10%
Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes»
-30%
Administrator Linux. Professional
-6%
Дизайн сетей ЦОД
-13%
NoSQL Основы Windows Server MS SQL Server Developer Инфраструктурная платформа на основе Kubernetes Cloud Solution Architecture Highload Architect Разработчик голосовых ассистентов и чат-ботов VOIP инженер Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Супер-интенсив "Tarantool"
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Лучевой поиск для seq2seq модели

DS_Deep_16.08_Site.png

В задачах машинного перевода часто используется модель seq2seq (sequence-to-sequence). Данная модель в режиме тестирования последовательно выдаёт распределения по вероятностям слов на текущем шаге t. Более подробно можно прочитать в предыдущей заметке. Далее я буду предполагать знакомство с этой моделью.

Сейчас нас будет интересовать механизм работы модели в режиме тестирования. Поскольку модель выдаёт не детерминированные предсказания, а только распределения по словам, то существует очень много последовательностей слов Снимок экрана 2018-08-16 в 17.47.33.pngкоторые будут иметь схожую вероятность (вероятность последовательности – это произведение вероятностей отдельных слов). Напрямую перебрать все последовательности нереально: их Снимок экрана 2018-08-16 в 17.48.43.png Где |V| – это размер словаря, а T – длина предложения. Поэтому прибегают к эмпирическим методам поиска.

Одним из самых распространенных методов является «лучевой» поиск

Обозначения: Снимок экрана 2018-08-16 в 17.53.28.png

Псевдокод: 1. Выбираем размер «луча» k. 2. Выбираем функцию оценки для текущего шага f. 3. Инициализируем общий счётчик оценки A размером T х k 4. Инициализируем матрицу скрытых состояний декодера Снимок экрана 2018-08-16 в 17.55.36.png размером T х k 5. Инициализируем T матриц Снимок экрана 2018-08-16 в 17.56.23.png размером k х |V| 6. Непосредственно поиск:

По t=0,..T: По i=1,..k: По всем возможным словам v=1,..V: Снимок экрана 2018-08-16 в 17.57.27.png Снимок экрана 2018-08-16 в 17.59.51.pngИспользование «луча» размером 2-10 обычно позволяет существенно увеличить качество перевода для seq2seq модели. Отметим, что при этом линейно будет расти вычислительная сложность.

Дополнительные материалы можно посмотреть здесь: 1. Поиск в пространстве состояний 2. A Continuous Relaxation of Beam Search for End-to-end Training of Neural Sequence Models 3. Формулы из заметки можно взять здесь.

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

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

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

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

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