"Обработка естественного языка"

Всеобъемлющее руководство по трансформаторам

Внимание - это все, что вам нужно, и многое другое

У вас есть лист бумаги с текстом, и вы хотите построить модель, которая сможет перевести этот текст на другой язык. Как вы к этому подойдете?

Первая проблема - это переменный размер текста. Не существует модели линейной алгебры, которая могла бы иметь дело с векторами различной размерности.

Стандартным способом решения таких проблем является использование модели набора слов (1). В этой модели данные будут вектором огромного числа, равного количеству слов в языке, и большинство векторных элементов будут нулевыми, так как большинство терминов в этом тексте не используются. Чтобы минимизировать размер вектора для вычисления, мы сохраняем только позиции представленных слов.

Однако модель «мешок слов» игнорирует порядок слов, что очень важно. Например: «Работай, чтобы жить» отличается от «Живи, чтобы работать». Чтобы сохранить порядок данных, мы увеличим размер графика (n-грамм), чтобы добавить порядок в наше уравнение.

В моделях n-грамм вероятность слова зависит от (n-1) предыдущих комментариев, что означает, что модель не будет коррелировать со словами раньше, чем (n-1 ). Чтобы преодолеть это, нам придется увеличить n, что приведет к экспоненциальному увеличению сложности вычислений (2).

Итак, вот проблемы, которые у нас есть на данный момент:

  1. Переменная длина текста.
  2. Огромный размер данных после применения модели «мешок слов».
  3. Стоимость вычислений при увеличении размерности.

Похоже, нам нужна новая модель, не зависящая от Мешка слов. Именно здесь вступает в игру модель RNN (3).

Рекуррентные нейронные сети (RNN)

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

Эта диаграмма показывает, что ввод в момент времени (t + 6) зависит от скрытого состояния каждого предыдущего шага и текущего ввода. Это позволяет сети хранить историю ранее изученных параметров и использовать ее для прогнозирования следующего вывода, что решает проблему порядка слов и устраняет затраты на вычисления, поскольку мы просто будем передавать слова индивидуально в нашей модели.

Модель кажется идеальной, но на практике имеет ряд недостатков (5):

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

Хорошо, модель RNN не идеальна. Таким образом, он был модифицирован, чтобы преодолеть эти недостатки.

Узнать больше: Руководство по рекуррентной нейронной сети - глубокое погружение в RNN

Долговременная кратковременная память (LSTM)

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

  • текущий ввод,
  • скрытое состояние,
  • состояние памяти предыдущего шага (6).

Эти входы проходят через ворота:

  • входной шлюз,
  • забудь ворота,
  • выходной вентиль.

Гейтс регулирует передачу данных в ячейку и из нее.

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

LSTM смог преодолеть исчезающие и взрывающиеся градиенты в модели RNN, но все еще существуют проблемы, унаследованные от модели RNN, например:

  1. Нет распараллеливания, у нас все еще есть последовательный путь для данных, даже более сложный, чем раньше.
  2. Аппаратные ресурсы по-прежнему остаются проблемой.

Решения недостаточны для преодоления проблемы памяти и параллелизма. Итак, пора представить еще одну модель.

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

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

Мы упоминали о проблеме переменной длины при трансляции последовательности в последовательность, которая еще не решена.

Пытаясь решить эту проблему, в 2017 году была представлена ​​модель, которая зависит от механизмов внимания. Вместо того, чтобы обрабатывать токены по отдельности, мы разделяем текст на сегменты и изучаем зависимости между ними.

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

Входные данные сначала проходят через кодировщик.

Этот кодировщик будет принимать входные данные переменной длины и преобразовывать их в скрытое состояние с фиксированной длиной.

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

Эта архитектура называется архитектурой кодера-декодера (4).

В Transformers входные токены преобразуются в векторы, а затем мы добавляем некоторую позиционную информацию (позиционное кодирование), чтобы учесть порядок токенов во время параллельной обработки модели.

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

Читайте также: 10 вещей, которые вам нужно знать о BERT и архитектуре трансформатора, которые меняют ландшафт искусственного интеллекта

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

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

Механизмы внимания

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

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

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

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

При объединении внимания входы в систему внимания можно разделить на три типа:

  • Ключи (недобровольные сигналы),
  • Запросы (волевые подсказки),
  • Значения (сенсорные входы).

Мы можем визуализировать веса внимания между ключами и запросами. Значения и ключи - это скрытые состояния кодировщика, а запрос - это выходные данные предыдущего декодера.

Масштабируемое внимание к скалярному продукту

Масштабируемое скалярное произведение - это более эффективная схема вычислений для функции скоринга.

Мы вычисляем скалярное произведение по входным запросам (Q) и ключам (K) с одинаковой длиной вектора (d). Затем мы масштабируем их, чтобы убедиться, что дисперсия сохраняется с разными длинами векторов, а затем применяем функцию softmax, чтобы получить веса для значений (V).

Масштабируемое внимание к точечному продукту и внимание нескольких голов [источник]

Многоголовое внимание

Параллельно мы выполняем ч время одного Dot-Product Attention.

W - веса ключей, запросов и значений, а O - выходное линейное преобразование.

Многоголовое внимание используется в нашей модели в:

  • Слои декодера; Запросы - это выходные данные предыдущего уровня декодера, а ключи - это выходные данные кодировщика.
  • Слои самовнимания кодировщика; ключи, запросы и значения взяты из предыдущего уровня кодировщика.

Самовнимание

Особый механизм внимания, когда все запросы, ключи и значения взяты из одного источника. Самовнимание (внутреннее внимание) происходит быстрее, чем повторяющиеся слои, когда длина последовательности (n) меньше размерности представления (d).

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

Позиционная сеть прямой связи

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

Вложения и softmax

Преобразуйте входные и выходные токены в векторы размерности модели и преобразуйте выходные данные декодера в предсказанные вероятности.

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

Позиционное кодирование

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

Краткое содержание Vanilla Transformer

Vanilla Transformer - отличная модель для преодоления недостатков моделей RNN, но у нее все еще есть две проблемы:

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

Итак, нам все еще нужно еще одно усовершенствование, чтобы решить эти проблемы и преодолеть эти недостатки.

Трансформер-XL

Transformer XL - это более новая версия Transformer (очень длинная). Он унаследован от ванильного преобразователя, но вводит механизм повторения и относительное позиционное кодирование.

В Transformer-XL вместо вычисления скрытого состояния с нуля для каждого сегмента модель сохранит скрытое состояние ранее изученных сегментов и будет использовать его для текущего сегмента.

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

Механизм повторения

Чтобы сохранить зависимости между сегментами, Transformer-XL ввел этот механизм. Transformer-XL обработает первый сегмент так же, как и обычный преобразователь, а затем сохранит вывод скрытого слоя при обработке следующего сегмента.

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

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

  • Результат предыдущего слоя такой же, как и в vanilla Transformer (серые стрелки на следующем рисунке).
  • Ранее обработанный вывод скрытого слоя (зеленые стрелки на следующем рисунке) как расширенный контекст.

Относительное позиционное кодирование

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

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

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

Краткое описание трансформатора XL

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

Это приводит к усилению долгосрочной зависимости. Согласно исходной статье Transformer-XL, он может изучать зависимости на 80% дольше, чем RNN, и на 450% дольше, чем ванильные трансформаторы, и обеспечивает лучшую производительность на длинных и коротких последовательностях до 1800+ раз быстрее, чем ванильный преобразователь.

Эта модель реализована в TensorFlow и PyTorch и доступна с открытым исходным кодом.

Компрессионный трансформатор

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

Было создано несколько методов для уменьшения вычислительных затрат внимания, таких как механизмы разреженного доступа, но это не решает затрат на хранение.

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

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

Функции сжатия

Построен на основе Transformer-XL. XL сохраняет прошлые активации для каждого слоя и отбрасывает их только тогда, когда они устарели. Модель сжатия была реализована для сжатия старых воспоминаний вместо их удаления.

В этой модели используются различные функции сжатия:

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

Краткое описание компрессионного трансформатора

Сжатие преобразования полезно при моделировании на большие расстояния. Если это неприменимо к вашему проекту, сжатое преобразование не принесет никаких преимуществ.

Как видно из следующего сравнения, результаты очень близки к transformer-XL, но с огромными преимуществами оптимизации использования памяти.

Связанных с работой

Реформатор

Заменяет внимание скалярного произведения на хеширование с учетом локальности, которое изменило сложность модели с O (L2) на O (L log L) и использовало обратимую версию остаточных слоев вместо использования стандартного остаточного слоя. Эти изменения снизили вычислительные затраты и заставили модель конкурировать с состоянием моделей трансформатора, будучи быстрее.

Вывод

И это все. Мы изучили три типа моделей Transformer и, надеюсь, теперь понятно, почему они ожили.

Эти модели, вдохновленные человеческим зрением и памятью, приближают нас к моделям, которые действительно работают как человеческий мозг. Мы еще далеки от этого, но «Трансформеры» - большой шаг в правильном направлении.

Спасибо за чтение!

Проверьте мою последнюю статью:



Другие ресурсы о трансформерах

Первоначально опубликовано на https://neptune.ai 7 мая 2021 г.