paint-brush
Трансформеры: Эпоха вниманияк@bhavdeepsethi
457 чтения
457 чтения

Трансформеры: Эпоха внимания

к Bhavdeep Sethi7m2024/08/26
Read on Terminal Reader

Слишком долго; Читать

Простое объяснение модели Transformer из революционной статьи «Внимание — это все, что вам нужно», которая лежит в основе многих современных моделей, таких как BERT и GPT.
featured image - Трансформеры: Эпоха внимания
Bhavdeep Sethi HackerNoon profile picture
0-item



В 2017 году группа исследователей (из Google и Университета Торонто) представила новый способ обработки задач обработки естественного языка (NLP). Их революционная статья « Внимание — это все, что вам нужно » представила модель Transformer, архитектуру, которая с тех пор стала основой многих современных систем искусственного интеллекта. Производительность, масштабируемость и универсальность модели привели к ее широкому распространению, сформировав основу современных моделей, таких как BERT (представления двунаправленного кодировщика) и GPT (генеративные предварительно обученные преобразователи).


До модели Transformer большинство моделей ИИ, обрабатывающих язык, в значительной степени полагались на тип нейронной сети, называемой рекуррентной нейронной сетью (RNN) или ее улучшенной версией, сетью краткосрочной памяти (LSTM). В частности, такие проблемы, как моделирование языка и машинный перевод (также называемый последовательной трансдукцией). Эти модели обрабатывали слова последовательно, одно за другим, слева направо (или наоборот). Хотя этот подход имел смысл, поскольку слова в предложении часто зависят от предыдущих слов, у него были некоторые существенные недостатки:


  • Медленное обучение: поскольку RNN и LSTM обрабатывают одно слово за раз, обучение этих моделей на больших наборах данных занимало много времени.
  • Трудности с длинными предложениями: Эти модели часто испытывают трудности с пониманием связей между словами, которые находятся далеко друг от друга в предложении.
  • Ограниченное распараллеливание: поскольку слова обрабатывались последовательно, было сложно воспользоваться преимуществами современного вычислительного оборудования, способного выполнять множество операций одновременно (распараллеливание).


Ключевая идея: внимание к архитектуре

Основная идея модели Transformer — это то, что называется «вниманием». Проще говоря, внимание помогает модели сосредоточиться на определенных частях предложения при попытке понять значение/контекст слова. Рассмотрим предложение «Машина, которая была припаркована в гараже, синяя». Когда вы думаете о слове «синий», вы естественным образом сосредотачиваетесь на слове «машина» ранее в предложении, потому что оно говорит вам, что такое синий цвет. Модели машинного перевода столкнулись бы с трудностями при определении того, относится ли «синий» к машине или гаражу. Вот что делает внутреннее внимание — оно помогает модели сосредоточиться на соответствующих словах, независимо от того, где они находятся в предложении.


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

  • Параллельная обработка: в отличие от RNN, которые обрабатывают слова одно за другим, Transformer может обрабатывать все слова в предложении одновременно. Это значительно ускоряет обучение.
  • Лучшее понимание контекста: Благодаря механизму внутреннего внимания Transformer может улавливать отношения между словами, независимо от того, насколько далеко они находятся друг от друга в предложении. Это имеет решающее значение для понимания сложных предложений.
  • Масштабируемость: модель можно легко масштабировать, добавляя больше слоев, что позволяет ей обрабатывать очень большие наборы данных и сложные задачи.


Как видите, новая модель не только устранила все недостатки нейронных сетей, но и фактически улучшила производительность машинного перевода!


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

Трансформер - Модель Архитектуры


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


  1. Обработка входного предложения в кодере

    • Входные данные : Текст, который вы хотите перевести. Например: «Машина, припаркованная в гараже, синяя».

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

      • «The» -> [0,9, -0,4, 0,2, ...]

      • "автомобиль" -> [0,5, 0,1, -0,7, ...]

      • "что" -> [-0,8, 0,2, 0,8, ...]

      • и то же самое для каждого слова в предложении выше.


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

      • «The» в позиции 1 может быть скорректирован до [0,9 + P1, -0,4 + P1, 0,2 + P1, ...], где P1 представляет позиционное кодирование для первой позиции, тем самым генерируя новое встраивание, уникальное для позиции P1.


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

      • Для слова «машина» внутреннее внимание может определить, что слова «припаркованный», «гараж» и «синий» особенно важны для понимания его контекста.


    • Многоголовое внимание : новая часть модели трансформатора. Многоголовое внимание — это просто несколько слоев/операций внутреннего внимания, работающих параллельно и соединенных линейно.

      • Например, одна голова может быть сосредоточена на главном субъекте («автомобиль») и его свойствах («синий»), в то время как другая голова может быть сосредоточена на придаточном предложении («который был припаркован в гараже»).

      • Модуль внимания нескольких голов дает модели возможность понимать, что «синий» цвет более актуален для автомобиля, чем для гаража.


    • Нейронные сети прямого распространения : после слоя внутреннего внимания выходные данные передаются через нейронную сеть прямого распространения, которая применяется к каждой позиции отдельно и идентично (опять же, может работать параллельно!). Это состоит из двух линейных преобразований с активацией ReLU между ними.


    • Add & Norm : Остаточные соединения (add) используются для добавления входа слоя к его выходу, который затем нормализуется (norm). Это помогает в обучении глубоких сетей, предотвращая исчезновение или взрыв градиентов.


  2. Генерация перевода в декодере

    В NLP принято обозначать начало маркера начала последовательности специальным символом <SOS>, а конец последовательности — <EOS>. Декодер берет обработанный ввод от кодера и генерирует французский перевод "La voiture qui était garée dans le garage est bleue". Вот как работает эта часть:


    • Входные данные для декодера : декодер начинает с закодированного представления английского предложения из кодера. Если вы заметили, декодер также принимает свои собственные выходные данные в качестве входных данных. Поскольку у него не будет входных данных для начального слова, мы вставляем токен <SOS> в начало (следовательно, смещенный вправо) и удаляем последнее слово. Эта смещенная последовательность и есть то, что подается в декодер.


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

      • Например, когда декодер собирается сгенерировать слово «La» (первое слово во французском языке), он знает только контекст из <SOS>, а не будущие слова, например «Voiture».


    • Нейронные сети прямого распространения : декодер применяет еще одну нейронную сеть прямого распространения для дальнейшей обработки этой информации, совершенствуя перевод шаг за шагом.


В декодере, после обработки входного предложения через несколько слоев маскированного внутреннего внимания, внимания кодировщика-декодировщика и сетей прямой связи, мы получаем последовательность непрерывных представлений (вектор плавающих чисел) для каждой позиции в целевом предложении (в нашем случае французском). Эти представления необходимо преобразовать в реальные слова. Здесь в игру вступает последний линейный и softmax-слой.


  • Линейный слой : этот слой представляет собой полностью связанный слой нейронной сети, который преобразует выходные данные последнего слоя декодера (плотное векторное представление для каждой позиции) в вектор размером с целевую лексику (например, все возможные слова французского языка).
  • Слой Softmax : После линейного преобразования применяется функция Softmax для преобразования этих логитов (сырых оценок) в вероятности. Эти вероятности указывают на вероятность того, что каждое слово в целевом словаре будет правильным следующим словом в переводе. Это позволяет нам угадать, какое слово из французского словаря следует выбрать (ячейка с самой высокой вероятностью).


Декодер по сути делает следующее:

  • Первый шаг: декодер начинает с <SOS> и генерирует первое слово «La».
  • Второй шаг: при вводе <SOS> La модель предсказывает следующее слово: «Voiture».
  • Третий шаг: декодер берет <SOS> La Voiture и генерирует слово «выйти».
  • Продолжающийся процесс: Этот процесс продолжается, порождая «était», «garée», «dans», «le», «garage», «est» и, наконец, «blue».
  • Маркер конца последовательности: декодер в конечном итоге генерирует маркер конца последовательности <EOS>, чтобы обозначить, что перевод завершен.


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