Вставьте нейтраль, RNNs

Это четвертая и последняя публикация в нашей серии сообщений в блоге, посвященных обработке естественного языка! В нашем первом посте мы увидели, что применение нейронных сетей для построения языковых моделей было важным поворотным моментом на шкале времени НЛП, а в нашем втором посте мы исследовали значение встраивания слов в развитии этой области. В нашем третьем посте мы рассказали о языковой модели и о том, как построить свою собственную языковую модель в Keras! Наконец-то мы готовы заняться последовательной обработкой, вниманием и преобразователем!

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

Теперь это много. Вы можете спросить: «Что, черт возьми, такое последовательное моделирование, Жанна?» Вы также можете страдать от дефицита внимания, поэтому позвольте мне познакомить вас с…

Модели Seq2seq

Последовательность-последовательность (или сокращенно seq2seq) - это класс моделей машинного обучения, которые преобразуют входную последовательность в выходную последовательность. Обычно модели seq2seq состоят из двух отдельных компонентов: кодировщика и декодера. Кодировщик создает скрытый вектор фиксированной длины (или вектор контекста) входной последовательности. Декодер использует скрытый вектор для (повторного) построения выходной или целевой последовательности. И входная, и выходная последовательность могут иметь переменную длину.

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

Роман Модель кодировщика-декодера RNN был представлен в 2014 году известным исследователем Кёнхён Чо и его командой для выполнения статистического машинного перевода. Эта модель использует окончательные скрытые представления RNN кодера в качестве вектора контекста для RNN декодера. Этот подход отлично работает для коротких последовательностей, но не может точно кодировать более длинные последовательности. Кроме того, RNN страдают от исчезающих градиентов и медленно обучаются. Добавление механизма внимания к архитектуре кодера-декодера RNN помогает улучшить его способность моделировать долгосрочные зависимости.

Внимание? Внимание!

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

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

Есть два основных типа внимания: внимание Bahdanau и внимание Luong.

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

Контекстный вектор Luong Attention вычисляется аналогично Bahdanau Attention. Ключевые различия между ними заключаются в следующем:

  • с Luong Attention вектор контекста используется только после того, как RNN создала выходные данные для этого временного шага,
  • способы, которыми рассчитываются баллы выравнивания, и
  • вектор контекста объединяется со скрытым состоянием декодера для создания нового вывода.

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

Трансформер

Исследователи Google Brain перевернули столы в сообществе НЛП и показали, что последовательное моделирование можно проводить, используя только внимание, в своей статье 2017 года под названием Внимание - это все, что вам нужно ». В этой статье они представляют Transformer, упрощенную архитектуру, которая использует только механизмы внимания для определения глобальных зависимостей между входными и выходными последовательностями.

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

Компонент кодирования

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

Компонент декодирования

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

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

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

Почему Трансформеры?

Как и Рекуррентные нейронные сети (RNN), Transformers позволяют обрабатывать последовательную информацию, но гораздо более эффективно. Transformer превосходит RNN как с точки зрения точности, так и с точки зрения вычислительной эффективности. Его архитектура лишена каких-либо повторений или сверток, и, таким образом, обучение можно распараллеливать между несколькими процессорами. Он достиг высочайшего уровня производительности в нескольких задачах, и, что еще более важно, было обнаружено, что он очень хорошо обобщается на другие задачи НЛП, даже с ограниченными данными.

В заключение

Transformer покорил сообщество НЛП, заняв место среди рядов Word2Vec и LSTM. Сегодня некоторые современные языковые модели основаны на архитектуре Transformer, например BERT и GPT-3. В этом сообщении блога мы обсудили эволюцию последовательного моделирования от RNN к RNN с вниманием, полагаясь исключительно на внимание к входным данным модели и к выходным последовательностям с помощью Transformer.

Это четвертая и последняя публикация в серии сообщений в блоге, посвященных обработке естественного языка (НЛП). Я хотел бы услышать ваши отзывы, поэтому не стесняйтесь писать мне на [email protected].

Об авторе: Жанна - специалист по анализу данных со специализацией в области НЛП в Cape AI. Жанна имеет степень магистра прикладной математики Стелленбошского университета и публиковалась в ACL.

О Cape AI: Cape AI - компания, занимающаяся искусственным интеллектом, базирующаяся в Южной Африке и Нидерландах, специализирующаяся на консалтинге в области ИИ, а также на исследованиях и разработках в области компьютерного зрения и обработки естественного языка.