[Перевод] 'Attention is all you need' простым языком

Некоторое время назад я повесил статью с кратким обзором техник векторизации, и мне показалось логичным продолжить эту тему попыткой разобраться с тем, в какую сторону NLP шагнула дальше — выбор пал на механизм attention. Мы с Дарьей, моей коллегой по переводу, перевели и переработали видеоролик «Attention is all you need explained» в статью, которую и представляем вашему вниманию. Заранее прошу прощения за светофор в картинках: по-другому черный фон из скриншотов убрать не получалось :).

Введение

В 2017 году, в статье Attention is all you need, исследователи из Google представили архитектуру Transformer. Новизна Transformer заключалась в использовании self-attention (досл. с англ. — самовнимание, внутреннее внимание) — механизма, благодаря которому модель может сосредоточиться не на всех сразу, а на наиболее важных элементах входной последовательности.

2vhxgxld0o-dlxiblqgz3_p5bmu.png

Рассмотрим этот механизм и модель подробнее.

1. Зачем нужен attention

1.1. Про рекуррентные нейронные сети (RNNs)

До появления Transformer задачи NLP стандартно обрабатывались через рекуррентные нейронные сети (RNN) — они умеют сохранять внутреннее состояние, то есть помнить и учитывать результаты, полученные из предыдущей входной последовательности.

b9tqzrqcvx7syi-1jhbkxo40o1o.png

У RNN есть пара недостатков:

  1. в них сложно параллелить задачи;

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

1.2. Transformers. Механизм 'Self-attention'

Transformer устраняет эти недостатки, используя вместо рекуррентности механизм self-attention. Self-attention определяет веса важности элементов входной последовательности и не требует сохранять состояния, что решает обе упомянутые выше проблемы RNN.

oky34ggnd2fyyc40kwe8zm3n0lk.png

1.3. Лингвистические сложности

Рассмотрим два предложения. Они похожи по смыслу и отличаются лишь одним словом. В первом предложении she принадлежит Alice, во втором — Barbara.

k5o98oaldmgmaowme0a7j7evjpw.png

В первом предложении есть younger, поэтому attention относит she к Alice.

a0rgnjdds-t_vikggozkcmryzym.png

Во втором предложении есть older, поэтому attention относит she к Barbara.

mgp6fc3aahhtbaww3jj23jwft_a.png

Переключение attention обусловлено тем, что more experienced связано с even though.

lfxgsts32er0ya2nz_ioje8ahsa.png

Рассмотрим другие два предложения с очень похожими формулировками, но с разными смыслами. Сосредоточимся на слове it.

ek5yban5zaqomp4msw5znxem4u4.png

В первом предложении it связано со swap, во втором — с AI. Людям это интуитивно понятно.

pkbf3bsnnelm-lqidzjtvfuzcli.png

Эффективная языковая модель тоже должна понимать эти нюансы — семантику слов, их порядок в предложении. Модель должна уметь сосредотачиваться на конкретных членах предложения и выявлять взаимосвязанные слова, причем все эти процессы должны быть реализованы исключительно через числовые представления и трансформации.

iwzfiog5zfqag2lxdxaagi-fdrs.png

1.4. Машины понимают только числа

ИИ понимает и хорошо умеет работать только со скалярами, векторами, матрицами и тензорами (даже если тензоры большие и многомерные).

2. Суть идеи attention

2.1. Проектирование attention

Проблема решилась созданием трех матриц. Они работают с эмбеддингами слов, где представлена семантика каждого слова. Семантическое представление в свою очередь было вычислено по частотности и встречаемости этого слова вместе с другими.

gd_ympchb5iqj-3tya9tghfiikg.pngrnhzeyxhya67lhwctvrfybylwxu.png

В эмбеддинге также содержится позиционная информация, которая вычисляется через синусоиды и косинусоиды.

8zn2jc_vt_tlfm7tve8ehxysdtm.pngdcmikq2t4tw5ye_1yhmyegqsueu.png

Три упомянутые выше матрицы — это:

Как и с семантикой в эмбеддингах, веса в этих матрицах рассчитываются при обучении. Отметим, что во время обучения в сеть типа GPT-3 или ChatGPT передаются огромные объемы текста. В частности, ChatGPT сообщает, что сеть обучалась на более чем триллионе обучающих примеров общим объемом в 45 терабайт. Поверим ей на слово :)

ppo5auerwc6ximgtssybdv7be1y.pngaxp_h1wmnsjrgd3lqywmckrmtv4.png8gpeuw7mujoylzwgvzsdciecl-y.png

2.2. Обратное распространение ошибки

GPT-3 использует алгоритм обратного распространения ошибки (backpropagation). Этот алгоритм обновляет внутренние веса нейронных сетей с целью минимизации функции потерь (loss function).

2.2.1. Как он работает?

а. Сеть делает предположение по пакету входной последовательности.

p7jhxhh2d7it7buhfrdiimsvjby.png

б. Вычисляется размер потерь между ожидаемым и полученным выводом.

xnzufzwwozvybdq0gvjjntw-z7c.png

г. Рассчитываются градиенты потерь по правилу дифференцирования сложных функций (chain rule).

д. Для снижения ошибок веса обновляются против градиента потерь.

3eousribes4oic7crvey2-wqn2o.png

е. Этот процесс останавливается при достижении критерия сходимости (convergence), когда размер потерь не превышает заданное пороговое значение, или когда число итераций достигает предельного значения.

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

2.3. Матрицы Query, Key и Value

Веса матриц Query, Key и Value рассчитываются во время обучения сети. Матрицы работают с позиционными представлениями внутри эмбеддингов слов из входной последовательности.

ix6i2xqg4dnfmdjsk3vi7ohquey.png

  • Матрица [Q]uery — слово, для которого рассчитывается значение attention.

  • Матрица [K]ey — слово, которое оценивается через attention. Собственные значения и собственные векторы (eigenvalues и eigenvectors) в этих двух матрицах обычно схожи, и через их произведение рассчитывается оценка attention. Высокая оценка означает, что слова сильно взаимосвязаны, а низкая — что слабо взаимосвязаны.

  • Матрица [V]alue затем смотрит, насколько оценка attention для каждой пары слов соотносится с векторной оценкой правильного слова, предъявляемого сети во время обучения.

2.4. Аналогия

Модель Transformer предсказывает следующее слово в последовательности, которой может быть перевод с одного языка на другой, краткое изложение длинного текста или создание текста статьи по ее заголовку.

Цель — сгенерировать наилучшее возможное слово или серию слов в выходной последовательности, для чего и используют attention.

Чтобы лучше понять этот механизм, представьте, что вы детектив, который пытается решить дело. У вас есть много улик, записей и подсказок, но вам нужно сосредоточиться только на важном, а все остальное — игнорировать. По такому же принципу attention работает в Transformer.

Матрица Q подобна списку вопросов, которые вы держите в уме, чтобы раскрыть дело — она помогает программе «понять» текст.

Матрица K похожа на набор имеющихся улик. Для раскрытия дела вам нужно просмотреть их все, но в итоге вы сосредотачиваетесь только на наиболее релевантных уликах — соответственно и оценка attention рассчитывается через произведение матриц Q и K.

Матрица V обозначает релевантность рассматриваемой улики для дела. Дело в том, что, например, согласно оценке attention некие два слова могут быть сильно взаимосвязаны, но в то же время этими словами могут быть местоимение и существительное — и это нам никак не поможет предсказать следующее слово в последовательности.

Сценарий

Query

Key

Value

Детектив

Список вопросов для раскрытия дела

Выявление наиболее релевантных для дела улик

Определение релевантности рассматриваемых улик для раскрытия дела

Transformer

Выбор между резюмированием, переводом и созданием текста для предсказания следующего слова

Выбор слов, взаимосвязанных с представленным словом

Релевантность полученной пары слов к верному предсказанию

Поиск в библиотеке

Список вопросов по теме исследования

Библиотечный каталог

Релевантность книг из каталога для области исследования

2.5. Формула Query, Key и Value

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

gsfyliac9wre_pczv3f5p6solgs.png

Математически это можно записать в виде следующей формулы:

gas2m1ru64_9qyp06i2h-pez16a.png

а. Умножить матрицу Q на транспонированную матрицу K. Результат — немасштабированная оценка attention.

б. Отмасштабировать оценку attention, разделив её на квадратный корень из размерности матрицы K. Размерностью может быть любое число; стандартно это — 64, значит делим на 8).

в. Затем отмасштабировать через softmax, чтобы все пересчитанные веса в сумме давали единицу.

г. Умножить эти отмасштабированные и нормализованные оценки attention на матрицу V.

Заключение

В заключение, модели Transformer, такие как ChatGPT и GPT-3, используются для таких задач по обработке языка, как перевод с одного языка на другой, перевод на язык программирования, краткое изложение текста, создание статьи по заголовку. Во всех случаях необходимо предсказывать следующее слово в последовательности.

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

Attention использует три матрицы, которые задействуют алгоритм обратного распространения ошибки. Благодаря attention вместе с векторным представлением семантики и позиций слова Transformer умеет справляться с переводом, смысловой компрессией или созданием контента.

© Habrahabr.ru