В части 1 этой серии мы глубоко погрузились в фундаментальные концепции «внимания в контексте моделей Sequence-to-Sequence (Seq2Seq). Наша цель состояла в том, чтобы изучить, как мы можем перейти от традиционных моделей Seq2Seq, основанных на рекуррентных нейронных сетях (RNN), к новой парадигме, которая использует уровни внимания для задач генерации — задач, обычно выполняемых RNN.

(ссылка на часть 1)

Продолжая наше путешествие во второй части, мы сосредоточимся на Наивном самоконтроле, ключевом шаге к полному пониманию архитектуры революционной модели «Трансформер».

Вопрос: Все ли нам нужно внимание?

На этот вопрос ответила известная статья «Внимание — это все, что вам нужно.»

В предыдущем блоге мы обратили внимание на модель Seq2Seq (рис. 1). Обратите внимание на горизонтальные соединения. Несмотря на то, что к каждому состоянию декодера добавляется внимание, информация все же перемещается последовательно.

Рис. 1. Основные сведения о ключах, векторах запросов и оценках внимания. Внимание к последовательной модели

Теперь у нас есть внимание, нужны ли нам эти последовательные (или рекуррентные) соединения (рис. 1)? Внимание может захватывать любую информацию из входной строки. Таким образом, вместо того, чтобы полагаться на повторение для сбора информации о входной строке, можем ли мы полностью полагаться на внимание для сбора этой информации (рис. 2, последовательная информация зачеркнута)?

Рисунок 2. Пересечение последовательных соединений. Избавьтесь от них, чтобы получить полностью функциональную сеть внимания

Можем ли мы преобразовать RNN в модель, основанную на внимании?

Для этого:

  1. Внимание будет иметь доступ к каждому временному шагу (можно сделать).
  2. Необходимо индексировать каждый временной шаг ввода (можно сделать).
  3. Необходимо индексировать каждый временной шаг предыдущего вывода, чтобы увидеть, какие слова были предсказаны ранее (можно сделать).

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

  1. Проблема 1: согласно рисунку 1 все состояния декодера s(l) могут получить доступ к состояниям кодера h(t), но не могут получить доступ к состояниям декодера перед ними s(l-1). Это затрудняет понимание того, что декодер уже произвел в качестве вывода.
  2. Проблема 2: Каждое состояние энкодера стало независимым от других состояний энкодера (мы пересекли соединения и удалили зависимости). Такого в предложениях нет

Давайте посмотрим, как мы можем построить полную модель, основанную на внимании, имея в виду проблемы, описанные выше.

Рисунок 3. Основы создания ключей, запросов и значений входными слоями, а также взаимодействие запроса на шаге 1 с ключами на всех временных шагах

  • Допустим, у нас есть весовая матрица (W), которая является общей для всех слоев на входном уровне. Например, на уровне 1 три слоя h(1), h(2), h(3) совместно используют W (рис. 3). Из уравнения 1 также видно, что h(t) меняется в зависимости от временного шага, но W не имеет индекса, что означает, что он общий для всех трех слоев.

  • Существует еще одна функция, применяемая к h(t), называемая (уравнение 2), которая дает нечто, называемое значением, на временном шаге «t». v(t) — некоторая функция v, примененная к h(t). Эта функция представляет собой просто линейное преобразование h(t) в v(t) (уравнение 3). Опять же, матрица W(v) постоянна и, как и W, применяется ко всем h(t), что означает, что W(v) также является общим.

  • Мы также выведем ключи (k). Это также будет некоторая функция от h(t). Просто для простоты предположим, что функция представляет собой линейное преобразование между h(t) и k(t), заданное весовой матрицей W(k), которая снова является общей для всех временных шагов (уравнение 4).

  • Вместо того, чтобы декодер создавал векторы запроса (как в моделях Seq2Seq), здесь каждый временной шаг h(t) также будет создавать вектор запроса (рис. 3), который снова будет линейной функцией от h(t) и следует структура, аналогичная уравнениям 3 и 4, с общей матрицей весов W(q) (уравнение 5).

  • Как и ранее с моделью Seq2Seq (рис. 2), предположим, что и теперь запрос каждого другого шага может индексировать (или обмениваться данными) с ключом каждого другого шага, включая самого себя (т. е. соединения q1 с k1, рис. 3). .

Рисунок 4. Визуализация скалярного произведения между запросом на временном шаге 1 и ключами на всех временных шагах

  • Это означает, что мы можем вычислить скалярные произведения между каждым q(t) и каждым k(t) (уравнение 6, рисунок 4), что дает нам оценку внимания. Таким образом, для 3-кратных шагов у нас будет 9 оценок внимания. Это связано с тем, что временной шаг «l» может варьироваться от 1 до 3, а временной шаг «t» может варьироваться от 1 до 3.
  • Пропустите каждый из них через softmax (уравнение 7). В Softmax мы нормализуем клавиши. для каждого временного шага (l), принадлежащего запросу, мы нормализуем временные шаги «t».

Рисунок 5. Визуализация расчета вектора контекста для временного шага «l» = 1 (временные шаги для ключей обозначены «t», а для запросов — «l»)

  • Наконец, чтобы привлечь внимание к временному шагу 1 (уравнение 8, рис. 6), просто просуммируйте все временные шаги (t). это даст вектор контекста (также называемый вниманием) на временном шаге (l) (рис. 5).

Как обсуждалось выше для временного шага (l = 1), мы можем сделать аналогичный расчет для всех временных шагов (l = 1, 2 или 3).

Уравнения с 1 по 8 и рисунки с 3 по 6 описывают так называемый механизм внутреннего внимания. Этот механизм внутреннего внимания создает контекстный вектор/внимание на каждом временном шаге. Таким образом, это можно рассматривать как 1 слой, объединяющий информацию по временным шагам!!

Можем ли мы построить полноценную сеть из таких слоев само-внимания?

Да мы можем. Сложите их стопкой (рис. 6).

Рисунок 6. Сложение отдельных слоев внутреннего внимания

Зачем их складывать? что мы получаем, складывая?

Мы все больше и больше обрабатываем последовательность, и, возможно, мы сможем преобразовать одно предложение, например, предложение на французском языке, в предложение на английском языке. В конце концов, как-нибудь расшифруйте его, чтобы получить ответ (о нем позже).

Это была основная идея Само-Внимания!! Но, теперь есть другой вопрос. Как перейти от внимания к себе к созданию трансформаторов?

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

Ниже приведены ограничения уровней внутреннего внимания, которые необходимо учитывать при создании преобразователей:

  • Самовнимание не имеет представления о близости во времени (например, x1,x2 и x3 обрабатываются полностью параллельно, независимо от их порядка). Скажем, если мы поменяем их порядок, слой само-внимания не будет заботиться. Но в естественном языке порядок слов имеет значение. Эта проблема решается так называемым позиционным кодированием.
  • На рис. 6 мы видели, что у каждого слоя самоконтроля есть 1 ключ, значение и запрос для каждого временного шага. Но зачем ограничиваться только одним ключом, запросом или парой значений? Этот ключ, значение и запрос можно рассматривать как фильтры в сверточных сетях, и, поскольку мы используем множество фильтров для каждого слоя, мы можем аналогичным образом использовать множество пар ключ, запрос и значение.Это решено. с помощью чего-то, что называется многоголовым вниманием.
  • Как мы можем добавить нелинейности в слои само-внимания? Рассмотренные выше были полностью линейными. Вычисление a(l) (уравнение 8) было линейным по значениям v(t), значения являются линейными функциями h(t) (уравнение 3).
  • Поскольку механизм внимания также может заглянуть в будущее (например, запросить на временном шаге 1, может заглянуть в ключи на временном шаге 2 и 3 и т. д.). Однако мы пытаемся предсказать будущее, так как же мы можем заглянуть в него? Поэтому само-внимание не способно отличить прошлое от будущего. Это решается чем-то, что называется Замаскированное внимание.

Это все для части 2!!

В третьей части этой серии статей я подробно рассмотрел проблемы наивного внимания к себе.

(ссылка на часть 1)

(ссылка на часть 3)

(ссылка на часть 4)

Если хотите, прочитайте и похлопайте!!

LinkedIn