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

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












