На заре НЛП, везде, где есть долгосрочные зависимости, мы страдали от проблемы исчезающего градиента даже при использовании RNN, LSTM. Эти модели обрабатывают последовательности ввода одну за другой, слово за словом, без распараллеливания процесса. Трансформатор обеспечивает распараллеливание, заменяя повторение вниманием и кодируя позицию символа в последовательности.

Знакомство с вниманием:

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

Например, для каждого из входных скрытых состояний x1, x2,… .xk мы изучаем набор весов от w1 до wk, который измеряет, как ввод помогает ответить на запрос, и это генерирует вывод.

out = ∑ wixi

Внимательно, мы пытаемся построить контекстный вектор, который дает нам информацию глобального уровня обо всех входных данных, то есть мы вычисляем сходство каждого входа со всеми другими входными токенами, которые дают общую информацию и контекст.

В любой функции внимания у нас есть три основных ключевых слова: запрос, ключ и значение. Запрос - это не что иное, как входное слово. Ключ и значение также являются входным токеном. Мы берем запрос и каждый ключ, вычисляем сходство между ними, чтобы получить вес. Часто используемые функции подобия - это склейка точечного продукта, детектор. Следующим шагом является нормализация этих весов с помощью функции softmax. И, наконец, эти веса в сочетании с соответствующими значениями и получают последнее внимание.

Внимание (Q, K, V) = softmax (QKT / √ dk) V

Коэффициент масштабирования равен sqrt (dim (key)) и выполняется после скалярного произведения. Запросы, ключи и значения упаковываются в матрицы, поэтому скалярные произведения и взвешенные суммы становятся матричными умножениями. Для простоты архитектуры все размеры равны 512.

Самовнимание:

Что касается самовнимания, у нас есть архитектура кодирования-декодирования, которая выглядит очень сложной. Упомянутая ниже архитектура основана на документе Внимание - это все, что вам нужно »был представлен на arXiv 2017 года командой машинного перевода Google и, наконец, на NIPS 2017 года. Кодировщик находится слева, а декодер - справа. , каждый разделен на N = 6 слоев (таким образом, серые прямоугольники уложены друг на друга по 6), и каждый слой имеет несколько подслоев.

Архитектура состоит из трех основных компонентов:

  1. Позиционное кодирование
  2. Многоголовое внимание
  3. Прямая связь (прямая связь по положению)

Подробно обсудим каждый компонент

Позиционная кодировка:

Он используется для ввода позиционной информации в модель или для фиксации порядка в последовательности. Позиционное кодирование использует фиксированные синусоиды разных частот, которые добавляются непосредственно к входным вложениям. Это позволяет легко моделировать относительные положения с помощью линейных функций. Позиционное кодирование имеет то же количество измерений, что и встраивание входных данных.

Что такое внимание с несколькими головами?

В случае с несколькими заголовками у нас одинаковое внимание, в котором запрос, ключ и значение проходят через масштабированное точечное внимание. Но этот процесс выполняется «h» раз для получения значений h, поэтому он называется multi-head. Параметр W отличается для каждой головки с одинаковыми Q, K, V. Результатом многоголового внимания является линейное преобразование значений concat для каждой головы. Multi-head позволяет модели изучать различное представление или контекст слова.

Остаточное соединение (передача блока данных) вокруг слоев используется для сохранения информации, связанной с положением, которую мы добавляем для встраивания ввода по сети. После остаточных связей на выходе мультиголового внимания применяется нормализация (Add & norm).

Позиционная сеть с прямой связью:

Это либо двухслойная полностью связанная нейронная сеть с ReLU, примененной в каждом месте. Или (и мне это больше нравится) на самом деле они представляют собой две свертки размером с одно ядро, применяемые в позиционном пространстве: conv → ReLU → conv. Скрытое измерение - 2048. Вы можете спросить, почему эти подслои здесь.

Декодер:

Decoder имеет аналогичные компоненты, такие как encode. При декодировании вход - это вложение выхода, смещенное на одну позицию, чтобы гарантировать, что предсказание для позиции (i) зависит только от позиций, предшествующих меньше, чем i.

В декодере уровень самовнимания позволяет каждой позиции следить за всеми предыдущими позициями в декодере, включая текущую позицию. Чтобы сохранить свойство авторегрессии, левый информационный поток (соединение кодировщика) представлен внутри скалярного произведения внимания путем маскирования (установлено на -∞), которые вводятся для softmax, которые соответствуют этим незаконным соединениям.

Многоголовое внимание модифицируется таким образом, чтобы препятствовать тому, чтобы позиции обращались к последующим позициям, это известно как замаскированное многоголовое внимание.

После многоголового внимания мы передаем его прямой нейронной сети, нормализуем вывод и отправляем его на слой softmax. Декодер также имеет остаточные слои.

Преимущества самовнимания:

  • Минимизация общей вычислительной сложности на уровне
  • Максимальное количество параллелизируемых вычислений, измеряемых минимальным количеством требуемых последовательных операций
  • Минимизируйте максимальную длину пути между любыми двумя позициями входа и выхода в сети, состоящей из слоев разных типов. Чем короче путь между любой комбинацией позиций во входной и выходной последовательностях, тем легче изучить дальнодействующие зависимости.

Применение модели самовнимания:

  • Языковой перевод
  • классическая задача анализа языка синтаксического анализа избирательного округа
  • В BERT OpenAI GPT, которая является лучшей моделью в NLP, использует самовнимание.

Ссылки:

  1. Шоу, Питер, Якоб Ушкорейт и Ашиш Васвани. Самовнимание с представлениями относительного положения. Препринт arXiv arXiv: 1803.02155, 2018.
  2. Им, Джинбэ и Сунгзун Чо. Дистанционная сеть самовосприятия для вывода естественного языка. Препринт arXiv arXiv: 1712.02047, 2017.
  3. Https://medium.com/@Alibaba_Cloud/self-attention-mechanisms-in-natural-language-processing-9f28315ff905
  4. Https://medium.com/@hyponymous/paper-summary-attention-is-all-you-need-22c2c7a5e06