В этом посте я расскажу вам о концепции внимания и объясню архитектуру 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). Внимание — это все, что вам нужно.