Это 23-й день моего участия в Gengwen Challenge.Подробности о мероприятии:Обновить вызов
введение
Есть много внутренних деталей модели Transformer.Эта статья в основном объясняет только часть «Внимание» и часть «Само-внимание».Если вам интересно, вы можете проверить статью.
Что такое трансформатор
-
Transformer — это модель Seq2Seq, которая хорошо подходит для задач машинного перевода. Если вы не понимаете модель Seq2Seq, вы можете прочитать мою предыдущую статью.«Подробности обучения и прогнозирования Seq2Seq и методы оптимизации»
-
Это не рекуррентная структура нейронной сети, а сетевая структура, которая просто склеена слоями «Внимание», «Само-внимание» и полносвязными слоями.
-
Оценочная производительность Transformer полностью превосходит лучшую структуру RNN + Attention В настоящее время никто в отрасли не использует RNN, а использует комбинацию модели BERT + Transformer.
Просмотрите структуру RNN + Внимание
Как показано на рисунке, это модель, состоящая из 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.
Как показано на рисунке ниже, здесь для расчета веса декодера в первый момент установите KTс д:1Умножьте и получите m весов a после преобразования Softmax, обозначенного как a:1.
Как показано на рисунке ниже, здесь есть контекстная функция c для вычисления первого момента декодера.:1, умножьте и просуммируйте m весов a и m v соответственно, и средневзвешенный результат равен c:1.
Точно так же контекстные функции Декодера в каждый момент времени могут быть рассчитаны, как указано выше. Грубо говоря с:jЗависит от текущего входа декодера x'jи все входы энкодера [x1,...,xm].
Подводя итог, как показано на рисунке ниже, вход кодировщика — это последовательность X, а вход декодера — последовательность X.', контекстный вектор C равен X и X'Результат функции , где использовалась трехпараметрическая матрица WQ, ВтK, ВтVВсему нужно учиться на обучающих данных.
На следующем рисунке показан процесс декодирования машинного перевода. Процесс Transformer аналогичен процессу RNN. RNN заключается в преобразовании вектора состояния h:jВходные данные для классификатора Softmax, за исключением того, что внимание является контекстной функцией c:jВведите в классификатор Softmax, затем случайная выборка может предсказать ввод следующего слова.
Самостоятельное внимание в «Трансформерах»
Для ввода Самовнимания требуется только одна входная последовательность 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.
Точно так же c всегда:jможно получить таким же образом.
Подводя итог, можно сказать, что вводом является последовательность X, а контекстный вектор C является результатом функции над X и X, потому что каждый раз, когда x вычисляетсяjконтекстный вектор cj, необходимо преобразовать хjПримите во внимание все X и сделайте расчет. Матрицы трех параметров W использовалиQ, ВтK, ВтVВсему нужно учиться на обучающих данных.
Ссылаться на
[1] Vaswani A , Shazeer N , Parmar N , et al. Attention Is All You Need[J]. arXiv, 2017.