[Перевод] Всё, что вам нужно — это внимание (часть 1)
Источник
Примечание переводчика: Недавно на Хабре мы рассказывали о статьях, которые нужно прочитать, если вы хотите заниматься искусственным интеллектом. Среди них была культовая статья Attention is all you need, выпущенная в 2017 году. С неё началось развитие больших языковых моделей, в том числе всем известного чат-бота ChatGPT. Оказалось, что у такой важной статьи нет перевода на русский язык. Мы решили исправить это. Ниже вы найдёте перевод первой части статьи, а скоро мы выпустим его продолжение.
Краткое содержание
Наиболее распространённые модели преобразования последовательностей основаны на сложных рекуррентных или свёрточных нейронных сетях, которые включают энкодер и декодер. В самых успешных моделях энкодер и декодер соединяются с помощью механизма внимания. В статье авторы предлагают новую простую архитектуру нейронных сетей — Трансформер. Он основан исключительно на механизмах внимания, без рекуррентности или свёрток. Эксперименты на двух задачах машинного перевода показали лучшее качество, а также больше возможностей к распараллеливанию и меньшие временные затраты на обучение. Модель достигает 28.4 по метрике BLEU на задаче перевода с английского на немецкий на данных WMT 2014, что превосходит предыдущий лучший результат на 2 пункта. На задаче перевода с английского на французский на данных WMT 2014 модель достигла наилучшего результата для решения, основанного на одной модели — 41.8 по метрике BLEU — после всего 3.5 дней обучения на 8 GPU, что составляет совсем небольшую часть тех вычислительных мощностей, которые были затрачены на обучение лучшей модели, известной из имеющихся публикаций. Авторы показывают, что Трансформер может также успешно применяться и в других задачах, таких как, например, синтаксический разбор предложений на английском языке с использованием как больших, так и весьма ограниченных наборов данных для обучения.
1. Введение
Рекуррентные нейронные сети, долгая краткосрочная память [13] и управляемые рекуррентные сети [7] в частности прочно зарекомендовали себя как самый передовой подход в задачах моделирования и преобразований последовательностей, таких как языковое моделирование и машинный перевод [35, 2, 5]. Значительные усилия с тех пор были приложены для того, чтобы раздвинуть границы рекуррентных языковых моделей и архитектур типа энкодер-декодер [38, 24, 15].
Рекуррентные модели в своих расчётах обычно учитывают позиции символов на входе и выходе последовательности. В ходе выравнивания позиций по шагам во время вычисления, они генерируют последовательность скрытых состояний в зависимости от предыдущего скрытого состояния и входных данных для позиции . Этот последовательный характер вычислений исключает распараллеливание в обучающих примерах, что становится критическим при более длинных последовательностях, поскольку ограничения памяти препятствуют пакетной обработке примеров. Последние исследования в области позволили добиться значительного повышения эффективности вычислений с помощью таких приёмов, как факторизация [21] и условные вычисления [32], а также, как в случае с последним, повышения производительности. Однако на фундаментальном уровне ограничение последовательных вычислений остаётся.
Механизм внимания стал неотъемлемой частью наиболее успешных моделей моделирования и преобразования последовательностей в различных задачах, позволяя моделировать зависимости без учёта удалённости элементов друг от друга во входной или выходной последовательности [2, 9]. В преобладающем большинстве случаев, кроме нескольких примеров [27], механизм внимания используется в сочетании с рекуррентной нейронной сетью.
В данной работе авторы предлагают Трансформер — архитектуру модели, избегающую рекуррентности и, вместо этого, полностью полагающуюся на механизм внимания для построения глобальных зависимостей между входной и выходной последовательностью. Трансформер обеспечивает значительную параллелизацию вычислений и достигает новых высот в качестве машинного перевода после всего 12-ти часов обучения на 8 GPU P100.
2. Предпосылки
Сокращение последовательных вычислений лежит в основе таких моделей, как Extended Neural GPU [16], ByteNet [18] и ConvS2S [9], которые используют свёрточные нейронные сети в качестве основного строительного блока и подсчитывают скрытые состояния параллельно для всех позиций на входе и выходе. В этих моделях количество операций, необходимых для связывания сигналов с двух произвольных входных или выходных позиций, растёт линейно (для ConvS2S) или логарифмически (в ByteNet) в зависимости от расстояния между этими позициями. Это затрудняет изучение зависимостей между удалёнными позициями [12].
В архитектуре Трансформера подобные расчёты сводятся к неизменяемому количеству операций, хотя и за счёт снижения эффективного разрешения, обусловленного усреднением позиций, взвешенных с помощью механизма внимания. Однако этот эффект авторы нивелируют с помощью механизма многоголового внимания, описанного в разделе 3.2.
Самовнимание, называемое также внутренним вниманием, представляет собой механизм внимания, устанавливающий отношения между различными позициями внутри одной последовательности и посчитывающий некоторое представление этой последовательности. Самовнимание успешно используется в различных задачах, включая понимание прочитанного, абстрактивную суммаризацию, текстовое следование и выучивание векторных представлений предложений, не специфичных для конкретных задач [4, 27, 28, 22].
Сквозные сети памяти основаны на рекуррентном механизме внимания, а не на рекуррентности в рамках последовательности, и, как было показано, хорошо справляются с ответами на простые вопросы и задачами языкового моделирования [34].
Тем не менее, насколько известно авторам на момент написания статьи, Трансформер является первой моделью, которая вычисляет представления входной и выходной последовательности, основываясь только на механизме самовнимания, без использования рекуррентных или свёрточных нейронных сетей. В следующих разделах изложено подробное описание архитектуры Трансформера, мотивация, стоящая за механизмом самовнимания, а также преимущества предложенного подхода перед такими моделями, как описано в [17, 18] и [9].
3. Архитектура модели
Большинство современных нейросетевых моделей преобразования последовательностей имеют структуру энкодер-декодер [5, 2, 35]. Так, в энкодере символьное представление входной последовательности переводится в последовательность непрерывных представлений . При заданном , декодер затем генерирует выходную последовательность символов , по одному элементу за один раз. На каждом шаге модель является авторегрессионной [10], потребляя ранее сгенерированные символы в качестве дополнительных входных данных при генерации следующего символа.
Трансформер следует этой общей архитектуре, используя стеки внутреннего внимания и поканальные (pointwise) полносвязные слои как для энкодера, так и для декодера, показанные в левой и правой частях рисунка 1 соответственно.
Рис. 1: Трансформер — архитектура модели
▍ 3.1 Стеки энкодеров и декодеров
Энкодер: Энкодер состоит из стеков в идентичных слоёв. Каждый слой имеет два подслоя. Первый представляет собой механизм самовнимания с несколькими головами, а второй — простой полносвязный слой прямого распространения. Авторы используют остаточное соединение [11] вокруг каждого из двух подслоев с последующей нормализацией слоя [1]. То есть выходом каждого подслоя является , где — это функция, реализуемая самим подслоем. Чтобы облегчить эти остаточные соединения, все подслои в модели, а также слои эмбеддингов, производят выходные данные размерности .
Декодер: Декодер также состоит из стека в идентичных слоёв. В дополнение к двум подслоям в каждом слое энкодера, в декодере добавляется третий подслой, который запускает механизм внимания на нескольких головах на выходе со стека энкодера. Аналогично энкодеру, авторы используют остаточные соединения вокруг каждого из подслоев с последующей нормализацией слоя. Помимо этого в подслоях декодера модифицируется механизм самовнимания для того, чтобы избежать обращения к последующим позициям. Это маскирование в сочетании с тем фактом, что выходные эмбеддинги смещены на одну позицию, гарантирует, что предсказания для позиции могут зависеть только от известных выходов в позициях, меньших .
▍ 3.2 Внимание
Функцию внимания можно описать как сопоставление запроса (query) и набора пар ключ-значение (key-value) с выходными данными, где запрос, ключи, значения и выходные данные являются векторами. Результат вычисляется как взвешенная сумма значений, где вес, присвоенный каждому значению, вычисляется функцией совместимости запроса и соответствующего ключа.
Рис. 2: Слева — внимание на основе масштабированного скалярного произведения. Справа — «многоголовое» внимание состоит из нескольких слоёв внимания, работающих параллельно
▍ 3.2.1 Внимание на основе масштабированного скалярного произведения
Авторы называют свою реализацию механизма внимания «Вниманием на основе масштабированного скалярного произведения» (см. рис. 2). Вход представляет собой запросы и ключи размерностью и значения размерностью . Сначала подсчитываются скалярные произведения запроса со всеми ключами, затем каждое делится на , после чего применяется функция softmax для получения весов для значений.
На практике, функция внимания одновременно подсчитывается на наборе запросов, упакованных в матрицу . Ключи и значения также сложены вместе в матрицы и соответственно. Итоговая выходная матрица подсчитывается как:
Двумя наиболее часто используемыми функциями внимания являются аддитивное внимание [2] и внимание скалярного произведения (мультипликативное внимание). Последнее идентично предложенному выше алгоритму, за исключением коэффициента масштабирования . Аддитивное внимание вычисляет функцию совместимости, используя сеть прямого распространения с одним скрытым слоем. Несмотря на то что теоретическая сложность этих двух методов одинакова, внимание скалярного произведения на практике намного быстрее и экономичнее с точки зрения памяти, поскольку его можно реализовать в виде высокооптимизированного кода умножения матриц.
В то время как при малых значениях оба механизма работают одинаково, при больших значениях аддитивное внимание превосходит внимание на основе скалярного произведения без масштабирования [3]. Авторы предполагают, что при больших значениях , скалярные произведения становятся слишком большими, что толкает функцию softmax в области, где она имеет очень маленькие градиенты.
Чтобы противодействовать этому эффекту, авторы масштабируют скалярные произведения на .
▍ 3.2.2 Многоголовое внимание
Вместо того, чтобы выполнять единую функцию внимания с ключами, значениями и запросами размерности dmodel, было решено полезным линейно проецировать запросы, ключи и значения h раз с разными, выученными линейными проекциями на размерности , и соответственно. На каждой из этих спроецированных версий запросов, ключей и значений параллельно выполняется функция внимания, в результате чего получаются выходные значения размерности . Они конкатенируются и снова проецируются, благодаря чему получаются окончательные значения, как изображено на рисунке 2.
Многоголовое внимание позволяет модели совместно воспринимать информацию из разных подпространств представлений на разных позициях. При одной голове внимания усреднение препятствует этому.
Где проекции — это параметрические матрицы , , и .
В этой работе значение брали равным 8 параллельным слоям внимания, или «головам». Для каждой из них бралось . Из-за уменьшенного размера каждой головы общие вычислительные затраты схожи с затратами на внимание одной головы с полной размерностью.
▍ 3.2.3 Применение механизма внимания в предложенной модели
Трансформер использует многоголовое внимание тремя различными способами:
- В слоях внимания энкодера-декодера запросы приходят от предыдущего слоя декодера, и ключи и значения памяти приходят из выхода энкодера. Это позволяет каждой позиции в декодере обращаться ко всем позициям в выходной последовательности. Это имитирует типичные механизмы внимания энкодера-декодера в моделях типа sequence-to-sequence, таких как [38, 2, 9].
- Энкодер содержит слои самовнимания. В таком слое все ключи, значения и запросы приходят из одного и того же места, в данном случае — выхода предыдущего слоя энкодера. Каждая позиция в энкодере может обращаться ко всем позициям в предыдущем слое энкодера.
- Схожим образом слои самовнимания в декодере позволяют каждой позиции в декодере обращаться ко всем позициям в декодере до текущей позиции включительно. Здесь важно предотвратить движение информации влево в декодере для сохранения свойства авторегрессии. Авторы реализовали внутри механизма внимания на основе масштабированного скалярного произведения, маскировав (установив значение −∞) все значения во входных данных для функции softmax, которые соответствуют нежелательным соединениям (см. рис. 2).
▍ 3.3 Позиционные сети прямого распространения
В дополнение к подслоям внимания, каждый из слоёв энкодера и декодера содержит полносвязную сеть прямого распространения, которая применяется к каждой позиции отдельно и идентично. Она состоит из двух линейных преобразований с функцией активацией ReLU между ними.
Хотя линейные преобразования одинаковы для разных позиций, они используют разные параметры от слоя к слою. По-другому это можно описать как две свёртки с размером ядра 1. Размерность входа и выхода модели равна , а внутренний слой имеет размерность .
▍ 3.4 Эмбеддинги и Softmax
Как и в других моделях преобразования последовательности, авторы используют выученные эмбеддинги для преобразования входных и выходные токенов в векторы размерности . Для преобразования выхода декодера в предсказанные вероятности следующего токена используется обычное выученное линейное преобразование и функция softmax. В модели используется одна и та же матрица весов между двумя слоями эмбеддингов и предваряющее softmax линейное преобразование, аналогично [30]. В слоях эмбеддингов эти веса умножаются на .
Продолжение следует…
[1] Jimmy Lei Ba, Jamie Ryan Kiros, and Geoffrey E Hinton. Layer normalization. arXiv preprint
arXiv:1607.06450, 2016.
[2] Dzmitry Bahdanau, Kyunghyun Cho, and Yoshua Bengio. Neural machine translation by jointly
learning to align and translate. CoRR, abs/1409.0473, 2014.
[3] Denny Britz, Anna Goldie, Minh-Thang Luong, and Quoc V. Le. Massive exploration of neural
machine translation architectures. CoRR, abs/1703.03906, 2017.
[4] Jianpeng Cheng, Li Dong, and Mirella Lapata. Long short-term memory-networks for machine
reading. arXiv preprint arXiv:1601.06733, 2016.
[5] Kyunghyun Cho, Bart van Merrienboer, Caglar Gulcehre, Fethi Bougares, Holger Schwenk,
and Yoshua Bengio. Learning phrase representations using rnn encoder-decoder for statistical
machine translation. CoRR, abs/1406.1078, 2014.
[6] Francois Chollet. Xception: Deep learning with depthwise separable convolutions. arXiv
preprint arXiv:1610.02357, 2016.
[7] Junyoung Chung, Çaglar Gülçehre, Kyunghyun Cho, and Yoshua Bengio. Empirical evaluation
of gated recurrent neural networks on sequence modeling. CoRR, abs/1412.3555, 2014.
[8] Chris Dyer, Adhiguna Kuncoro, Miguel Ballesteros, and Noah A. Smith. Recurrent neural
network grammars. In Proc. of NAACL, 2016.
[9] Jonas Gehring, Michael Auli, David Grangier, Denis Yarats, and Yann N. Dauphin. Convolu-
tional sequence to sequence learning. arXiv preprint arXiv:1705.03122v2, 2017.
[10] Alex Graves. Generating sequences with recurrent neural networks. arXiv preprint
arXiv:1308.0850, 2013.
[11] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep residual learning for im-
age recognition. In Proceedings of the IEEE Conference on Computer Vision and Pattern
Recognition, pages 770–778, 2016.
[12] Sepp Hochreiter, Yoshua Bengio, Paolo Frasconi, and Jürgen Schmidhuber. Gradient flow in
recurrent nets: the difficulty of learning long-term dependencies, 2001.
[13] Sepp Hochreiter and Jürgen Schmidhuber. Long short-term memory. Neural computation,
9(8):1735–1780, 1997.
[14] Zhongqiang Huang and Mary Harper. Self-training PCFG grammars with latent annotations
across languages. In Proceedings of the 2009 Conference on Empirical Methods in Natural
Language Processing, pages 832–841. ACL, August 2009.
[15] Rafal Jozefowicz, Oriol Vinyals, Mike Schuster, Noam Shazeer, and Yonghui Wu. Exploring
the limits of language modeling. arXiv preprint arXiv:1602.02410, 2016.
[16] Łukasz Kaiser and Samy Bengio. Can active memory replace attention? In Advances in Neural
Information Processing Systems, (NIPS), 2016.
[17] Łukasz Kaiser and Ilya Sutskever. Neural GPUs learn algorithms. In International Conference
on Learning Representations (ICLR), 2016.
[18] Nal Kalchbrenner, Lasse Espeholt, Karen Simonyan, Aaron van den Oord, Alex Graves, and Ko-
ray Kavukcuoglu. Neural machine translation in linear time. arXiv preprint arXiv:1610.10099v2,
2017.
[19] Yoon Kim, Carl Denton, Luong Hoang, and Alexander M. Rush. Structured attention networks.
In International Conference on Learning Representations, 2017.
[20] Diederik Kingma and Jimmy Ba. Adam: A method for stochastic optimization. In ICLR, 2015.
[21] Oleksii Kuchaiev and Boris Ginsburg. Factorization tricks for LSTM networks. arXiv preprint
arXiv:1703.10722, 2017.
[22] Zhouhan Lin, Minwei Feng, Cicero Nogueira dos Santos, Mo Yu, Bing Xiang, Bowen
Zhou, and Yoshua Bengio. A structured self-attentive sentence embedding. arXiv preprint
arXiv:1703.03130, 2017.
[23] Minh-Thang Luong, Quoc V. Le, Ilya Sutskever, Oriol Vinyals, and Lukasz Kaiser. Multi-task
sequence to sequence learning. arXiv preprint arXiv:1511.06114, 2015.
[24] Minh-Thang Luong, Hieu Pham, and Christopher D Manning. Effective approaches to attention-
based neural machine translation. arXiv preprint arXiv:1508.04025, 2015.
[25] Mitchell P Marcus, Mary Ann Marcinkiewicz, and Beatrice Santorini. Building a large annotated
corpus of english: The penn treebank. Computational linguistics, 19(2):313–330, 1993.
[26] David McClosky, Eugene Charniak, and Mark Johnson. Effective self-training for parsing. In
Proceedings of the Human Language Technology Conference of the NAACL, Main Conference,
pages 152–159. ACL, June 2006.
[27] Ankur Parikh, Oscar Täckström, Dipanjan Das, and Jakob Uszkoreit. A decomposable attention
model. In Empirical Methods in Natural Language Processing, 2016.
[28] Romain Paulus, Caiming Xiong, and Richard Socher. A deep reinforced model for abstractive
summarization. arXiv preprint arXiv:1705.04304, 2017.
[29] Slav Petrov, Leon Barrett, Romain Thibaux, and Dan Klein. Learning accurate, compact,
and interpretable tree annotation. In Proceedings of the 21st International Conference on
Computational Linguistics and 44th Annual Meeting of the ACL, pages 433–440. ACL, July
2006.
[30] Ofir Press and Lior Wolf. Using the output embedding to improve language models. arXiv
preprint arXiv:1608.05859, 2016.
[31] Rico Sennrich, Barry Haddow, and Alexandra Birch. Neural machine translation of rare words
with subword units. arXiv preprint arXiv:1508.07909, 2015.
[32] Noam Shazeer, Azalia Mirhoseini, Krzysztof Maziarz, Andy Davis, Quoc Le, Geoffrey Hinton,
and Jeff Dean. Outrageously large neural networks: The sparsely-gated mixture-of-experts
layer. arXiv preprint arXiv:1701.06538, 2017.
[33] Nitish Srivastava, Geoffrey E Hinton, Alex Krizhevsky, Ilya Sutskever, and Ruslan Salakhutdi-
nov. Dropout: a simple way to prevent neural networks from overfitting. Journal of Machine
Learning Research, 15(1):1929–1958, 2014.
[34] Sainbayar Sukhbaatar, Arthur Szlam, Jason Weston, and Rob Fergus. End-to-end memory
networks. In C. Cortes, N.D. Lawrence, D.D. Lee, M. Sugiyama, and R. Garnett, editors,
Advances in Neural Information Processing Systems 28, pages 2440–2448. Curran Associates,
Inc., 2015.
[35] Ilya Sutskever, Oriol Vinyals, and Quoc VV Le. Sequence to sequence learning with neural
networks. In Advances in Neural Information Processing Systems, pages 3104–3112, 2014.
[36] Christian Szegedy, Vincent Vanhoucke, Sergey Ioffe, Jonathon Shlens, and Zbigniew Wojna.
Rethinking the inception architecture for computer vision. CoRR, abs/1512.00567, 2015.
[37] Vinyals & Kaiser, Koo, Petrov, Sutskever, and Hinton. Grammar as a foreign language. In
Advances in Neural Information Processing Systems, 2015.
[38] Yonghui Wu, Mike Schuster, Zhifeng Chen, Quoc V Le, Mohammad Norouzi, Wolfgang
Macherey, Maxim Krikun, Yuan Cao, Qin Gao, Klaus Macherey, et al. Google«s neural machine
translation system: Bridging the gap between human and machine translation. arXiv preprint
arXiv:1609.08144, 2016.
[39] Jie Zhou, Ying Cao, Xuguang Wang, Peng Li, and Wei Xu. Deep recurrent models with
fast-forward connections for neural machine translation. CoRR, abs/1606.04199, 2016.
[40] Muhua Zhu, Yue Zhang, Wenliang Chen, Min Zhang, and Jingbo Zhu. Fast and accurate
shift-reduce constituent parsing. In Proceedings of the 51st Annual Meeting of the ACL (Volume
1: Long Papers), pages 434–443. ACL, August 2013.
Telegram-канал с розыгрышами призов, новостями IT и постами о ретроиграх