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

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

Прежде чем перейти к трансформаторам, коснемся базы RNN и LSTM.

RNN — рекуррентная нейронная сеть

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

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

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

LSTM/ГРУ

Идея LSTM/GRU состоит в том, чтобы иметь обучаемый параметр того, сколько нам нужно включить предыдущую историю. Рассмотрим клапан, который решает, какое количество предыдущих данных можно рассматривать для текущих данных. Этого можно достичь, используя Tanh или Sigmoid, т.е. +1 учитывает все предыдущие данные, а 0 означает игнорирование предыдущей истории. Таким образом, каждый вывод предыдущих данных имеет обучаемый параметр для многого, что можно учитывать для вывода.

Архитектура декодера кодирования

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

Трансформеры

В архитектуре Encoder Decoder мы знаем, что есть 2 состояния, которые выходят после обработки одного слова.

  1. Скрытое состояние
  2. Состояние ячейки

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

Преобразователь — это метод моделирования во временной области, в котором слова обрабатываются параллельно без использования системы измерения времени, такой как RNN/LSTM/GRU. Основными компонентами трансформеров являются самовнимание и позиционное встраивание.

Дизайн модели

Преобразователь Содержит два блока кодировщик и декодер.

Таких модулей модуля «Самовнимание» и «нейронной сети FeedForward», подключенных последовательно для блока кодировщика, не будет, аналогичная настройка и для блока декодера. Блоки кодировщика и декодера преобразователя будут иметь остаточные соединения и уровни нормализации, что является типичной настройкой в ​​​​любой конструкции нейронной сети.

Внимание к себе

В LSTM/GRU/RNN слова обрабатываются последовательно, почему? потому что нам нужно скрытое состояние предыдущего слова для обработки следующего слова, что приводит к временной сложности. Преобразователь отличается тем, что он избегает RNN / LSTM, а также включает логику для присвоения специальных весов важным словам в том же предложении, которое он в настоящее время обрабатывает, находя оценку сходства между словами, которые находятся в одном предложении. Этот подход называется Самовнимание.

Позволять. как взять языковой перевод, например, с английского на тамильский язык

Английский: Куда ты идешь?

Тамильский: நீ எங்கே போகிறாய்?

Идея состоит в том, чтобы придать больший вес словам «going» и «where» по сравнению с другими словами в английском предложении, в то время как мы прогнозируем слово «போகிறாய்» в английском предложении. Тамил.

Позиционное встраивание

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

Обучение модели: нейронная сеть с прямой связью

Учитывая 4 слова в английском предложении, у нас будет некоторое представление для этих слов, называемых «векторами значений», скажем, v1, v2, v3, v4, и цель состоит в том, чтобы найти правильный вес для каждого слова, что делается через нейронную сеть с прямой связью.

Нейронная сеть будет изучать весовые коэффициенты для v1, v2, v3, v4, эти весовые коэффициенты называются «оценочными значениями». Это представляет важность других слов в предложении, пока мы обрабатываем одно из слов в предложении. Предположим, что вес слов равен s1, s2, s3, s4, тогда, если v1 и v2 очень важны для текущего переведенного слова, тогда значение s1 и s2 будет больше, чем s3 и s4 в конце обучения модели, поэтому декодер будет уделять больше внимания v1 и v2.

Оценка как распределение вероятностей

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

Контекстный вектор для каждого слова против одного контекстного вектора

В модели Encode Decoder, как мы знаем, будет один контекстный вектор, который будет использоваться при декодировании для всех слов, но в случае Transformers для каждого слова создается отдельный вектор контекста.

Вычисление вектора контекста для первого слова:

CV_1= s1_1*v1+s2_1*v2+s3_1*v3+s4_1*v4

Вычисление вектора контекста для второго слова:

CV_2= s1_2*v1+s2_2*v2+s3_2*v3+s4_2*v4

Обычно пишут так:

CV_i = s1_i*v1+s2_i*v2+s3_i*v3+s4_i*v4

где s1_i — значение оценки первого слова при обработке i-го слова.

Здесь s1_i, s2_i, s3_i, s4_i — это значения баллов, полученные, как мы обсуждали в разделе «Обучение модели».

Эта установка представляет собой не что иное, как скалярное произведение значений оценки с векторами значений.

Добавление всех векторов контекста для одного предложения:

Z _i= CV_1 + CV_2 + CV_3 +….+CV_i

Z есть не что иное, как суммарное внимание всех слов, присутствующих в i-м предложении.

Расчет очков

В приведенном ниже блоге Джей Аламмар четко объясняется пошаговый подход на примере

https://jalammar.github.io/illustrated-transformer/ в разделе Самовнимание в деталях, поскольку идея этого блога состоит в том, чтобы показать, как это имеет смысл для создания такой идеи.

Заключение

Теперь мы поняли, почему установка преобразователя помогает улучшить производительность последовательности для данных последовательности. Чтобы узнать больше с примерами, вы можете обратиться к блогу Джея Аламмара — https://jalammar.github.io/illustrated-transformer/