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

искусственный интеллект NLP

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

связать

Выше мы представили основные принципы Attention и Self-Attention в Transformer. В этой статье рассказывается, как их использовать для построения глубоких нейронных сетей. Конкретные технические подробности см. в документе. Если вы не знаете основ, вы можете просмотреть предыдущую статью«Позвольте вам легко понять Трансформера (Часть 1)».

Single-Head Self-Attention

Самовнимание, которое мы представили выше, вводит последовательность X после трех матриц параметров WQ, ВтK, ВтVВычисление выводит последовательность признаков состояния контекста C , такое само-внимание называется одноголовым само-вниманием . Структура показана на рисунке.

single-head-self-attention.jpg

Multi-Head Self-Attention

Само-внимание с несколькими головками состоит из одноголового само-внимания, каждое одноголовное само-внимание имеет свои собственные параметры и не будет делиться параметрами друг с другом. Каждое самовнимание с одной головкой имеет 3 матрицы параметров, поэтому самовнимание с несколькими головками имеет 31 матриц параметров.

Как показано на рисунке ниже, каждое одноголовное самовнимание в многоголовочном самовнимании имеет одну и ту же входную последовательность X, но, поскольку соответствующие матрицы параметров различны, выходные I последовательности признаков состояния контекста C также различаются. Сращивание l Cs в соответствии с различными моментами является результатом Многоголового Само-Внимания. Если выходной размер каждого одноголового самовнимания равен [d, m], d — размерность признака, а m — количество входных данных, то выходной размер многоголового самовнимания равен [l*d, м].

multi-head-self-attention.jpg

Stacked Self-Attention Layers

Теперь, когда мы знаем, как создать многоголовое самовнимание, давайте объединим их, чтобы создать глубокую нейронную сеть. Как показано на рисунке ниже, мы добавляем полносвязный слой поверх многоголового самовнимания и преобразуем вектор признаков контекста C, сгенерированный многоголовым самовниманием, в выходной признак U сети посредством нелинейных изменений. Все полностью связанные слои одинаковы и имеют общую матрицу параметров W.U. Выходной вектор признаков u в каждый момент времени в это времяiсвязаны с любым входом x. конечно тыiСамое большое влияние по-прежнему xi.

self-attention-dense.jpg

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

stacked-self-attention.jpg

Transformer Encoder

Если вы хотите построить структуру кодировщика Transformer, вам необходимо понять концепцию, называемую блоком.Как показано в правой части рисунка ниже, слой блока представляет собой описанную выше нейронную сеть, использующую многоголовое само-внимание и Плотный слой. . Если входной размер равен [d, m], d — это размер измерения, а m — количество входных данных. Тогда выходной размер блока также будет [d, m].

Как показано в левой части рисунка, структура Transformer Encoder состоит из 6 блоков, а входные и выходные размеры одинаковы, оба [d, m].

transformer-encoder.jpg

Multi-Head Attention

Подобно описанному выше методу многоголового самовнимания, мы можем использовать одноголовное внимание для формирования многоголового внимания. Ввод каждого одноголового внимания — это последовательность X и последовательность X.', каждое Single-Head Attention имеет свою собственную матрицу параметров и не будет делиться параметрами друг с другом, поэтому у него будет своя собственная последовательность признаков состояния контекста C . Складывание этих C является результатом работы Multi-Head Attention.

multi-head-attention.jpg

Stacked Attention Layers

Так как Преобразователь представляет собой модель Seq2Seq, в структуре Seq2Seq входом Кодировщика является последовательность X длины m и размером [d, m]. Структура Кодировщика представляет собой сетевую структуру 6-слойного Сращивание блоков описано выше, а выход U и размер [d, m]. На вход декодера подается последовательность X длины t', размер — [d, t], а результат — C после многоголового самоконтроля. Затем используйте U в качестве входных данных кодировщика и C в качестве входных данных декодера и постройте многоголовое внимание поверх двух. ]. Создайте еще один плотный слой поверх Z, чтобы нелинейно преобразовать Z в S. Параметр веса в Плотном слое тот же WS.

stacked-attentions.jpg

Transformer Decoder

Трехслойная нейронная сеть, построенная выше, включает в себя слой самообслуживания с несколькими головками, слой внимания с несколькими головками и плотный слой, который является блоком в части декодера Transformer.

Вход блока представляет собой две последовательности, одна из которых является входом энкодера размером [d, m], другая — входом декодера размером [d, t], d — размером размера, m — количеством входов энкодера, а t — декодером. вводимый номер. Выходной размер этого блока равен [d, t].

Transformer-Decoder.jpg

Put Everything Together

Теперь, когда вы знаете структуры Encoder и Decoder в модели Transformer, вы можете объединить их, чтобы сформировать настоящий Transformer.

Как показано на рисунке ниже, левая сторона представляет собой сеть кодировщика, состоящую из 6 слоев блоков. Каждый блок имеет многоголовочный уровень самоконтроля и плотный слой. Размер входной последовательности X равен [d, m] и выход [d, m].

Правая сторона рисунка представляет собой сеть декодера, состоящую из 6 слоев блоков.Каждый блок имеет слой самообслуживания с несколькими головками, слой внимания с несколькими головками и плотный слой.Самый нижний блок имеет два входа, а один вход является выходом. кодировщика, размер [d, m], а другой вход — входная последовательность X декодера', размер [d, t]. Есть также два входа в другие блоки выше, один вход по-прежнему является выходом кодировщика, размер равен [d, m], а другой вход является выходом блока ниже, размер [d, t] .

transformer.jpg

Summary

Сеть кодировщика Transformer состоит из 6 блоков, каждый блок имеет многоголовочный уровень самоконтроля и плотный слой, размер входной последовательности составляет [d, m], а размер выходной последовательности составляет [d, m].

encoder.jpg

Сеть декодера трансформатора также состоит из блоков 6. Каждый блок имеет слой самообслуживания с несколькими головками, слой внимания с несколькими головками и плотный слой.Есть две входные последовательности, размер одной последовательности [d, m], другой последовательности размер — [d, t], а размер выходной последовательности — [d, t].

decoder.jpg

Transformer — это модель Seq2Seq, включающая кодировщик и декодер. Трансформер не является моделью RNN, у него нет рекуррентной структуры. Трансформер полностью построен на Внимании и Само-Внимании. Производительность трансформатора является исключительной в отрасли.

transformer-model.jpg

Ссылаться на

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