Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шолле Ф. - Глубокое обучение на Python (Библиотека программиста) - 2023.pdf
Скачиваний:
6
Добавлен:
07.04.2024
Размер:
11.34 Mб
Скачать

11.4. Архитектура Transformer    417

11.4. АРХИТЕКТУРА TRANSFORMER

Начиная.с.2017.года.вновь.появившаяся.архитектура.моделей.Transformer.начала.обгонять.рекуррентные.нейронные.сети.в.большинстве.задач.обработки. естественного.языка.

Эта.архитектура.была.представлена.в.основополагающей.статье.Васвани.и.его. коллег.Attention.is.all.you.need1..Суть.статьи.ясно.выражена.в.ее.названии2:.как. оказалось,.с.помощью.простого.механизма.под.названием.«нейронное.внимание». можно.создавать.мощные.модели.последовательностей,.не.имеющие.ни.повторяющихся,.ни.сверточных.слоев.

Это.открытие.произвело.настоящую.революцию.в.обработке.естественного.языка.

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

и.почему.он.оказался.настолько.эффективным.при.обработке.последователь- ностей..Затем.мы.используем.механизм.внутреннего.внимания.(self-attention). для.создания.кодировщика.Transformer.—.одного.из.основных.компонентов. архитектуры.Transformer.—.и.применим.его.к.задаче.классификации.обзоров. фильмов.на.IMDB.

11.4.1. Идея внутреннего внимания

Держа.в.руках.эту.книгу,.вы.можете.бегло.просматривать.одни.части.и.внимательно.читать.другие.в.зависимости.от.целей.или.интересов..А.что,.если.ваши. модели.будут.поступать.так.же?.Это.простая,.но.мощная.идея:.не.вся.входная. информация.одинаково.важна.для.поставленной.задачи,.поэтому.модели.должны. «уделять.больше.внимания».одним.признакам.и.«меньше.внимания».—.другим.

Звучит.знакомо?.Вы.уже.дважды.встречались.с.подобной.концепцией.в.этой.книге:

.алгоритм.выбора.максимального.из.соседних.значений.в.сверточных.сетях. просматривает.пул.значений.в.пространственной.области.и.выбирает.только.одно.из.них..Эта.форма.внимания.организована.по.принципу.«все.или. ничего»:.сохраняем.самое.важное.значение.и.отказываемся.от.остальных;

.нормализация.TF-IDF.присваивает.оценки.важности.токенам.в.зависимости. от.их.информативности..Информативные.токены.усиливаются,.а.малоинформативные.ослабляются..Это.непрерывная.форма.внимания.

1 . Vaswani A. et al..Attention.is.all.you.need..2017,.https://arxiv.org/abs/1706.03762. 2 . «Внимание.—.это.все,.что.вам.нужно»..—.Примеч. пер.

418    Глава 11. Глубокое обучение для текста

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

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

Важно.отметить,.что.такой.механизм.внимания.можно.использовать.не.только. для.усиления.или.ослабления.определенных.признаков,.но.также.для.создания. контекстно зависимых.признаков..Вы.только.что.познакомились.с.векторными. представлениями.слов.—.векторными.пространствами,.фиксирующими.«форму». семантических.отношений.между.разными.словами..В.пространстве.векторных. представлений.единственное.слово.имеет.фиксированную.позицию.—.фиксиро- ванный.набор.связей.с.каждым.другим.словом.в.пространстве..Но.язык.устроен. не.совсем.так:.значение.слова.обычно.зависит.от.контекста..Описывая.прогулку. по.речной.косе,.вы.не.имеете.в.виду.«косу».—.инструмент.для.скашивания.травы.

11.4. Архитектура Transformer    419

или.женскую.прическу..Когда.вы.говорите.«скоро.увидимся»,.то.значение.слова. «увидимся».немного.отличается.от.«видеть».во.фразе.«я.вижу.близкое.окончание. этого.проекта».или.«я.вижу,.куда.вы.клоните»..И.конечно.же,.значение.таких. местоимений,.как.«он»,.«оно»,.«она»,.и.других.полностью.зависит.от.контекста. и.даже.может.меняться.несколько.раз.в.одном.предложении.

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

Это.и.есть.внутреннее внимание (внимание к себе)..Его.цель.—.сформировать. представление.токена,.используя.представления.связанных.с.ним.токенов.из. последовательности..В.результате.получаются.контекстно.зависимые.представления..Рассмотрим.предложение.The train left the station on time.(«Поезд.ушел.со. станции.вовремя»)..Теперь.рассмотрим.одно.слово.из.этого.предложения:.station. («станция»)..О.какой.станции.идет.речь?.Может,.это.радиостанция?.А.может,. Международная.космическая.станция?.Разберемся.с.этим.алгоритмически,. использовав.идею.внутреннего.внимания.(рис..11.6).

Рис. 11.6. Внутреннее внимание: оценки внимания вычисляются между словом station и каждым другим словом в последовательности и затем используются для взвешивания суммы векторов слов, которая становится новым вектором слова station

Масштабировать с использованием коэффициента нормализации и применением функции softmax
Конечно,.на.практике.вы.бы.применили.векторную.реализацию..В.Keras.для.этого. имеется.встроенный.слой:.MultiHeadAttention..Вот.как.можно.его.использовать:
num_heads = 4 embed_dim = 256
mha_layer = MultiHeadAttention(num_heads=num_heads, key_dim=embed_dim) outputs = mha_layer(inputs, inputs, inputs)
Эта сумма и является результатом
Получить сумму векторов всех токенов, взвешенных оценками внимания
Вычислить скалярное произведение (оценку внимания) между данным токеном и каждым другим токеном
def self_attention(input_sequence):
output = np.zeros(shape=input_sequence.shape)
for i, pivot_vector in enumerate(input_sequence): scores = np.zeros(shape=(len(input_sequence),))
for j, vector in enumerate(input_sequence):
scores[j] = np.dot(pivot_vector, vector.T) scores /= np.sqrt(input_sequence.shape[1])
scores = softmax(scores)
new_pivot_representation = np.zeros(shape=pivot_vector.shape) for j, vector in enumerate(input_sequence):
new_pivot_representation += vector * scores[j] output[i] = new_pivot_representation
return output
Шаг.1.—.нужно.вычислить.оценки.релевантности.между.вектором.слова.station. и.каждым.другим.словом.в.предложении..Это.наши.оценки.внимания..В.качестве. меры.силы.связи.слов.мы.будем.использовать.простое.скалярное.произведение. их.векторов..Это.очень.эффективная.с.вычислительной.точки.зрения.функция. расстояния,.широко.применявшаяся.для.оценки.силы.связи.векторных.представлений.слов.задолго.до.появления.архитектуры.Transformer..На.практике. данные.оценки.также.могут.подвергаться.масштабированию.и.обработке.функцией.softmax,.но.все.это.лишь.детали.реализации.
Шаг.2.—.вычисляем.сумму.всех.векторов.слов.в.предложении,.взвешенных.на- шими.оценками.релевантности..Слова,.тесно.связанные.со.словом.station,.будут. вносить.больший.вклад.в.сумму.(включая.само.слово.station),.а.нерелевантные. слова.почти.ничего.не.дадут..Получившийся.вектор.—.новое.представление. для.station:.представление,.учитывающее.окружающий.контекст..В.частности,. оно.включает.часть.вектора.train.(поезд),.уточняя,.что,.по.сути,.речь.идет.о.train station.(«вокзал»).
Тот.же.процесс.можно.повторить.для.каждого.слова.в.предложении.и.создать. новую.последовательность.векторов,.кодирующих.это.предложение..Ниже. приводится.пример.на.псевдокоде.NumPy.реализации.только.что.описанного. алгоритма:
Выполнить итерации по всем токенам во входной последовательности

420    Глава 11. Глубокое обучение для текста

11.4. Архитектура Transformer    421

У.многих.из.вас.наверняка.возникли.вопросы.

.Почему.входные.данные.передаются.слою.в.трех.параметрах?.Это.выглядит. излишним.

.О.какой.многоголовости.(multi-head).идет.речь?.Звучит.пугающе.—.они.что,. отрастают,.если.их.обрезать?

На.оба.вопроса.есть.простые.ответы..Давайте.посмотрим.

Обобщенное внутреннее внимание: модель «запрос — ключ — значение»

До.сих.пор.мы.рассматривали.только.одну.входную.последовательность..Однако. архитектура.Transformer.изначально.разрабатывалась.для.машинного.перевода,. где.приходится.иметь.дело.с.двумя.входными.последовательностями:.исходной,. которая.переводится.(например,.«Какая.сегодня.погода?»),.и.целевой,.в.которую. должна.быть.преобразована.текущая.(например,.¿Qué tiempo hase hoy?)..Архитек- тура.Transformer.—.это.модель.типа.«последовательность.в.последовательность»:. она.была.разработана.для.преобразования.одной.последовательности.в.другую.. Далее.в.этой.главе.вы.познакомитесь.ближе.с.моделями.последовательностей.

Но.пока.давайте.сделаем.шаг.назад..Механизм.внутреннего.внимания,.как.мы. его.представили,.в.общих.чертах.выполняет.следующее:

Это.означает:.«для.каждого.токена.в.inputs .(A).определить,.насколько.сильно. он.связан.с.каждым.токеном.в.inputs .(B),.и.использовать.полученные.оценки. для.взвешивания.суммы.токенов.из.inputs .(C)»..Важно.отметить,.что.A,.B.и.C. не.обязательно.должны.ссылаться.на.одну.и.ту.же.входную.последовательность.. В.общем.случае.это.могут.быть.три.разных.последовательности..Назовем.их. «запрос».(query),.«ключи».(keys).и.«значения».(values)..В.таком.случае.смысл. операции.выражается.следующим.образом:.«для.каждого.токена.в.запросе. определить,.насколько.сильно.он.связан.с.каждым.ключом,.и.использовать. полученные.оценки.для.взвешивания.суммы.значений»:

outputs = sum(values * pairwise_scores(query, keys))

Данная .терминология .пришла .из .поисковых .и .рекомендательных .систем. (рис..11.7)..Представьте,.что.вы.вводите.запрос.«собаки.на.пляже».для.выбора. фотографий.из.вашей.коллекции..Каждая.фотография.в.вашей.базе.данных. описывается.набором.ключевых.слов.—.«кошка»,.«собака»,.«вечеринка».и.т..д..

422    Глава 11. Глубокое обучение для текста

Будем.называть.их.ключами..Поисковая.система.сначала.сравнивает.запрос. с.ключами.в.базе.данных..Совпадение.со.словом.«собака».дает.оценку.соответствия.1,.а.отсутствие.совпадения.со.словом.«кошка».дает.оценку.соответствия.0..

Затем.она.ранжирует.ключи.по.величине.соответствия.(релевантности).и.возвращает.фотографии,.связанные.с.лучшими.N.совпадениями.в.порядке.убывания. релевантности.

Концептуально.именно.так.работает.механизм.внимания.в.архитектуре.Trans­ former..У.вас.есть.исходная.последовательность,.характеризующая.искомое,.—. запрос..Есть.совокупность.знаний,.из.которых.извлекается.информация.—.значе- ния..Каждому.значению.соответствует.ключ,.описывающий.значение.в.формате,. пригодном.для.сравнения.с.запросом..Вы.просто.сопоставляете.запрос.с.ключами. и.возвращаете.взвешенную.сумму.значений.

Рис. 11.7. Извлечение изображений из базы данных: запрос сравнивается с набором ключей, а оценки соответствия используются для ранжирования значений (изображений)

На.практике.ключи.и.значения.часто.являются.одинаковыми.последовательностями..Например,.в.машинном.переводе.запрос.может.быть.целевой.последова- тельностью,.а.исходная.последовательность.—.как.ключами,.так.и.значениями:. для.каждого.элемента.в.целевой.последовательности.(например,.tiempo).нужно. вернуться.к.исходной.последовательности.(«Какая.сегодня.погода?»).и.определить.различные.элементы,.связанные.с.ним.(tiempo.и.«погода».должны.иметь. точное.соответствие)..Естественно,.в.простой.задаче.классификации.последо- вательности.запрос,.ключи.и.значения.—.это.одно.и.то.же:.последовательность.