Разборка серии Transformer 2: подробное объяснение многоголовочного механизма внимания

глубокое обучение

существует"Разборка трансформатора серии 1: подробное объяснение архитектуры модели кодер-декодер«Есть краткое введение во внимание, само-внимание и многоголовое внимание, все из которых являются просто интуитивным введением в роль внимания, как запоминать ключевую информацию, такую ​​​​как механизм визуального внимания человека, а также представляет само- Механизм внимания.Как усвоить внутреннюю структуру предложений и некоторые грамматические особенности, взвешивая собственное внимание.

Теперь я также планирую продолжить подробное объяснение Attention, в основном, чтобы объяснить, как реализовано Multi-Head Attention в Transformer? Объясните с помощью иллюстраций и пояснений.

Self-Attention

В предыдущем разделе мы упомянули, что Запрос=Ключ=Значение Само-Внимания, то есть все три матрицы Q, K и V исходят из одного и того же входа, и каков процесс вычисления Внимания?

Механизм «Внимание» — это, по сути, процесс адресации. При задании вектора запроса запроса Q, связанного с задачей и задачей, значение внимания рассчитывается путем вычисления распределения внимания с помощью ключа и добавления его к значению. Этот процесс на самом деле является вниманием. Воплощение сложности нейронной сети не требует ввода всех N входов в нейронную сеть для расчета, но выбирает некоторую информацию, связанную с задачей, для ввода в нейронную сеть, что аналогично механизму стробирования в RNN.

Процесс расчета механизма внимания можно условно разделить на три этапа:

① Ввод информации: введите Q, K, V в модель

  • использоватьX=[x_1,x_2,...x_n]представляет вектор входного веса

② Рассчитайте распределение внимания α: Рассчитайте корреляцию, вычислив скалярное произведение Q и K, и рассчитайте балл с помощью softmax.

  • ДругойQ=K=V=X, веса внимания рассчитываются softmax,α_i=softmax(s(k_i,q))=softmax(s(x_i, q))
  • мы будемα_iНазовем это распределением вероятности внимания,s(x_i, q)Что касается механизма оценки внимания, наиболее распространенными являются следующие:
    • Аддитивная модель:s(x_i,q)=v^Ttanh(Wx_i+Uq)
    • Модель точечного продукта:s(x_i,q)=x_i^Tq
    • Масштабируйте модель точечного продукта:s(x_i,q)={x_i^Tq}/\sqrt{d_k}
    • Билинейная модель:s(x_i,q)=x_i^TWq

③ Средневзвешенная информация: распределение вниманияα_iобъяснить запрос в контекстеq_iвремя,iСтепень внимания к информации.

att(q,X)=\sum_{i=1}^N{α_iX_i}

Выше описан общий процесс расчета внимания, а также описаны различные варианты расчета показателя внимания Итак, какой из них используется в Transformer? Ответ:Scaled Dot-Product Attention

На рисунке выше показана упрощенная диаграмма масштабированного скалярного произведения внимания.Вы можете видеть, что входные данные Q, K и V одинаковы.

Вы можете видеть, что Scaled Dot-Product Attention имеет коэффициент масштабирования\sqrt{d_k}, зачем добавлять этот коэффициент масштабирования?

еслиd_kОчень маленькое, аддитивное внимание и внимание, основанное на скалярном произведении, мало чем отличаются.

но еслиd_kОчень большой, значение скалярного произведения очень велико, и если вы не выполняете масштабирование, результат не так хорош, как аддитивное внимание.

Кроме того, результат точечного произведения слишком велик, поэтому градиент после softmax очень мал, что не способствует обратному распространению, поэтому результат масштабируется.

Мы кратко упомянули в предыдущем разделе, что Само-Внимание может улавливать зависимости на большом расстоянии и может изучать внутреннюю структуру и грамматику предложений, так как же происходит процесс вычисления Само-Внимания?

Step 1

Сначала введите информацию: используйтеX=[x_1,x_2,...x_n]выражатьNНачальное представление трех векторов Q, K и V получается линейным преобразованием:

Q=W_qX

K=W_kX

V=W_vX

Step 2

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

Оценка рассчитывается путем скалярного произведения Q и вектора ключевых слов K для каждого слова, поэтому, если бы мы имели дело с вниманием к себе для слова на позиции № 1, первая оценка была быq_1иk_1скалярное произведение . Второй баллq_1иk_2скалярное произведение .

q_1.k_1=112,q_1.k2=96

Step 3

Масштабируйте баллы, рассчитанные на шаге 2, здесь путем деления на 8 (в статьеd_k=64, что может сделать модель более стабильной с градиентом, значение по умолчанию равно 64 или другим значениям), а результаты нормализованы softmax.

z_1=q_1.k_1/\sqrt{d_k}=112/\sqrt{64}=112/8=14,z_2=q_1.k_2/\sqrt{d_k}=96/\sqrt{64}=96/8=12

softmax(z_1)=exp(z_1)/\sum_{i=1}^2(exp(z_i))=0.88,softmax(z_2)=exp(z_2)/\sum_{i=1}^2(exp(z_i))0.12

Step 4

Умножьте балл наv_1,v_2затем получите взвешенное значение, сложите эти значения, чтобы получитьz_1. Это результат этого слоя, внимательно пощупайте его, используйтеQ,Kрассчитатьthinkingправильноthinking,machineвес, умножьте вес наthinking,machineизVвзвешенныйthinking,machineизV, и, наконец, суммируется, чтобы получить вывод для каждого словаz.

многоголовый механизм внимания

В документе показано, что разделение модели на несколько головок для формирования нескольких подпространств позволяет модели сосредоточиться на различных аспектах информации. Multi-Head Attention на приведенном выше рисунке заключается в том, чтобы выполнить процесс Scaled Dot-Product Attention H раз, а затем объединить выходные данные.

Формула механизма многоголового внимания выглядит следующим образом:

Q_i=QW_i^Q,K_i=KW_i^K,V_i=VW_i^V,i=1,...,8

head_i=Attention(Q_i,K_i,V_i),i=1,...,8

MultiHead(Q,K,V)=Concact(head_1,...,head_8)W^O

Здесь мы предполагаемQ,K,V∈R^{512},W_i^Q,W_i^K,W_i^V∈R^{512\times64},W^O∈R^{512\times512},head_i∈R^{64}

① Введите фразу «мастерская».

② Маркировать предложение в Word Embedding X

③ Разделите X на 8 частей и соедините с весомW_iУмножьте, чтобы сформировать входной векторW_iX,формаQ_i,K_i,V_i,i=1,...,8

④ Рассчитайте матрицу веса внимания,z_i=softmax(Q_iK_i^T/\sqrt{d_k})V_i, и, наконец, поместите каждыйz_iсливаться в формуZ_i

⑤ Окончательно поставить результат 8 решекZ_i,i=1,...8сливатьсяZ^C=concact(Z_1,...Z_8),i=1,...,8, точка умножается на весW_O,формаZ=Z^CW_O

Как вы можете видеть ниже, X будет иметь много матрицW_0^Q,

В Преобразователе выход Энкодера будет использоваться как вход Декодера, а выход Энкодера — это K, V и Q предыдущего слоя Декодера.

Суммировать

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

Добро пожаловать, чтобы обратить внимание на личный общедоступный номер, более захватывающий контент