Чтение онлайн

на главную - закладки

Жанры

Охота на электроовец. Большая книга искусственного интеллекта
Шрифт:

6.3.3.5 Вторая революция в NLP: трансформеры

Список моделей внимания можно продолжать ещё очень долго. Были изобретены латентное [latent] и активное [active] внимание, гауссовское [Gaussian] внимание, свёрточные нейронные сети на базе внимания (Attention Based Convolutional Neural Network, ABCNN), разложимая модель внимания [Decomposable Attention Model], областное внимание [Area Attention] и даже нейросетевой трансдьюсер (преобразователь) для онлайн-внимания [Neural Transducer for Online Attention]. Из описаний различных моделей на основе внимания и полученных при их помощи результатов можно было бы составить отдельную книгу, но здесь мы подробно остановимся лишь на одной из них, тем более что ей было суждено положить начало второй коннекционистской революции в области обработки естественного языка. Эта модель называется «трансформер» [transformer]. Она была представлена научному сообществу в 2017 г. в статье с программным названием «Внимание — это всё, что вам нужно» (Attention Is All You Need) [2161] , написанной группой исследователей из Google Brain и Google Research.

2161

Vaswani A., Shazeer N., Parmar N., Uszkoreit J., Jones L., Gomez A. N., Kaiser L., Polosukhin I. (2017). Attention Is All You Need / Proceedings of the 31st Conference on Neural Information Processing Systems (NIPS 2017) // https://papers.nips.cc/paper/7181-attention-is-all-you-need.pdf

Как

часто бывает, некоторые идеи, положенные в основу трансформера, можно найти в работах [2162] , [2163] , [2164] , написанных в начале 1990-х годов Юргеном Шмидхубером [2165] . Тип внимания, положенный в основу трансформера, называется особенно страшно — «многоголовое внутреннее внимание» [multi-headed self-attention]. Разумеется, по-русски так его никто не называет, вместо этого отечественные специалисты просто используют термин в его английском варианте.

2162

Schmidhuber J. (1991). Learning to control fast-weight memories: An alternative to recurrent nets. Technical Report FKI147-91, Institut fur Informatik, Technische Universitat Munchen, March 1991 // https://people.idsia.ch/~juergen/FKI-147-91ocr.pdf

2163

Schmidhuber J. (1992). Learning to control fast-weight memories: An alternative to dynamic recurrent networks / Neural Computation, Vol. 4, Iss. 1, pp. 131–139 // https://doi.org/10.1162/neco.1992.4.1.131

2164

Schmidhuber J. (1993). Reducing the ratio between learning complexity and number of time varying variables in fully recurrent nets. / International Conference on Artificial Neural Networks (ICANN), pp. 460–463 // https://doi.org/10.1007/978-1-4471-2063-6_110

2165

Schlag I., Irie K., Schmidhuber J. (2021). Linear Transformers Are Secretly Fast Weight Programmers // https://arxiv.org/abs/2102.11174

Одна из проблем рекуррентных сетей заключается в том, что при их вычислении трудно добиться эффективного параллелизма. Действительно, для того чтобы вычислить следующее состояние сети, необходимо получить результат вычисления предыдущего состояния — сама природа рекуррентной сети последовательна, поэтому максимум, что можно сделать, это вычислять параллельно результаты для разных последовательностей либо выполнять параллельные вычисления в пределах одного состояния рекуррентной сети, однако оба этих подхода обычно не позволяют в полной мере использовать вычислительный потенциал тензорных процессоров. Нельзя ли вообще отказаться от рекуррентной сети в пользу нерекуррентной архитектуры, сохранив при этом механизм внимания, показавший свою эффективность? Оказывается, можно (именно на это ненавязчиво указывает нам заголовок статьи исследователей из Google).

Рассмотрим для примера предложение: «Люди одиноки, потому что вместо мостов они строят стены». Кто такие в данном случае «они»? Человек, прочитавший это предложение, без особого труда понимает, что в данном случае слово «они» относится к слову «люди». Можно сказать, что у нас в голове возникает представление о наличии определённого отношения (в данном случае — тождества) между словами «они» и «люди». Другое отношение связывает слова «они» и «строят», а также «люди» и «строят» — это отношения вида «A выполняет действие B». И так далее — слова в высказывании связаны определёнными отношениями. Идея multi-headed self-attention заключается в том, чтобы для разных типов отношений (за каждый из них отвечает отдельная «голова» сети внимания, так же как в свёрточной сети за каждый выявляемый слоем свёртки признак отвечает отдельный набор весов для свёрточного ядра) рассчитать матрицу выравниваний, то есть для каждой пары слов в предложении выяснить, в какой мере выражено для неё данное отношение.

На рисунке для всех слов предложения показаны отношения со словом «они» у разных «голов внимания» (обозначенных синим, зелёным и оранжевым цветом), насыщенность цвета показывает выраженность отношения. Пример условный, для упрощения показаны только три «головы», а не восемь.

Рис. 131. Условный пример, показывающий отношения со словом «они» для разных «голов внимания»

Для вычисления матрицы выравниваний в трансформере используется довольно красивая матричная операция, имитирующая извлечение значения из таблицы по ключу. Так же как и в случае «обычного» внимания, каждый из векторов эмбеддингов слов (которые являются в нашем случае аналогами состояний кодировщика) при помощи трёх проекций превращается в три новых вектора одинаковой размерности: вектор запроса Q (от query), вектор ключа K (от key) и вектор значения V (от value). После этого создаётся матрица, элементы которой будут показывать «отношения» между различными словами предложения (эту матрицу называют «матрицей внимания» [attention matrix]). Для этого элемент матрицы с индексами i и j вычисляется как скалярное произведение вектора запроса Qi и вектора ключа Kj. Далее каждый элемент этой матрицы делится на квадратный корень из размерности вектора ключа K, а затем

результат построчно пропускается через softmax-слой (тем самым производится нормализация коэффициентов, чтобы для каждой строки матрицы они в сумме давали единицу).

Далее для каждого слова предложения все векторы значений V умножаются на коэффициенты соответствующей этому слову строки из матрицы выравниваний и складываются, тем самым формируя некий итоговый вектор значений V. Таким образом, в нём будут хорошо учтены слова, имеющие определённые «отношения» с рассматриваемым словом, а иные слова, напротив, будут учтены слабо. Это и будет выходом такой подсети для данного слова предложения.

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

Рис. 132. Схема вычисления матрицы выравниваний в трансформере

На выходе подсетей возникает матрица той же размерности, что и на входе сети внимания. Однако такой выход у нас имеется для каждой из «голов внимания». Поэтому полученные матрицы мы склеиваем (конкатенируем) друг с другом, а затем превращаем в матрицу исходной размерности при помощи слоя проекции. Именно поэтому модель и называют трансформером — она трансформирует полученные на вход данные, не меняя их размерности. Благодаря этому свойству описанные нами блоки кодировщиков можно укладывать подобно стопке блинов — выходы одного блока становятся входами следующего. Для борьбы с исчезающими градиентами используются, как и в свёрточных сетях, перепрыгивающие связи.

Блок декодера в трансформерах устроен аналогичным образом за той лишь существенной разницей, что он имеет два входа: на один подаётся выход кодировщика, на второй — выход сети внимания, применённой к уже известной части выходной последовательности (этот тип внимания называется «многоголовым вниманием с маской» [masked multi-head attention], маска используется для исключения неизвестных на данный момент частей выходной последовательности).

Ещё одним интересным трюком, использованным в оригинальном трансформере, является применение так называемого позиционного кодирования. Дело в том, что сам по себе трансформер, подобно свёрточным сетям, теряет информацию о порядке следования слов, поэтому эту информацию следует добавлять к векторам эмбеддинга. Можно было бы добавить, например, порядковый номер слова в качестве ещё одной компоненты в эти векторы, но на практике лучше работают более хитрые способы. В оригинальной версии трансформера вычисляют так называемую матрицу позиционного кодирования [positional encoding] размером W x n, где W — размерность вектора эмбеддинга слова, а n — максимальное количество слов в обрабатываемом моделью тексте. В нечётные строки этой матрицы записываются значения, равные

sin ( j/10000i /n)
, а в чётные — равные
cos ( j/10000(i – 1)/ n)
, где i — номер строки, а j — номер столбца. Значения в каждом столбце матрицы напоминают показания причудливых часов, оснащённых множеством стрелок, причём у каждой следующей стрелки период обращения немного больше, чем у предыдущей. Применение нескольких временных шкал позволяет с лёгкостью обнаруживать в последовательности периодические явления с разной длиной периода. Затем матрицу позиционного кодирования складывают с матрицей, составленной из векторов эмбеддинга (эти матрицы имеют одинаковую размерность), и подают на вход блока внимания. Таким образом, вектор эмбеддинга для токена теперь включает информацию о позиции токена в обрабатываемой последовательности. Этот подход сегодня обычно называют «синусоидальным позиционным кодированием» [sinusoidal position encoding], а в целом методы, в которых векторы, соответствующие каждому из токенов, дополняются информацией об абсолютной позиции токена в обрабатываемой последовательности, называют «абсолютным позиционным кодированием» (Absolute positional encoding, APE).

Рис. 133. Архитектура нейросетевой модели BERT, основанной на блоках трансформера. CLS — специальный символ, добавляемый в начало каждого примера, SEP — специальный токен-разделитель. Каждому токену входной последовательности соответствует вектор эмбеддинга размерностью 768

Авторы оригинальной версии трансформера также исследовали подход, при котором модель сама выучивала матрицу позиционного кодирования. Каждому порядковому номеру токена в последовательности сопоставляется вектор, который на старте обучения инициализируется случайными значениями. Затем векторы эмбеддингов выучиваются одновременно с остальными параметрами сети, что позволяет в процессе обучения подстроить эмбеддинги так, чтобы они сочетались с временной компонентой наиболее полезным для модели образом. Такие эмбеддинги называют «абсолютными позиционными» (Absolute Positional Embeddings), а замена слова encoding на embedding подчёркивает особенность применяемого механизма (однако совпадение аббревиатур нередко служит источником непонимания для начинающих).

Обе версии трансформера показали в экспериментах примерно одинаковые результаты, поэтому авторы остановились на версии с синусоидальным кодированием, так как очевидным недостатком второго способа является то, что обученная модель будет способна работать только с последовательностями, длина которых не превышает количества выученных векторов позиционного эмбеддинга. Это, впрочем, не остановило создателей более поздних моделей на основе трансформерной архитектуры, например популярной и по сей день модели BERT (Bidirectional Encoder Representations from Transformers, Двунаправленный кодировщик представлений на основе трансформеров) [2166] , в которой для кодирования позиционной информации используются именно абсолютные позиционные эмбеддинги.

2166

Devlin J., Chang M.-W., Lee K., Toutanova K. (2018). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding // https://arxiv.org/abs/1810.04805

Поделиться:
Популярные книги

На границе империй. Том 9. Часть 5

INDIGO
18. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 5

Господин моих ночей (Дилогия)

Ардова Алиса
Маги Лагора
Любовные романы:
любовно-фантастические романы
6.14
рейтинг книги
Господин моих ночей (Дилогия)

Начальник милиции. Книга 4

Дамиров Рафаэль
4. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции. Книга 4

Сама себе хозяйка

Красовская Марианна
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Сама себе хозяйка

Кодекс Крови. Книга V

Борзых М.
5. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга V

Бастард Императора. Том 8

Орлов Андрей Юрьевич
8. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 8

Газлайтер. Том 10

Володин Григорий
10. История Телепата
Фантастика:
боевая фантастика
5.00
рейтинг книги
Газлайтер. Том 10

Новый Рал 4

Северный Лис
4. Рал!
Фантастика:
попаданцы
5.00
рейтинг книги
Новый Рал 4

Метаморфозы Катрин

Ром Полина
Фантастика:
фэнтези
8.26
рейтинг книги
Метаморфозы Катрин

Возвышение Меркурия

Кронос Александр
1. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия

Графиня Де Шарни

Дюма-отец Александр
Приключения:
исторические приключения
7.00
рейтинг книги
Графиня Де Шарни

Измена. Право на сына

Арская Арина
4. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на сына

Призван, чтобы защитить?

Кириллов Сергей
2. Призван, чтобы умереть?
Фантастика:
фэнтези
рпг
7.00
рейтинг книги
Призван, чтобы защитить?

На границе империй. Том 7. Часть 3

INDIGO
9. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.40
рейтинг книги
На границе империй. Том 7. Часть 3