Детали модели трансформатора

NLP
Детали модели трансформатора

Transformer — это классическая модель НЛП, предложенная командой Google в 2017 году, а теперь более популярный Bert также основан на Transformer. Модель Transformer использует механизм Self-Attention и не использует последовательную структуру RNN, так что модель может обучаться параллельно и может иметь глобальную информацию.

1. Структура трансформатора

Во-первых, представлена ​​общая структура Transformer.На следующем рисунке показана общая структура Transformer для китайско-английского перевода.

transformer整体结构.png

Вы можете видеть, что Transformer состоит из двух частей, Encoder и Decoder.И Encoder, и Decoder содержат 6 блоков. Рабочий процесс Transformer примерно следующий:

первый шаг:Получите вектор представления для каждого слова входного предложенияX,XОн получается путем сложения встраивания слова и встраивания позиции слова.

transformerEmbedding.png

Шаг 2:Результирующая векторная матрица представления слова (как показано выше, каждая строка представляет собой представление словаx) в кодировщик, после 6 блоков кодировщика можно получить информационную матрицу кодирования всех слов в предложении.C,Как показано ниже. векторная матрица слов дляХ(п×д)Представление, n — количество слов в предложении, d — размерность вектора представления (в статье d=512). Размер матрицы вывода каждого блока Encoder точно такой же, как и вход.

transformerEncoder句子到编码信息.png

третий шаг:Кодирующая информационная матрица, выводимая EncoderCПередайте его декодеру, и декодер переведет следующее слово i+1 в соответствии с текущим переведенным словом 1~i, как показано на следующем рисунке. В процессе использования при переводе в слово i+1 нужно пройтиМаскаОперация маскирует слово после i+1.

TransformerDecoder预测.png

Приведенный выше декодер изображения получил матрицу кодирования кодировщика.C, затем сначала введите начало перевода "", чтобы предсказать первое слово "I", затем введите начало перевода "" и слово "I", чтобы предсказать слово "have", и так далее. Это общий процесс использования Transformer, за которым следуют детали каждой части внутри.

2. Вход трансформатора

Входное представление слов в TransformerxПолучается добавлением слова Embedding и позиции Embedding.

transformerEmbedding简单.png

2.1 Встраивание слова

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

2.2 Встраивание местоположения

В дополнение к Embedding слова в Transformer, позиция Embedding также должна использоваться для указания позиции, в которой слово появляется в предложении.Поскольку Transformer не использует структуру RNN, а использует глобальную информацию, он не может использовать информацию о порядке слов, а эта часть информации очень важна для НЛП.. Таким образом, Transformer использует встраивание позиции для сохранения относительной или абсолютной позиции слова в последовательности.

Встраивание местоположения дляPEВыражать,PEРазмеры такие же, как и у слова Embedding.PEЕго можно получить путем обучения, а можно рассчитать по определенной формуле. Последний используется в Transformer, и формула расчета выглядит следующим образом:

PE公式.png

Среди них pos представляет позицию слова в предложении, а d представляетPE(то же, что и слово Embedded), 2i означает четное измерение, 2i+1 означает нечетное измерение (т.е. 2i≤d, 2i+1≤d). Рассчитайте по этой формулеPEЕсть следующие преимущества:

  • сделатьPEМожет адаптироваться к предложениям длиннее, чем все предложения в обучающем наборе.Предполагая, что самое длинное предложение в обучающем наборе имеет 20 слов, и вдруг приходит предложение длиной 21, вы можете использовать метод вычисления формулы для вычисления 21-го предложения.Встраивание.
  • позволяет модели легко вычислить относительное положение для интервала фиксированной длины k,PE(pos+k) можно использоватьPE(поз) рассчитывается. Поскольку Sin(A+B) = Sin(A)Cos(B) + Cos(A)Sin(B), Cos(A+B) = Cos(A)Cos(B) - Sin(A)Sin(B) .

Добавьте слово Embedding и положение Embedding слова, чтобы получить вектор представления слова.x,xЭто вход трансформатора.

3.Self-Attention

Transformer论文EncoderDecoder红.jpg

На приведенном выше рисунке показана схема внутренней структуры преобразователя в документе с блоком кодировщика слева и блоком декодера справа. Часть в красном кружкеMulti-Head Attention, состоит из несколькихSelf-AttentionМожно видеть, что блок Encoder содержит Multi-Head Attention, а блок Decoder содержит два Multi-Head Attention (одно из которых использует Masked). Существует также слой «Добавить и норма» над «Вниманием нескольких головок».Добавить представляет остаточное соединение (Остаточное соединение) для предотвращения деградации сети, а норма представляет нормализацию уровня, которая используется для нормализации значения активации каждого уровня.

так какSelf-AttentionЭто основное внимание Transformer, поэтому мы сосредоточимся на многоголовом внимании и само-внимании.Во-первых, давайте подробно рассмотрим внутреннюю логику само-внимания.

3.1 Структура внутреннего внимания

На приведенном выше рисунке показана структура Самовнимания, и в расчетах необходимо использовать матрицу.Q(Запрос),K(ключевое значение),V(ценность). На практике Само-Внимание получает ввод (вектор представления словаxсостоит из матрицX) или вывод предыдущего блока Encoder. иQ, K, VОно получается линейным преобразованием входа Само-Внимания.

3.2 Расчет Q, K, V

Входная матрица для самовниманияXДля представления можно использовать линейную матрицу эволюцииWQ, WK, WVРассчитаноQ, K, V. Расчет показан на рисунке ниже,Обратите внимание, что каждая строка X, Q, K, V представляет слово.

QKV计算图.png

3.3 Вывод собственного внимания

получить матрицуQ, K, VПосле этого можно рассчитать выход Самовнимания по формуле расчета.

Attention公式.png

Вычислить матрицу в формулеQиKВнутренний продукт каждого вектора-строки делится на квадратный корень из dk, чтобы внутренний продукт не был слишком большим.Qумножить наKПосле перестановки число строк и столбцов полученной матрицы равно n, а n - количество слов в предложении Эта матрица может представлять интенсивность внимания между словами. На картинке нижеQумножить наKTranspose, 1234 представляет слова в предложении.

AttentionQKT.png

получитьQKПосле T используйте Softmax для расчета коэффициента внимания каждого слова для других слов.Softmax в формуле заключается в выполнении Softmax на каждой строке матрицы, то есть сумма каждой строки становится равной 1.

AttentionSoftmax.png

После получения матрицы Softmax мы можем просуммироватьVУмножьте, чтобы получить окончательный результатZ.

AttentionOutput.png

Первая строка матрицы Softmax на приведенном выше рисунке представляет коэффициент внимания слова 1 и всех остальных слов, а также окончательный вывод слова 1.Z1 равно значению всего слова iVi получается путем сложения пропорций коэффициентов внимания, как показано на следующем рисунке:

AttentionExample.png

3.4 Multi-Head Attention

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

Transformer论文MultiHead.png

Как видно из рисунка выше, Multi-Head Attention содержит несколько слоев Self-Attention.XПереданы в h различных значений собственного внимания соответственно и рассчитаны для получения h выходных матриц.Z. На следующем рисунке показан случай, когда h=8, и в это время будет получено 8 выходных матриц.Z.

MultiHeadZ18.png

получить 8 выходных матрицZот 1 доZПосле 8 Multi-Head Attention сшивает их вместе (Concat), затем пройти вLinearслой, чтобы получить окончательный результат Multi-Head AttentionZ.

MultiHeadFinalZ.png

Вы можете увидеть вывод матрицы с помощью Multi-Head Attention.Zс его входной матрицейXРазмеры такие же.

4. Структура кодировщика

Transformer论文Encoder红.jpg

Красная часть приведенного выше рисунка представляет собой структуру блока кодировщика преобразователя, которая, как видно, состоит из многоголовочного внимания, добавления и нормирования, прямой связи, добавления и нормирования. Теперь, когда вы узнали о процессе вычисления многоголового внимания, давайте взглянем на разделы «Добавить и нормализовать» и «Поделиться вперед».

4.1 Add & Norm

Слой Add & Norm состоит из двух частей, Add и Norm, формула расчета которых выглядит следующим образом:

Add&Norm公式.png

вXПредставляет ввод Multi-Head Attention или Feed Forward, MultiHeadAttention(X) и прямой связи (X) означает выход (выход и входXРазмеры одинаковые, поэтому их можно добавить).

AddСсылаться наX+MultiHeadAttention(X), представляет собой остаточное соединение, которое обычно используется для решения задачи обучения многослойной сети, что позволяет сети сосредоточиться только на текущей разнице, что часто используется в ResNet.

残差.png

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

4.2 Feed Forward

Слой Feed Forward относительно прост. Это двухуровневый полносвязный слой. Функция активации первого слоя Relu, а функция активации второго слоя не используется. Соответствующая формула выглядит следующим образом.

Feed_Forward.png

Xявляется входом, а размер выходной матрицы, окончательно полученной с помощью Feed Forward, такой же, какXПоследовательный.

4.3 Состав энкодера

С помощью описанных выше функций Multi-Head Attention, Feed Forward, Add & Norm можно построить блок Encoder, и блок Encoder получит входную матрицу.X(n×d) и вывести матрицуO(н×д). Кодировщик может быть сформирован путем наложения нескольких блоков кодировщика.

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

transformerEncoder句子到编码信息.png

5. Структура декодера

Transformer_论文_Decoder_红.jpg

Красная часть рисунка выше — это структура блока декодера преобразователя, которая похожа на блок кодировщика, но есть некоторые отличия:

  • Содержит два слоя Multi-Head Attention.
  • Первый слой Multi-Head Attention использует операцию Masked.
  • Второй слой Multi-Head AttentionK, VМатрица использует информационную матрицу кодирования Encoder.Cрассчитать, иQВычисляется с использованием выходных данных предыдущего блока Decoder.
  • Наконец, есть слой Softmax, который вычисляет вероятность следующего переведенного слова.

5.1 Первое многоголовое внимание

Первый блок Multi-Head Attention of the Decoder использует операцию Masked, поскольку в процессе перевода он транслируется последовательно, то есть после перевода i-го слова может быть переведено i+1-е слово. Маскированная операция не позволяет i-му слову знать информацию после i+1 слова. Давайте возьмем перевод «У меня есть кошка» на «У меня есть кошка» в качестве примера, чтобы понять операцию «Маска».

В следующем описании используется концепция, аналогичная принудительному использованию учителя.Дети, не знакомые с принудительным заданием учителя, могут обратиться к предыдущей статье «Сведения о модели Seq2Seq». При использовании декодера необходимо решить наиболее вероятный перевод на основе предыдущего перевода, как показано на следующем рисунке. Первое слово прогнозируется как «I» на основе ввода «», а следующее слово «have» прогнозируется на основе ввода « I».

Teacher_Forcing_预测.png

Декодер может использовать форсирование учителей и параллельное обучение в процессе обучения, правильную последовательность слов ( у меня есть кошка) и соответствующий вывод (у меня есть кошка ) на декодер. Затем, когда я предсказываю вывод i-i, вы должны покрыть слова после I + 1.Обратите внимание, что операция «Маска» используется перед «Софтмаксом самоконтроля» Далее используется 0 1 2 3 4 5 для представления У меня есть кошка .

первый шаг:является входной матрицей Декодера иMaskматрица, входная матрица содержит вектор представления пяти слов « У меня есть кошка» (0, 1, 2, 3, 4),Maskпредставляет собой матрицу 5×5. существуетMaskМожно обнаружить, что слово 0 может использовать только информацию слова 0, а слово 1 может использовать информацию слов 0, 1, то есть можно использовать только предыдущую информацию.

输入与Mask.png

Шаг 2:Следующая операция такая же, как предыдущая Само-Внимание, через входную матрицуXРассчитаноQ, K, Vматрица. затем вычислитьQиKпроизведение ТQKТ.

MaskQT.png

третий шаг:в полученииQKПосле T необходимо выполнить Softmax для расчета оценки внимания, нам нужно использовать его до Softmax.MaskМатрица блокирует информацию после каждого слова, и операция блокировки выглядит следующим образом:

softmax之前mask.png

получитьMask QKпосле ТMask QKSoftmax выполняется на T, и сумма каждой строки равна 1. Но оценки внимания слова 0 на словах 1, 2, 3, 4 равны 0.

четвертый шаг:использоватьMask QKT и матрицыVУмножьте, чтобы получить результатZ, то выходной вектор слова 1Z1 содержит информацию только о слове 1.

MaskAttentionOutput.png

пятый шаг:Выполнив описанные выше шаги, вы можете получить выходную матрицу самовнимания маски.Zi, затем аналогично Encoder, объединяя несколько выходов с помощью Multi-Head Attention.Zi Затем рассчитайте выход первого многоголового внимания.Z,Zс вводомXте же размеры.

5.2 Второе многоголовое внимание

Второй блок Multi-Head Attention of the Decoder почти не изменился, главное отличие в том, что блок Self-AttentionK, VМатрица вычисляется не с использованием вывода предыдущего блока Decoder, а с использованиемИнформационная матрица кодирования кодировщика Cвычислительный.

Согласно выходу кодировщикаCРассчитаноK, V, в соответствии с выводом предыдущего блока DecoderZрассчитатьQ(Если это первый блок декодера, используйте входную матрицуXрасчет), а последующий метод расчета такой же, как описанный ранее.

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

5.3 Softmax предсказывает выходные слова

Последняя часть блока декодера — это использование Softmax для предсказания следующего слова, на предыдущем сетевом уровне мы можем получить окончательный результат.Z, из-за наличия маски вывод слова 0Z0 содержит только информацию для слова 0 следующим образом.

Decoder最终输出Z.png

Softmax предсказывает следующее слово на основе каждой строки выходной матрицы

DecoderSoftmax.png

Это определение блока декодера.Как и кодировщик, декодер состоит из нескольких блоков декодера.

6. Резюме трансформатора

Трансформеры, в отличие от RNN, относительно хорошо поддаются параллельному обучению.

Сам Transformer не может использовать информацию о порядке слов, поэтому необходимо добавить позицию Embedding на вход, иначе Transformer будет моделью мешка слов.

В центре внимания Трансформера находится структура Самовнимания, которая используетQ, K, VМатрица получается путем линейного преобразования вывода.

Трансформатор в мультиэлектрическом внимании множество в себе, коэффициент корреляции может быть захвачен на различных измерениях между словами.

7. Ссылки