litbaza книги онлайнРазная литератураОхота на электроовец. Большая книга искусственного интеллекта - Сергей Сергеевич Марков

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 233 234 235 236 237 238 239 240 241 ... 482
Перейти на страницу:
цвета показывает выраженность отношения. Пример условный, для упрощения показаны только три «головы», а не восемь.

Рис. 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 × 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], в которой для кодирования позиционной информации используются именно абсолютные позиционные эмбеддинги.

Для того чтобы решить проблему с обработкой длинных последовательностей, исследователи из Google изобрели альтернативный способ кодирования позиции, который получил название «относительных позиционных эмбеддингов» (Relative Position Embeddings, RPE). Вместо того чтобы опираться на абсолютную позицию токенов, они используют расстояние между токенами (при этом если оно превышает максимальное значение, то считается равным ему) и выучивают векторы эмбеддингов, соответствующие этой относительной позиции. Эти векторы затем используются при расчёте матрицы внимания «на лету», поскольку каждой из её ячеек соответствуют конкретные позиции токенов входной последовательности. Способы учёта относительной позиционной информации при расчёте матрицы внимания могут различаться в зависимости от конкретной реализации. В первой работе, посвящённой позиционному кодированию, векторы эмбеддингов относительной позиции складываются с матрицей ключей (K) и с матрицей значений (V)[2167]. Позже было показано, что можно ограничиться лишь сложением с матрицей ключей (K)[2168].

В

1 ... 233 234 235 236 237 238 239 240 241 ... 482
Перейти на страницу:

Комментарии
Минимальная длина комментария - 20 знаков. Уважайте себя и других!
Комментариев еще нет. Хотите быть первым?