В этом посте я расскажу вам о концепции внимания и объясню архитектуру Transformer, как она была представлена в статье «Внимание — это все, что вам нужно». Давайте погрузимся, хорошо?
Предварительные требования: Знакомство с нейронными сетями + общее понимание архитектуры кодировщик-декодер.
Переход от повторения к вниманию: Что побудило преобразователя?
RNN и CNN долгое время были в основе каждой работающей модели трансдукции. Как правило, они использовались для построения архитектуры кодер-декодер, в которой обе части связаны через механизм внимания. Однако, несмотря на производительность, эти архитектуры требуют больших затрат с точки зрения обучения из-за присущего им последовательного характера. Я объясню, почему в следующем параграфе.
Рекуррентные модели назначают позиции каждому маркеру из входных и выходных последовательностей. Для каждой такой позиции и на каждом временном шаге t вычислений создается скрытое состояние hₜ с использованием: входных данных во время t и скрытого состояния из предыдущего временного шага.
Эта последовательная работа RNN создает проблему, поскольку делает невозможным распараллеливание в одном и том же обучающем примере. Для очень длинных последовательностей возникают проблемы с памятью, поскольку выполнение этих моделей требует сохранения ряда скрытых состояний для всех временных шагов.
По указанным выше причинам авторы книги «Внимание — это все, что вам нужно» представили Transformer: архитектуру, которая опирается исключительно на внимание без необходимости повторения или свертки.
Если вам нужна дополнительная информация об истории, ведущей к Трансформеру, Винитхавн рассказывает убедительную историю об этом в своей статье.
Представляем знаменитый трансформер: его архитектуру и компоненты:
Если бы у Трансформера была учетная запись Facebook, рисунок ниже был бы его аватаркой. На первый взгляд, конечно, не самые лестные цифры, но я расскажу вам об этом через минуту!
А пока давайте смело взглянем на архитектуру и определим, какие компоненты мы можем извлечь из нее.
Во-первых, это архитектура кодера-декодера (обозначена серыми прямоугольниками), в которой используются два типа слоев: уровни прямой связи. (синий) и Слои внимания (оранжевый). Во-вторых, входные и выходные данные представлены как встраивания в дополнение к использованию позиционных кодировок. Слой softmax (выделен зеленым) используется для получения выходных данных.
Далее я объясню каждый из компонентов, выделенных выше.
Внимание:
Технически внимание — не что иное, как функция; тот, который соединяет различные части последовательности. На практике функция сопоставляет пары ключ-значение и запросы (ключи, значения и запросы являются векторами).
Значение ключей, запросов и значений аналогично тому, как они используются в поисковых системах:
- Запрос Q — это вектор, для которого вы вычисляете внимание.
- Ключ K — это вектор, по которому вы вычисляете внимание.
- Значение V аналогично наиболее подходящим результатам по вашему запросу.
Самостоятельное внимание — это когда механизм внимания используется для «связывания различных позиций из одной и той же последовательности для вычисления представления последовательности». То есть Q, V и K происходят из одного и того же места/входной последовательности.
Расчетное произведение внимания
Есть два широко используемых типа внимания: аддитивное и мультипликативное/точечное. Мультипликативное внимание, реализованное Преобразователем, вычисляется следующим образом:
Где:
- Sqrt(dk) используется для масштабирования: предполагается, что чем больше значения dk (размерность Q и K), тем больше скалярное произведение. Таким образом, последний попадает в область кривой softmax, где градиент близок к нулю.
- Использование Softmax заключается в получении значений от 0 до 1, чтобы последние можно было использовать в качестве весов.
Внимание с несколькими головками
Вместо того, чтобы использовать вычисление внимания с помощью скалярного произведения, Vaswani et al. пришли к выводу, что лучше использовать несколько головок, которые выполняют одну и ту же операцию с разными линейными проекциями одних и тех же запросов, ключей и значений.
Другими словами, вместо использования одного набора значений для ключей, значений и запросов в документе предлагается использовать несколько таких значений.
Принцип работы многоголового внимания следующий:
hголовы сложены вместе. Их выходные данные объединяются и также проецируются:
Значения K, Q и V, которые принимают головы, немного отличаются и сначала претерпевают некоторые преобразования. K, Q и V «линейно проецируются с помощью различных заученных линейных проекций», прежде чем они будут загружены в каждую головку.
Почему многоголовое внимание?
Идея описанных выше преобразований заключается в том, что модель будет «обращаться к информации из разных подпространств представления в разных позициях». Другими словами, каждая головка получит разные версии Q, V и K.
Эта статья здесь подробно объясняет интуицию и математику, лежащую в основе многоголового внимания.
Стеки кодера-декодера:
Архитектуры кодер-декодер лежат в основе большинства конкурирующих моделей преобразования.
Помните изображение профиля Transformer FB? Кодер — это серая рамка слева от этого рисунка.
- Каждый уровень состоит из двух подуровней: сеть прямой связи + механизм самоконтроля с несколькими головками.
- Nx — количество одинаковых слоев, составляющих кодирующую часть преобразователя.
- Используются остаточные связи и нормализация слоев.
Уровень декодера (серый прямоугольник справа) аналогичен уровню кодировщика, за исключением следующих изменений:
- Уровень декодера имеет один дополнительный подуровень: подуровень внимания с несколькими головками (второй прямоугольник оранжевого цвета), который обрабатывает выходные данные стека кодировщика.
- Маскировка добавляется к слою самоконтроля (оранжевый прямоугольник в нижней части декодера), чтобы гарантировать, что декодер обращает внимание только на предыдущие позиции, а не на последующие.
Позиционное кодирование:
Поскольку нет повторения или свертки, необходим другой метод для учета порядка последовательности. Для этого эти позиционные кодировки используются и суммируются на входы кодировщика и декодера.
На практике эти кодировки можно выучить или исправить. В контексте данной статьи последняя реализуется с помощью функций синуса и косинуса:
Где:
- Pos – это позиция ввода.
- i – размер, в котором каждый размер соответствует синусоиде.
Интуиция, стоящая за этим выбором позиционного кодирования, основана на предположении, что при использовании синусоидальных функций модель будет:
- «легко научиться обслуживать по относительным позициям».
- «экстраполировать последовательности на более длинные последовательности, чем те, которые встречаются во время обучения».
Вложения, Softmax и уровни прямой связи:
Встраивания
Нейронные сети работают с числами. При работе с моделями преобразования вложения являются обязательными для преобразования входных и выходных токенов в их векторное представление измерения dmodel.
Софтмакс
Функция softmax необходима для преобразования вывода декодера в вероятности. Последние используются для интерпретации вывода декодера с учетом ранее построенного словаря.
Уровни прямой связи
Полносвязные слои с прямой связью используются вместе с функцией активации ReLU.
3 различных способа использования многоголового внимания в трансформаторе:
Внимание кодировщику-декодеру
Запросы поступают с уровня декодера, а ключи и значения поступают с выходных данных кодировщика, как показано средним оранжевым прямоугольником в декодере. Это позволяет каждой позиции в декодере учитывать все позиции во входной последовательности.
Самовнимание в кодировщике
Это внимание обозначено оранжевой рамкой в энкодере. Запросы, ключи и значения поступают из одного и того же места, которое в данном случае является выходом предыдущего уровня кодировщика.
Самовнимание в декодере
Подобно само-вниманию в кодировщике, запросы, ключи и значения поступают из предыдущего уровня декодера. Оранжевая рамка в нижней части декодера представляет этот тип внимания. Цель состоит в том, чтобы каждая позиция декодера соответствовала самой себе и предыдущим позициям.
При этом вы можете быть уверены, что получили обзор важных концепций, представленных в документе «Внимание — это все, что вам нужно».
Некоторое повторение (и много терпения) может потребоваться для закрепления новых концепций. Удачи и приятного обучения!
Если у вас есть предложения или комментарии, вы можете связаться с Linkedin или Medium.
Ссылка:
Васвани и др. (2017). Внимание — это все, что вам нужно.