ИИ 101
Что Такие Трансформер Нейронные Сети?

Трансформер Нейронные Сети Описаны
Трансформеры – это тип модели машинного обучения, который специализируется на обработке и интерпретации последовательных данных, что делает их оптимальными для задач обработки естественного языка. Чтобы лучше понять, что такое модель машинного обучения-трансформер и как они работают, давайте посмотрим на модели трансформеров и механизмы, которые их движут.
Эта статья будет охватывать:
- Модели Последовательность-К-Последовательности
- Архитектура Нейронной Сети Трансформера
- Механизм Внимания
- Различия Между Трансформерами и РНН/ЛСТМ
Модели Последовательность-К-Последовательности
Модели последовательность-к-последовательности – это тип модели НЛП, который используется для преобразования последовательностей одного типа в последовательность другого типа. Существует несколько типов моделей последовательность-к-последовательности, таких как Рекуррентные Нейронные Сети и Долгосрочная Короткосрочная Память (ЛСТМ).
Традиционные модели последовательность-к-последовательности, такие как РНН и ЛСТМ, не являются предметом этой статьи, но понимание их необходимо, чтобы оценить, как работают модели трансформеров и почему они лучше традиционных моделей последовательность-к-последовательности.
Вкратце, модели РНН и ЛСТМ состоят из сетей кодирования и декодирования, которые анализируют входные данные на различных временных шагах. Сеть кодирования отвечает за формирование закодированного представления слов во входных данных. На каждом временном шаге сеть кодирования принимает входную последовательность и скрытое состояние из предыдущего временного шага в серии. Значения скрытых состояний обновляются, пока данные проходят через сеть, пока на последнем временном шаге не генерируется “контекстный вектор”. Контекстный вектор затем передается в сеть декодирования, которая используется для генерации целевой последовательности путем прогнозирования наиболее вероятного слова, которое соответствует входному слову для соответствующих временных шагов.
Эти модели можно дополнить с помощью “механизма внимания”. Механизм внимания определяет, на какие части входного вектора должна сосредоточиться сеть, чтобы сгенерировать правильный вывод. Иными словами, механизм внимания позволяет модели-трансформеру обрабатывать одно входное слово, одновременно обращая внимание на релевантную информацию, содержащуюся в других входных словах. Механизмы внимания также маскируют слова, которые не содержат релевантную информацию.
Архитектура Нейронной Сети Трансформера
Мы рассмотрим механизм внимания более подробно позже, но сейчас давайте посмотрим на архитектуру нейронной сети трансформера на более высоком уровне.
В общем, нейронная сеть трансформера выглядит примерно так:

Хотя эта общая структура может измениться между сетями, основные компоненты останутся неизменными: позиционные кодирования, векторные представления слов, механизм внимания, сеть прямого распространения.
Позиционные Кодирования и Векторные Представления Слов
Нейронная сеть трансформера работает, принимая последовательность входных данных и преобразуя их в две другие последовательности. Трансформер генерирует последовательность векторных представлений слов и позиционных кодирований.
Векторные представления слов – это просто текст, представленный в числовом формате, который может обработать нейронная сеть. Тем временем, позиционные кодирования – это векторизованные представления, содержащие информацию о позиции текущего слова в входном предложении, относительно других слов.
Другие текстовые нейронные сети, такие как РНН и ЛСТМ, используют векторы для представления слов во входных данных. Эти векторные представления сопоставляют слова с постоянными значениями, но это ограничено, поскольку слова можно использовать в разных контекстах. Сеть трансформера решает эту проблему, делая значения слов более гибкими, используя синусоидальные функции, чтобы позволить векторам слов принимать разные значения в зависимости от позиции слова в предложении.
Это позволяет модели нейронной сети сохранять информацию о относительной позиции входных слов, даже после того, как векторы проходят через слои сети трансформера.
Позиционные кодирования и векторные представления слов суммируются, а затем передаются в сети кодирования и декодирования. Хотя нейронные сети трансформера используют схему кодирования/декодирования, как и РНН и ЛСТМ, одно из основных различий между ними заключается в том, что все входные данные подаются в сеть одновременно, тогда как в РНН/ЛСТМ данные подаются последовательно.
Сети кодирования отвечают за преобразование входных данных в представления, которые может научиться сеть. Сети декодирования, наоборот, преобразуют кодирования в распределение вероятностей, используемое для генерации наиболее вероятных слов в выходном предложении. Критически важно, что и сети кодирования, и сети декодирования имеют механизм внимания.
Поскольку GPU способны обрабатывать данные параллельно, несколько механизмов внимания используются параллельно, вычисляя релевантную информацию для всех входных слов. Эта способность обращать внимание на несколько слов одновременно, называемая “многоголовым” вниманием, помогает нейронной сети учиться контексту слова в предложении, и это одно из основных преимуществ, которые сети трансформера имеют над РНН и ЛСТМ.
Механизм Внимания
Механизм внимания – это наиболее важная часть сети трансформера. Механизм внимания – это то, что позволяет моделям-трансформерам выйти за пределы внимания типичной модели РНН или ЛСТМ. Традиционные модели последовательность-к-последовательности отбрасывают все промежуточные состояния и используют только конечное состояние/контекстный вектор, когда инициализируют сеть декодирования для генерации прогнозов об входной последовательности.
Отбрасывание всего, кроме конечного контекстного вектора, работает нормально, когда входные последовательности достаточно короткие. Однако, когда длина входной последовательности увеличивается, производительность модели ухудшается при использовании этого метода. Это связано с тем, что становится довольно сложно суммировать длинную входную последовательность как один вектор. Решение заключается в увеличении “внимания” модели и использовании промежуточных состояний кодирования для построения контекстных векторов для сети декодирования.
Механизм внимания определяет, насколько важны другие входные токены для модели, когда создаются кодирования для любого данного токена. Например, “оно” – это общее местоимение, часто используемое для обозначения животных, когда их пол не известен. Механизм внимания позволит модели-трансформеру определить, что в текущем контексте “оно” относится к белке, потому что он может рассмотреть все релевантные слова во входном предложении.
Механизм внимания можно использовать тремя разными способами: кодирование-декодирование, только кодирование, только декодирование.
Внимание кодирование-декодирование позволяет декодировщику учитывать входные последовательности при генерации вывода, тогда как механизмы внимания только кодирования и только декодирования позволяют сетям учитывать все части предыдущих и текущих последовательностей соответственно.
Строительство механизма внимания можно разделить на пять шагов:
- Вычисление оценки для всех состояний кодирования.
- Расчет весов внимания
- Вычисление контекстных векторов
- Обновление контекстного вектора с выводом предыдущего временного шага
- Генерация вывода с помощью декодировщика
Первый шаг – это вычислить оценку для всех состояний кодирования. Это делается путем обучения сети декодирования, которая является базовой сетью прямого распространения. Когда сеть декодирования обучается на первом слове во входной последовательности, еще не создано никакого внутреннего/скрытого состояния, поэтому последнее состояние кодирования обычно используется как предыдущее состояние декодирования.
Чтобы рассчитать веса внимания, используется функция softmax для генерации вероятностного распределения для весов внимания.
После расчета весов внимания необходимо вычислить контекстный вектор. Это делается путем умножения весов внимания и скрытого состояния вместе для каждого временного шага.
После вычисления контекстного вектора он используется вместе с словом, сгенерированным на предыдущем временном шаге, для генерации следующего слова в выходной последовательности. Поскольку у декодировщика нет предыдущего вывода, на который он мог бы ссылаться, на первом временном шаге часто используется специальный токен “начало”.
Различия Между Трансформерами и РНН/ЛСТМ
Давайте быстро рассмотрим некоторые различия между РНН и ЛСТМ.
РНН обрабатывают входные данные последовательно, при этом поддерживается и изменяется вектор скрытого состояния входными словами, когда они проходят через сеть. Скрытые состояния РНН обычно содержат очень мало релевантной информации о более ранних входных данных. Новые входные данные часто перезаписывают текущее состояние, что приводит к потере информации и ухудшению производительности со временем.
Напротив, модели трансформера обрабатывают всю входную последовательность одновременно. Механизм внимания позволяет каждому выходному слову быть проинформированным каждым входным и скрытым состоянием, что делает сеть более надежной для длинных текстов.
ЛСТМ – это модифицированная версия РНН, скорректированная для обработки более длинных входных последовательностей. Архитектура ЛСТМ использует структуру, называемую “ворота”, с “входными воротами”, “выходными воротами” и “забывающими воротами”. Проект ворот решает проблему потери информации, характерную для моделей РНН. Данные все еще обрабатываются последовательно, и рекуррентный дизайн архитектуры делает модели ЛСТМ трудными для обучения с помощью параллельных вычислений, что делает время обучения в целом более длительным.
Инженеры ЛСТМ часто добавляли механизмы внимания к сети, что было известно как улучшение производительности модели. Однако в конечном итоге было обнаружено, что механизм внимания сам по себе улучшал точность. Это открытие привело к созданию сетей трансформера, которые использовали механизмы внимания и параллельные вычисления благодаря GPU.












