Помогите вам легко понять Transformer (Часть 1)

NLP

Это 23-й день моего участия в Gengwen Challenge.Подробности о мероприятии:Обновить вызов

введение

Есть много внутренних деталей модели Transformer.Эта статья в основном объясняет только часть «Внимание» и часть «Само-внимание».Если вам интересно, вы можете проверить статью.

Что такое трансформатор

  • Transformer — это модель Seq2Seq, которая хорошо подходит для задач машинного перевода. Если вы не понимаете модель Seq2Seq, вы можете прочитать мою предыдущую статью.«Подробности обучения и прогнозирования Seq2Seq и методы оптимизации»

  • Это не рекуррентная структура нейронной сети, а сетевая структура, которая просто склеена слоями «Внимание», «Само-внимание» и полносвязными слоями.

  • Оценочная производительность Transformer полностью превосходит лучшую структуру RNN + Attention В настоящее время никто в отрасли не использует RNN, а использует комбинацию модели BERT + Transformer.

Просмотрите структуру RNN + Внимание

transformer-rnn-attention.jpg

Как показано на рисунке, это модель, состоящая из RNN + Attention, и c вычисляется в процессе декодера.jПроцесс выглядит следующим образом:

а) Установите выходной вектор s в j-й момент Декодераjс ВтQУмножьте, чтобы получить q:j

б) Выход h скрытого слоя каждого кодировщикаiс ВтKУмножьте, чтобы получить k:i, так как имеется m входов, то имеется m k:iвектор, обозначаемый K.

в) использовать КTс д:jУмножая, можно получить m-мерный вектор, а затем после Softmax можно получить m весов aij.

【Пояснение】q:jназывается Запрос, k:iВызывается Key, функция Query должна соответствовать Key, функция Key должна соответствовать Query, а рассчитанный вес aijУказывает степень соответствия между запросом и каждым ключом, чем выше степень соответствияijбольше. Я думаю, это можно понять так, Query захватывает Decoder's sjОсобенности, Key захватывает вывод m h кодировщикомiособенности, аijозначает сjс каждым часомiкорреляция.

г) Выход h скрытого слоя каждого кодировщикаiс ВтVУмножьте, чтобы получить v:i, так как есть m входов, есть m v:iвектор, обозначаемый V .

e) После вышеуказанных шагов c в j-й момент ДекодераjЕго можно вычислить, то есть умножить m a на соответствующее m v, и получить средневзвешенное значение.

【Примечание】WV, ВтK, ВтQДля обучения на обучающих данных необходимы три матрицы параметров.

Внимание в Трансформерах

В Transformer убирается структура RNN, и сохраняется только структура Attention, как видно из рисунка ниже, с помощью WKи ВтVВычислите с m входом x кодировщика, чтобы получить m k:iи м v:i. использовать WQВычислите с t вход x декодера, чтобы получить t q:t.

transformer-attention-1.jpg

Как показано на рисунке ниже, здесь для расчета веса декодера в первый момент установите KTс д:1Умножьте и получите m весов a после преобразования Softmax, обозначенного как a:1.

transformer-attention-2.jpg

Как показано на рисунке ниже, здесь есть контекстная функция c для вычисления первого момента декодера.:1, умножьте и просуммируйте m весов a и m v соответственно, и средневзвешенный результат равен c:1.

transformer-attention-3.jpg

Точно так же контекстные функции Декодера в каждый момент времени могут быть рассчитаны, как указано выше. Грубо говоря с:jЗависит от текущего входа декодера x'jи все входы энкодера [x1,...,xm].

transformer-attention-4.jpg

Подводя итог, как показано на рисунке ниже, вход кодировщика — это последовательность X, а вход декодера — последовательность X.', контекстный вектор C равен X и X'Результат функции , где использовалась трехпараметрическая матрица WQ, ВтK, ВтVВсему нужно учиться на обучающих данных.

transformer-attention-5.jpg

На следующем рисунке показан процесс декодирования машинного перевода. Процесс Transformer аналогичен процессу RNN. RNN заключается в преобразовании вектора состояния h:jВходные данные для классификатора Softmax, за исключением того, что внимание является контекстной функцией c:jВведите в классификатор Softmax, затем случайная выборка может предсказать ввод следующего слова.

transformer-attention-6.jpg

Самостоятельное внимание в «Трансформерах»

Для ввода Самовнимания требуется только одна входная последовательность X, где W используются соответственно.Q, ВтK, ВтVс каждым входом xiВыполните расчет, чтобы получить m q:i, к:i, v:iтри вектора. Вес в j-й момент такой же, как и в приведенном выше методе расчета, Softmax(KT * q:j) может получить x в момент времени jjЧто касается m весовых параметров всех входов X, наконец, объедините m весовых параметров с m v:iУмножьте и суммируйте соответственно, чтобы получить вектор контекста c:j.

transformer-self-attention-1.jpg

Точно так же c всегда:jможно получить таким же образом.

transformer-self-attention-2.jpg

Подводя итог, можно сказать, что вводом является последовательность X, а контекстный вектор C является результатом функции над X и X, потому что каждый раз, когда x вычисляетсяjконтекстный вектор cj, необходимо преобразовать хjПримите во внимание все X и сделайте расчет. Матрицы трех параметров W использовалиQ, ВтK, ВтVВсему нужно учиться на обучающих данных.

transformer-self-attention-3.jpg

Ссылаться на

[1] Vaswani A , Shazeer N , Parmar N , et al. Attention Is All You Need[J]. arXiv, 2017.