1. Введение
Привет друзья, добро пожаловать в Yuelai Inn. Статья, которую я хочу представить вам сегодня, — это статья, опубликованная Google в 2017 году, под названием «Внимание — это все, что вам нужно» [1]. Конечно, в Интернете было много анализа этой статьи, но хорошая еда не боится опоздания, я просто говорю о своем понимании и применении этого здесь. В этой статье автор, вероятно, представит 7 статей одну за другой: ①Идея и принцип многоголового механизма внимания в Transformer; ②Процесс кодирования, кодирования и декодирования позиции Transformer; ③Сетевая структура Transformer и реализация механизма самоконтроля; ④Реализация Transformer. процесс; ⑤Модель перевода на основе Transformer; ⑥Модель классификации текста на основе Transformer; ⑦Модель генерации связи на основе Transformer.
Я надеюсь, что благодаря этой серии из 7 статей каждый сможет лучше понять и понять Transformer. Теперь давайте формально приступим к интерпретации этой статьи. Ответьте на «Тезис» на фоне официального аккаунта, чтобы получить ссылку для скачивания!
2 Мотивация
2.1 Лицом к лицу с проблемой
В соответствии с порядком, в котором мы всегда интерпретируем статьи, давайте сначала посмотрим, почему автор предложил модель Трансформера в то время? Какого рода проблему необходимо решить? Какие недостатки есть у нынешней модели?
В абстрактной части статьи автор упомянул, что текущие основные модели последовательностей основаны на моделях кодировщика-декодера, построенных из сложных рекуррентных нейронных сетей или сверточных нейронных сетей, и даже современные наиболее эффективные модели последовательности основаны на архитектуре кодировщика-декодера. по механизму внимания. Почему автор постоянно упоминает эти традиционные модели Encoder-Decoder? Затем автор упомянул во введении, что, поскольку традиционная архитектура кодировщика-декодера находится в процессе моделирования, процесс расчета следующего момента будет зависеть от выходных данных предыдущего момента, и это неотъемлемое свойство ограничивает традиционную архитектуру кодировщика-декодера. Модель декодера не может быть рассчитана параллельно, как показано на рисунке 1.
This inherently sequential nature precludes parallelization within training examples, which becomes critical at longer sequence lengths, as memory constraints limit batching across examples.
Затем автор сказал, что, хотя последняя исследовательская работа смогла значительно улучшить вычислительную эффективность традиционных рецидивирующих нейронных сетей, необходимые проблемы не были решены.
Recent work has achieved significant improvements in computational efficiency through factorization tricks [21] and conditional computation, while also improving model performance in case of the latter. The fundamental constraint of sequential computation, however, remains.
2.2 Решения
Поэтому в этой статье автор впервые предлагает новую архитектуру Transformer для решения этой проблемы. Преимущество архитектуры Transformer состоит в том, что она полностью отказывается от традиционной циклической структуры и вместо этого использует механизм внимания для вычисления неявного представления входных и выходных данных модели, и имя этого внимания — знаменитый механизм внутреннего внимания (самовнимание). механизм внимания). внимание).
To the best of our knowledge, however, the Transformer is the first transduction model relying entirely on self-attention to compute representations of its input and output without using sequence- aligned RNNs or convolution.
В целом,Так называемый механизм самовнимания заключается в непосредственном вычислении веса внимания каждой позиции предложения в процессе кодирования с помощью определенной операции, а затем в вычислении неявного векторного представления всего предложения в виде суммы весов.. В конечном счете, архитектура Transformer представляет собой модель Encoder-Decoder, построенную на этом механизме самоконтроля.
3 технических средства
Представив предысторию всей статьи, давайте сначала взглянем на истинное лицо механизма самоконтроля, а затем изучим общую сетевую архитектуру.
3.1 self-Attention
Первое, что нужно понять, это то, что так называемый механизм внутреннего внимания на самом деле представляет собой «масштабированное скалярное произведение внимания», о котором говорится в статье. В статье автор сказал, что механизм внимания можно описать как процесс сопоставления запроса и ряда пар ключ-значение с выходом, а выходной вектор — это вес, рассчитанный в соответствии с запросом и ключом по значению. .и.
An attention function can be described as mapping a query and a set of key-value pairs to an output, where the query, keys, values, and output are all vectors. The output is computed as a weighted sum of the values, where the weight assigned to each value is computed by a compatibility function of the query with the corresponding key.
Однако, если вы хотите глубже понять значение запроса, ключа и значения, вам необходимо объединить процесс декодирования Transformer, который будет представлен позже. В частности, структура механизма внутреннего внимания показана на рисунке 2.
Как видно из рисунка 2, основной процесс механизма внутреннего внимания состоит в том, чтобы вычислить вес внимания через Q и K, а затем воздействовать на V, чтобы получить полный вес и результат. В частности, для входных Q, K и V формула расчета выходного вектора:
где Q, K и V — 3 матрицы, а их (вторые) размерности равны(На самом деле его можно найти из последующего процесса вычисления. в то время как формуладеленное наПроцесс представляет собой шкалу, указанную на рисунке 2.
Причина этого шага масштабирования заключается в том, что авторы в ходе эксперимента обнаружили, что для большихзаканчиватьПосле этого будет получено большое значение, что приведет к очень маленькому градиенту после операции sofrmax, что не способствует обучению сети.
We suspect that for large values of dk, the dot products grow large in magnitude, pushing the softmax function into regions where it has extremely small gradients.
Если вы просто посмотрите на структуру и формулу на рисунке 2Очевидно, что понять смысл механизма само-внимания непросто.Например, один из самых запутанных вопросов для начинающих — откуда берутся Q, K и V на рисунке 2? Далее рассмотрим практический пример расчета. Теперь предположим, что входная последовательность — «кто я», и каким-то образом мы получили формуМатрица представлена как , тогда Q, K и V[2] могут быть получены с помощью процесса, показанного на рисунке 3.
Из процесса вычисления на рисунке 3 видно, что Q, K и V фактически вычисляются путем умножения входных данных X на три разные матрицы (это ограничивается только кодированием кодировщика и декодера с использованием механизма внутреннего внимания в их соответствующие входные части).процесс, Q, K и V в интерактивной части Encoder и Decoder упоминаются отдельно). Здесь для вычисленных Q, K и V вы можете понять, что это должно выполнить три разных линейных преобразования для одного и того же входа, чтобы представить его три разных состояния. После вычисления Q, K и V вектор весов может быть дополнительно рассчитан, и процесс расчета показан на рисунке 4.
Как показано на рисунке 4, после расчета матрицы веса внимания с помощью описанного выше процесса мы не можем не спросить, что представляют собой эти значения веса? Для первой строки весовой матрицы 0,7 представляет значение внимания для «Я» и «Я»; 0,2 представляет значение внимания для «Я» и «Да»; 0,1 представляет значение внимания для «Я» и «Я». Значение внимания «кто». Другими словами, при кодировании «Я» в последовательности вы должны сфокусировать 0,7 на «Я», 0,2 на «Да» и 0,1 на «кто».
Аналогично, для третьей строки матрицы весов смысл представления в том, что при кодировании «кто» в последовательности на «мне» должно быть размещено 0,2 внимания, а на «Да» — 0,1 внимания, поставьте 0,7 внимание на "кто". Из этого процесса видно, что с помощью этой модели весовой матрицы легко узнать, как сосредоточить внимание на разных позициях при кодировании вектора в соответствующей позиции.
Однако из приведенных выше результатов расчетов видно, чтоКогда модель кодирует информацию о текущей позиции, она будет слишком сильно фокусироваться на своей собственной позиции.(хотя это здравый смысл) и может игнорировать другие позиции [2]. Поэтому одним из решений, которое принял автор, является использование механизма многоголового внимания (MultiHeadAttention), который мы увидим позже.
Это расширяет способность модели фокусироваться на разных позициях.Да, в приведенном выше примере z1 содержит немного любой другой кодировки, но само фактическое слово может доминировать над ним.
После того, как весовая матрица вычислена с помощью процесса, показанного на фиг.4, ее можно применить к V для получения окончательного закодированного вывода. Процесс вычисления показан на фиг.5.
В соответствии с процессом, показанным на рисунке 5, мы можем получить окончательный закодированный выходной вектор. Конечно, мы можем наблюдать вышеописанный процесс под другим углом, как показано на рисунке 6.
Как видно из рисунка 6, для конечного выходного вектора кодирования «да» это фактически взвешенная сумма исходных трех векторов «кто я», и это также отражает внимание, уделяемое кодированию «да». Весь процесс распределения мощности по весу.
Конечно, для всего процесса с рис. 4 по рис. 5 мы также можем выразить его с помощью процесса, показанного на рис. 7.
Можно видеть, что этот механизм внутреннего внимания действительно решил проблему, которую автор предложил в начале статьи, «недостатки традиционных моделей последовательностей должны выполняться последовательно в процессе кодирования». , необходимо только После нескольких матричных преобразований на исходном входе может быть получен окончательный закодированный вектор, содержащий информацию о внимании различных позиций.
Здесь была представлена основная часть механизма само-внимания, но осталось еще много деталей, которые не были представлены. Например, как получаются Q, K и V при взаимодействии кодировщика и декодера? Что означает операция «Маска», отмеченная на рис. 2, когда она используется и т. д.? Это содержание будет представлено одно за другим в следующем. Далее продолжим изучение механизма MultiHeadAttention.
3.2 MultiHeadAttention
После введения вышеупомянутого содержания у нас есть ясное понимание механизма само-внимания в определенной степени, но мы также упоминали выше, что дефект механизма само-внимания: когда модель ** кодирует информацию текущая позиция, будет слишком сильно фокусироваться на собственной позиции, поэтому автор предлагает решить эту проблему через механизм многоголового внимания. В то же время использование механизма внимания с несколькими головками также может дать вывод уровня внимания, чтобы он содержал закодированную информацию о представлении в разных подпространствах, тем самым повышая выразительную способность модели.
Multi-head attention allows the model to jointly attend to information from different representation subspaces at different positions.
После разговора о том, зачем нужен механизм внимания с несколькими головками и о преимуществах использования механизма внимания с несколькими головками, давайте посмотрим, что такое механизм внимания с несколькими головками.
Как показано на рисунке 8, можно видеть, что так называемый механизм внимания с несколькими головками на самом деле предназначен для выполнения нескольких наборов обработки собственного внимания на исходной входной последовательности; затем объединение результатов каждого набора собственного внимания для выполнения линейное преобразование для получения конечного результата. В частности, формула его расчета такова:
в
При этом в статье автор используетпараллельные модули само-внимания (8 головок) для построения уровня внимания, и для каждого модуля само-внимания.Отсюда мы можем фактически обнаружить, что механизм внимания с несколькими головками, используемый в статье, на самом деле разделяет большую многомерную единую голову надлинная. Таким образом, процесс расчета всего механизма многоголового внимания может быть представлен процессом, показанным на рисунке 9.
Как показано на рисунке 9, согласно входной последовательности X имы можем рассчитать, далее по формулеПолучается выход одного модуля внутреннего внимания; Аналогично, согласно X иПолучите еще один вывод модуля внутреннего внимания. Наконец,формирование горизонтального штабеля, затем используйтеумножить наПолучаются выходные данные всего слоя внимания с несколькими головками. В то же время, согласно процессу расчета на рисунке 8, также можно получить.
В этот момент была введена основная часть всего Трансформера, то есть принцип многоголового механизма внимания.
4 Резюме
В этой статье автор сначала представляет мотивацию статьи, в том числе проблемы, с которыми сталкивается традиционная сетевая структура, и контрмеры, предложенные автором; затем, что такое механизм само-внимания и соответствующий ему принцип; наконец, что такое Механизм многоголового внимания и преимущества использования многоголового внимания. В то же время для этой части содержания ключевым моментом для понимания является принцип расчета и процесс работы механизма самовнимания. В следующей статье автор подробно расскажет о кодировании позиции, а также о процессе кодирования и декодирования Transformer.
Это конец этого материала, спасибо за чтение! Если вы найдете вышеизложенное полезным,Добро пожаловать, чтобы поделиться с одним из ваших друзей! Если у вас есть какие-либо вопросы или предложения, пожалуйста, добавьте автора в WeChat 'nulls8' или добавьте группу для общения. Зеленые холмы не меняются, а зеленые воды текут вечно Увидимся в Moon Inn!
Цитировать
[1] Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need
[2] The Illustrated Transformer Джиангала Wrangler.GitHub.IO/иллюстрировано…
[3] LANGUAGE TRANSLATION WITH TRANSFORMER py torch.org/tutorials/ нет…
[4] The Annotated Transformer НЛП.моря.Гарвард.Сумма/2018/04/03/…
[5] SEQUENCE-TO-SEQUENCE MODELING WITH NN.TRANSFORMER AND TORCHTEXT py torch.org/tutorials/ нет…