Seq2Seq — вариант рекуррентной нейронной сети, включающей кодировщик (Encoder) и декодер (Decoder) в двух частях. Seq2Seq — важная модель обработки естественного языка, которую можно использовать в машинном переводе, диалоговых системах и автоматическом суммировании.
1. Структура и использование RNN
в предыдущих статьях«Рекуррентная нейронная сеть RNN, LSTM, ГРУ»Модель RNN представлена в. Базовая модель RNN показана на рисунке выше Входные данные, принимаемые каждым нейроном, включают: состояние скрытого слоя предыдущего нейронаh(для памяти) и текущий вводx(Текущая информация). После того, как нейрон получит ввод, он рассчитает новое скрытое состояние.hи выводy, а затем переходит к следующему нейрону. из-за скрытого состоянияhСуществование RNN заставляет RNN иметь определенную функцию памяти.
Для разных задач обычно требуется небольшая корректировка структуры модели RNN, которая по количеству входов и выходов делится на три общие структуры: N vs N, 1 vs N, N vs 1.
1.1 N vs N
На приведенном выше рисунке представлена структура N vs N модели RNN, которая содержит N входных данных.x1, x2, ..., xN и N выходыy1, y2, ..., yН. В структуре N против N,Входные и выходные последовательности имеют одинаковую длину, обычно подходит для следующих задач:
- маркировка частями речи
- Обучите языковую модель, используйте предыдущие слова для предсказания следующего слова и т. д.
1.2 1 vs N
В структуре 1 vs N у нас есть только один входx, и N выходыy1, y2, ..., yН. Есть два способа использовать 1 против N, первый просто помещает вводxВ первый нейрон RNN второй должен передать входxПроходят во все нейроны RNN. Структура 1 vs N подходит для следующих задач:
- Изображение для генерации текста, вводxЭто изображение, а вывод — описание изображения.
- В соответствии с музыкальной категорией генерируется соответствующая музыка.
- В соответствии с категорией романа генерируется соответствующий роман.
1.3 N vs 1
В структуре N против 1 у нас есть N входовx1, x2, ..., xN, а выходy. Структура N vs 1 подходит для следующих задач:
- Задание на классификацию последовательности, категорию фрагмента речи, фрагмента текста и анализ тональности предложений.
2. Модель Seq2Seq
2.1 Структура Seq2Seq
Вышеупомянутые три структуры имеют определенные ограничения на количество входов и выходов РНС, но на практике длина последовательности многих задач не фиксирована, например, в машинном переводе длины предложений исходного языка и целевого языка различаются; диалог В системе предложения вопроса и ответа имеют разную длину.
Seq2Seq — это важная модель RNN, также известная как модель Encoder-Decoder, которую можно понимать какН×Ммодель. Модель состоит из двух частей:EncoderИнформация для кодирования последовательностей, кодирование информации о последовательности произвольной длины в векторcвнутри. иDecoderявляется декодером, декодер получает вектор контекстной информацииcЗатем информация может быть декодирована и выведена в виде последовательности. Существует много типов структур модели Seq2Seq, ниже приведены некоторые из наиболее распространенных:
Первое
секунда
третий
2.2 Энкодер Энкодер
Основное различие между этими тремя моделями Seq2Seq заключается в декодере, и все их кодировщики одинаковы. На следующем рисунке показана часть кодировщика, RNN кодировщика принимает входные данные.x, и, наконец, выводит вектор контекста, который кодирует всю информациюc, нейроны в середине не имеют выхода. Декодер в основном проходит в векторе контекстаc, а затем декодировать необходимую информацию.
Как видно из рисунка выше, Encoder мало чем отличается от обычной RNN, за исключением того, что промежуточные нейроны не имеют выхода. где вектор контекстаcРасчет может производиться несколькими способами.
Как видно из формулы,cСкрытое состояние последнего нейрона можно использовать напрямуюhN означает; также может выполнять некоторое преобразование скрытого состояния последнего нейронаhN, функция q представляет некоторое преобразование, также можно использовать скрытые состояния всех нейроновh1, h2, ..., hN рассчитывается. получить вектор контекстаcПосле этого его нужно передать декодеру.
2.3 Декодер Декодер
Декодер имеет множество различных структур, три из которых в основном представлены здесь.
Первое
Первая структура декодера относительно проста, вектор контекстаcВ качестве начального скрытого состояния RNN введите его в RNN, а затем примите только состояние скрытого слоя предыдущего нейрона.h'без получения других входных данныхx. Скрытый слой и формула расчета вывода первой структуры Decoder:
секунда
Вторая структура Decoder имеет собственное начальное состояние скрытого слоя.h'0, больше не помещайте вектор контекстаcОно рассматривается как начальное скрытое состояние РНС, но как вход каждого нейрона РНС. Вы можете видеть, что каждый нейрон в декодере имеет один и тот же вход.c, скрытый слой и формула расчета вывода этого декодера:
третий
Третья структура Decoder аналогична второй, но к входной части добавляется выход предыдущего нейрона.y'. То есть на вход каждого нейрона входят: вектор скрытого слоя предыдущего нейронаh', выход предыдущего нейронаy', текущий входc(Вектор контекста, закодированный кодировщиком). вход в первый нейронy'0, обычно вектор вложения фактического знака предложения. Скрытый слой и формула расчета вывода третьего декодера:
3. Советы по использованию модели Seq2Seq
3.1 Teacher Forcing
Принуждение учителя используется на этапе обучения, в основном для третьей модели декодера выше.Ввод третьего нейрона модели декодера включает в себя выходные данные предыдущего нейрона.y'. Если выход предыдущего нейрона неверен, выход следующего нейрона также подвержен ошибкам, что приводит к передаче ошибки.
Форсировка учителя может в определенной степени смягчить вышеуказанные проблемы.При обучении модели Seq2Seq каждый нейрон Декодера не обязательно использует выход предыдущего нейрона, но в качестве входных данных используется определенная доля правильной последовательности.
Например, в задаче перевода данное английское предложение переводится на китайский язык. «У меня есть кошка» переводится как «У меня есть кошка».На рисунке ниже показан Seq2Seq без принуждения учителя.:
При использовании принудительного режима учителя, нейрон напрямую использует правильный вывод в качестве ввода текущего нейрона.
3.2 Attention
В модели Seq2Seq кодировщик всегда кодирует всю информацию исходного предложения в вектор контекста фиксированной длины.c, а затем в процессе декодирования вектора Decodercтакие же. В этом довольно много недостатков:
- Для более длинных предложений сложно использовать вектор фиксированной длины.cполностью выразить его значение.
- RNN имеет проблему исчезновения градиентов в длинных последовательностях и использует только вектор, полученный последним нейроном.cЭффект не идеальный.
- В отличие от того, как люди обращают внимание, то есть когда люди читают статью, они сосредотачиваются на текущем предложении.
Внимание именномеханизм внимания, — это механизм, который фокусирует внимание модели на переводимом в данный момент слове. Например, при переводе «У меня есть кошка», при переводе на «Я» обратите внимание на «Я» исходного предложения, а при переводе на «кошка» обратите внимание на «кошку» исходного предложения. .
После использования Attention ввод декодера не является фиксированным вектором контекста.c, но рассчитает текущийc.
Внимание необходимо сохранить вектор скрытого слоя каждого нейрона кодировщикаh, а затем t-й нейрон Декодера основывается на векторе скрытого слоя предыдущего нейронаh't-1 вычисляет корреляцию между текущим состоянием и каждым нейроном Энкодераeон.et является N-мерным вектором (количество нейронов кодировщика равно N), еслиeЧем больше i-е измерение t, тем больше корреляция между текущим узлом и i-м нейроном кодировщика.eСуществует множество способов вычисления t, то есть множество способов вычисления коэффициента корреляции а:
Вышеприведенное получает вектор корреляцииeПосле t необходимо выполнить нормализацию, используя нормализацию softmax. Затем используйте нормализованные коэффициенты, чтобы объединить несколько векторов скрытого слоя кодировщика, чтобы получить вектор контекста текущего нейрона декодера.cон:
3.3 beam search
Метод поиска луча используется не для обучения, а для тестирования. В каждом нейроне выбираем текущее значение выходной вероятности с наибольшим значениемtop kвыход передается следующему нейрону. Следующий нейрон использует эти k выходов соответственно, вычисляет вероятность L слов (L — размер словаря) и затем получает в kL результатыtop kмаксимальный выход, повторите этот шаг.
4. Резюме Seq2Seq
Модель Seq2Seq позволяет нам использовать входные и выходные последовательности разной длины и применима к широкому спектру сценариев, таких как машинный перевод, диалоговые системы, понимание прочитанного и многое другое.
Модель Seq2Seq может быть оптимизирована с использованием принуждения учителя, внимания, поиска луча и других методов.