Connect with us

ИИ 101

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

mm

Трансформерные Нейронные Сети: Описание

Трансформеры – это тип модели машинного обучения, который специализируется на обработке и интерпретации последовательных данных, что делает их оптимальными для задач обработки естественного языка. Чтобы лучше понять, что такое модель машинного обучения-трансформер и как они работают, давайте более внимательно рассмотрим модели трансформеров и механизмы, которые их движут.

Эта статья будет охватывать:

  • Модели Последовательность-К-Последовательности
  • Архитектура Нейронной Сети Трансформера
  • Механизм Внимания
  • Различия Между Трансформерами и RNN/LSTM

Модели Последовательность-К-Последовательности

Модели последовательность-к-последовательности – это тип модели NLP, который используется для преобразования последовательностей одного типа в последовательность другого типа. Существует несколько типов моделей последовательность-к-последовательности, таких как Рекуррентные Нейронные Сети и Долгосрочная Короткосрочная Память (LSTM).

Традиционные модели последовательность-к-последовательности, такие как RNN и LSTM, не являются основной темой этой статьи, но понимание их необходимо, чтобы оценить, как работают модели трансформеров и почему они превосходят традиционные модели последовательность-к-последовательности.

Вкратце, модели RNN и LSTM состоят из сетей кодирования и декодирования, которые анализируют входные данные на различных временных шагах. Сеть кодирования отвечает за формирование закодированного представления слов во входных данных. На каждом временном шаге сеть кодирования принимает входную последовательность и скрытое состояние из предыдущего временного шага в серии. Скрытые состояния обновляются по мере прохождения данных через сеть, пока на последнем временном шаге не генерируется “контекстный вектор”. Контекстный вектор затем передается в сеть декодирования, которая используется для генерации целевой последовательности путем прогнозирования наиболее вероятного слова, которое соответствует входному слову для соответствующих временных шагов.

Эти модели можно дополнить с помощью “механизма внимания”. Механизм внимания определяет, на какие части входного вектора должна сосредоточиться сеть, чтобы сгенерировать правильный выход. Иными словами, механизм внимания позволяет модели трансформера обрабатывать одно входное слово, одновременно обращая внимание на соответствующую информацию, содержащуюся в других входных словах. Механизмы внимания также маскируют слова, которые не содержат соответствующую информацию.

Архитектура Нейронной Сети Трансформера

Мы более подробно рассмотрим механизм внимания позже, но сейчас давайте посмотрим на архитектуру нейронной сети трансформера на более высоком уровне.

В общем, нейронная сеть трансформера выглядит примерно так:

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

Позиционные Кодирования и Векторы Слов

Нейронная сеть трансформера работает, принимая последовательность входных данных и преобразуя их в две другие последовательности. Трансформер производит последовательность векторных вложений слов и позиционных кодирований.

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

Другие текстовые нейронные сети, такие как RNN и LSTM, используют векторы для представления слов во входных данных. Эти векторные вложения сопоставляют слова с постоянными значениями, но это ограничено, поскольку слова можно использовать в разных контекстах. Сеть трансформера решает эту проблему, делая значения слов более гибкими, используя синусоидальные функции, чтобы позволить векторам слов принимать разные значения в зависимости от позиции слова в предложении.

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

Позиционные кодирования и векторные вложения слов суммируются, а затем передаются в сети кодирования и декодирования. Хотя нейронные сети трансформера используют схему кодирования/декодирования, как и RNN и LSTM, одно из основных различий между ними заключается в том, что все входные данные подаются в сеть одновременно, тогда как в RNN/LSTM данные подаются последовательно.

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

Поскольку GPU способны обрабатывать параллельно, несколько механизмов внимания используются параллельно, вычисляя соответствующую информацию для всех входных слов. Эта способность обращать внимание на несколько слов одновременно, называемая “многоголовым” вниманием, помогает нейронной сети учиться контексту слова в предложении, и это одно из основных преимуществ, которые сети трансформера имеют над RNN и LSTM.

Механизм Внимания

Механизм внимания – это наиболее важная часть сети трансформера. Механизм внимания – это то, что позволяет моделям трансформера выйти за пределы ограничения внимания типичной модели RNN или LSTM. Традиционные модели последовательность-к-последовательности отбрасывают все промежуточные состояния и используют только окончательное состояние/контекстный вектор при инициализации сети декодирования для генерации прогнозов об входной последовательности.

Отбрасывание всего, кроме окончательного контекстного вектора, работает нормально, когда входные последовательности достаточно короткие. Однако, когда длина входной последовательности увеличивается, производительность модели ухудшается при использовании этого метода. Это связано с тем, что становится довольно трудно суммировать длинную входную последовательность как один вектор. Решение – увеличить “внимание” модели и использовать промежуточные состояния кодирования для создания контекстных векторов для сети декодирования.

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

Механизм внимания можно использовать тремя разными способами: кодирование-декодирование, только кодирование, только декодирование.

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

Строительство механизма внимания можно разделить на пять шагов:

  1. Вычисление оценки для всех состояний кодирования.
  2. Расчет весов внимания
  3. Вычисление контекстных векторов
  4. Обновление контекстного вектора с помощью выхода предыдущего временного шага
  5. Генерация выхода с помощью декодировщика

Первый шаг – это вычислить оценку для всех состояний кодирования. Это делается путем обучения сети декодирования, которая является базовой нейронной сетью прямого распространения. Когда декодировщик обучается на первом слове во входной последовательности, нет созданного внутреннего/скрытого состояния, поэтому последнее состояние кодирования обычно используется как предыдущее состояние декодировщика.

Чтобы рассчитать веса внимания, используется функция softmax для генерации вероятностного распределения для весов внимания.

После расчета весов внимания контекстный вектор необходимо вычислить. Это делается путем умножения весов внимания и скрытого состояния вместе для каждого временного шага.

После вычисления контекстного вектора он используется вместе с словом, сгенерированным на предыдущем временном шаге, для генерации следующего слова в выходной последовательности. Поскольку декодировщик не имеет предыдущего выхода для обращения на первом временном шаге, часто используется специальный токен “начало” вместо этого.

Различия Между Трансформерами и RNN/LSTM

Давайте быстро рассмотрим некоторые различия между RNN и LSTM.

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

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

LSTM – это модифицированная версия RNN, скорректированная для обработки более длинных входных последовательностей. Архитектура LSTM использует структуру, называемую “воротами”, с “входными воротами”, “выходными воротами” и “забывающими воротами”. Проект ворот решает проблему потери информации, общую для моделей RNN. Данные все еще обрабатываются последовательно, и рекуррентный дизайн архитектуры делает модели LSTM трудными для обучения с помощью параллельных вычислений, что делает время обучения в целом более длительным.

Инженеры LSTM часто добавляли механизмы внимания к сети, что было известно как улучшение производительности модели. Однако в конечном итоге было обнаружено, что сам механизм внимания улучшил точность. Это открытие привело к созданию сетей трансформера, которые использовали механизмы внимания и параллельные вычисления благодаря GPU.

Блогер и программист с специализацией в Machine Learning и Deep Learning темах. Daniel надеется помочь другим использовать силу ИИ для социального блага.