Вступление

Эта статья основана на статье Шоу и др., Озаглавленной Самовнимание с репрезентациями относительной позиции. В документе были представлены альтернативные способы кодирования позиционной информации во входной последовательности внутри преобразователя. В частности, он модифицировал механизм самовнимания Трансформера, чтобы эффективно учитывать относительные расстояния между элементами последовательности.

Моя цель - объяснить основные аспекты этой статьи таким образом, чтобы ее могли понять люди, не привыкшие читать академические статьи. Я предполагаю, что читатель знаком с Рекуррентными нейронными сетями (RNN) и механизмом самовнимания с несколькими головами в Трансформаторах.

Мотивация

Архитектура RNN позволяет ей неявно кодировать последовательную информацию, используя ее скрытое состояние. Например, на диаграмме ниже изображена RNN, которая выводит представление для каждого слова во входной последовательности, где входной последовательностью является «Я думаю, следовательно, я»:

Выходное представление для второго «I» не то же самое, что выходное представление для первого «I», потому что скрытое состояние, которое вводится в эти слова, не то же самое: для второго «I» скрытое состояние прошло хотя слова «я думаю поэтому», в то время как для первого «я» скрытое состояние просто инициализируется. Следовательно, скрытое состояние RNN гарантирует, что идентичные слова, которые находятся в разных позициях во входной последовательности, будут иметь разные выходные представления.

Напротив, уровень самовнимания Трансформера (без какого-либо позиционного представления) заставляет идентичные слова в разных позициях иметь одно и то же выходное представление. Например:

На приведенной выше диаграмме показана входная последовательность «Я думаю, следовательно, я», проходящую только через один трансформатор. Для удобства чтения показаны только те входы, которые составляют выходные представления «я» (разными цветами). Обратите внимание, что хотя два «I» расположены в разных позициях во входной последовательности, входы для их соответствующих выходных представлений идентичны.

Решение

Обзор

Авторы предложили добавить в Transformer набор обучаемых встраиваний, чтобы его выходные представления также отображали последовательную информацию на его входах. Эти вложения представляют собой векторы, которые используются при вычислении веса внимания и значения между словом i и j во входной последовательности. Они представляют собой расстояние (количество слов) между словом i и j, отсюда и название «Представление относительной позиции» (RPR).

Например, последовательность из 5 слов будет иметь в общей сложности 9 вложений, которые нужно изучить (1 вложение для текущего слова, 4 вложения для 4 слов слева от текущего слова и 4 вложения для 4 слов справа от текущее слово). Интерпретация этих 9 вложений следующая:

Следующая диаграмма поясняет, как используются эти вложения:

На приведенной выше диаграмме изображен процесс вычисления выходного представления первого «я» в последовательности «я думаю, следовательно, я есть». Цифры рядом со стрелками показывают, какие из RPR используются при вычислении внимания. Например. Когда Трансформатор вычисляет внимание, которое нужно распределить между «я» и «поэтому», он будет использовать информацию, содержащуюся в 6-м RPR, потому что «следовательно» находится на 2 слова правее «я».

Следующая диаграмма изображает процесс вычисления представления второго «I» в той же последовательности:

Как и раньше, второе «I» будет использовать те же входные слова, что и первое «I», для вычисления своего выходного представления. Однако RPR, связанный с каждым словом, отличается. Например, 3-й RPR используется для вычисления внимания между «я» и «поэтому», потому что «поэтому» находится на одно слово слева от «я». Это механизм, с помощью которого RPR помогают Transformers кодировать последовательную информацию на своих входах.

Обозначение

В оставшейся части статьи будут применяться следующие обозначения:

Обратите внимание, что на самом деле есть два набора вложений RPR, которые нужно изучить: один для вычисления zᵢ, а другой для вычисления eᵢⱼ. В отличие от матриц проекции, эти вложения разделяются между головами внимания и внимания (хотя они по-прежнему уникальны для каждого слоя).

Еще один важный момент, который следует отметить, - это то, что максимальное количество рассматриваемых слов ограничено некоторым абсолютным значением k. Это означает, что количество вложений RPR для изучения равно 2k + 1 (k слов слева, k миров справа и текущее слово). Слова, расстояние которых превышает k слов справа от слова i, связаны с (k-1) -м RPR, в то время как те, которые выходят за пределы k слов слева от слова i, связаны с 0-м RPR. Например, входная последовательность, состоящая из 10 слов и k = 3, будет иметь следующую таблицу поиска встраивания RPR:

В этой настройке строка i соответствует i-му слову, а столбцы представляют слово j во входной последовательности. Индекс 3 соответствует RPR для слова i (с индексом 0), индекс 6 соответствует RPR для 3-го слова справа от слова i, а индекс 0 соответствует 3-му слову слева от слова i. Поиск вложения для первого слова (строка 0) - это [3, 4, 5, 6, 6, 6, 6, 6, 6, 6]. Обратите внимание, что все значения индексов поиска после 3-го элемента равны 6. Это означает, что даже несмотря на то, что расстояние между первым и последним словом равно 9, вложение RPR, связанное с этой парой, по-прежнему является вложением RPR, соответствующим 3-му слову для справа от первого слова.

Для этого есть две причины:

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

Реализация

Следующие уравнения показывают шаги для вычисления zᵢ без вложений RPR:

Введение вложений RPR модифицирует уравнение (1) следующим образом:

и уравнение (2) следующим образом:

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

Эффективное внедрение

Входными данными для Transformer является тензор размера (batch_size, seq_length, embedding_dim).

Без вложений RPR преобразователь может вычислить eᵢⱼ (уравнение 2), используя параллельное умножение матриц batch_size * h. Каждое матричное умножение вычисляет eᵢⱼ для всех элементов в заданной входной последовательности и заголовке. Это достигается с помощью следующего выражения:

где X - конкатенация (по строкам) элементов в заданной входной последовательности.

Чтобы достичь аналогичной эффективности (с точки зрения времени и пространства) с вложениями RPR, мы сначала используем свойства умножения матриц и транспонируем, чтобы переписать уравнение (4) на:

Первый член в числителе точно такой же, как в уравнении (2), поэтому его можно эффективно вычислить с помощью одного матричного умножения.

Второй член немного сложно вычислить эффективно. Код для этого определен в функции _relative_attention_inner в репозитории tensor2tensor, поэтому я кратко изложу его логику в этой статье.

  • Форма первого члена в числителе: (размер_пакета, h, длина_последовательности, длина_последовательности). Строка i и столбец j этого тензора являются скалярным произведением между вектором запроса слова i и ключевым векторным словом j. Следовательно, наша цель - создать другой тензор с той же формой, что и первый член, но содержание которого является скалярным произведением между вектором запроса слова i и вложением RPR между словом i и словом j.
  • Во-первых, мы используем таблицу поиска внедрения, подобную той, которая описана в разделе «Обозначения», чтобы создать тензор внедрения RPR для заданной входной последовательности. Обозначим этот тензор буквой A. Этот тензор будет иметь форму (seq_length, seq_length, dₐ). Затем мы транспонируем A так, чтобы его новая форма была (seq_length, dₐ, seq_length), и называем это Aᵀ.
  • Затем мы вычисляем векторы запроса для всех элементов входной последовательности. Это даст тензор формы (batch_size, h, seq_length, dz). Затем мы транспонируем этот тензор так, чтобы его форма была (seq_length, batch_size, h, dz), после чего мы изменяли его на (seq_length, batch_size * h, dz). Теперь этот тензор можно умножить на Aᵀ. Это умножение может быть преобразовано как параллельное умножение матрицы seq_length между матрицами (batch_size * h, dz) и (dₐ, seq_length). Каждое умножение матрицы seq_length соответствует определенной позиции во входной последовательности. Умножение матриц в основном вычисляет скалярное произведение между вектором запроса этой входной позиции и соответствующими вложениями RPR по всем входным последовательностям в заголовках и пакете.
  • Результатом вышеупомянутого умножения является тензор с формой (seq_length, batch_size * h, seq_length). Нам просто нужно изменить его форму на (seq_length, batch_size, h, seq_length) и транспонировать в (batch_size, h, seq_length, seq_length), чтобы мы могли добавить его к первому члену в числителе.

Ту же логику можно применить и для эффективного вычисления уравнения (3).

Полученные результаты

Авторы оценили влияние своих модификаций, используя ту же задачу машинного перевода, которая была определена в статье Vaswani et al. Внимание - это все, что вам нужно. Хотя количество шагов обучения в секунду снизилось на 7%, их модели улучшили показатель BLEU до 1,3 для задачи с английского на немецкий и до 0,5 в задаче с английского на французский.

Заключение

В этой статье я объяснил, почему механизм самовнимания в трансформаторе не кодирует позиционную информацию входной последовательности и как встраивание представления относительного положения, предложенное Шоу и др. решает эту проблему. Я надеюсь, что это улучшило ваше понимание статьи. Дайте мне знать в комментариях, если у вас есть какие-либо вопросы или отзывы.

использованная литература

Самовнимание с репрезентациями относительной позиции; Shaw et al. 2018.

Внимание - все, что вам нужно; Vaswani et al., 2017.

Трансформер: новая архитектура нейронной сети для понимания языков; Uszkoreit. 2017 г.

Неоправданная эффективность рекуррентных нейронных сетей; Карпаты. 2015 г.