Модель Seq2Seq, которую должен знать машинный перевод

машинное обучение

Автор: Ли Сюэдун.

Монтажер: Ли Сюэдун

Предисловие

Seq2Seq, полное имя Sequence to Sequence. Это общая структура кодировщика-декодера, которую можно использовать для машинного перевода, суммирования текста, моделирования разговоров, подписей к изображениям и многого другого. Seq2Seq не является официальной реализацией системы GNMT (Google Neural Machine Translation) с открытым исходным кодом. Назначение фреймворка — решать более широкий круг задач, и нейронный машинный перевод — лишь одна из них. В рекуррентных нейронных сетях мы научились преобразовывать последовательность в выходные данные фиксированной длины. В этой статье мы рассмотрим, как преобразовать последовательность в вывод последовательности неопределенной длины (как и в машинном переводе, предложения в исходном и целевом языках часто имеют разную длину).

1

Начиная

(1)Цели дизайна

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

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

  • Воспроизводимость Использование файлов YAML для настройки конвейеров и моделей легко воспроизводимо.

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

  • Документация: Весь код задокументирован с использованием стандартных строк документации Python, а руководства по использованию написаны, чтобы помочь нам начать работу с общими задачами.

  • Хорошая производительность: ради простоты кода команда разработчиков не пыталась выжимать все возможные производительности, которые можно было бы увеличить, но текущая реализация достаточно быстра почти для всех производственных и исследовательских проектов. Кроме того, tf-seq2seq также поддерживает распределенное обучение.

(2)основная концепция

  • Configuration

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

model_params:    attention.class:                                                       seq2seq.decoders.attention.AttentionLayerBahdanau    attention.params:        num_units: 512        embedding.dim: 1024        encoder.class: seq2seq.encoders.BidirectionalRNNEncoder    encoder.params:        rnn_cell:        cell_class: LSTMCell    cell_params:        num_units: 512скопировать код
  • Input Pipeline

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

  • Кодер

  • Декодер

  • Модель (Внимание)

2

Encoder-Decoder

Весь процесс можно пояснить следующей картинкой:

Рисунок 1: Простейшая модель кодер-декодер

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

X = (x1,x2,...,xm)

Y = (y1,y2,...,yn)

Кодировщик: он кодирует входную последовательность в вектор C заданной длины (промежуточное семантическое представление) посредством нелинейного преобразования.Существует много способов получить с.Самый простой способ-назначить последнее скрытое состояние кодировщика с.Последнее скрытое состояние преобразуется для получения c, и все скрытые состояния также могут быть преобразованы.

C = F(x1,x2,...,xm)

Декодер: он должен сгенерировать слово yi, которое будет сгенерировано в момент времени i в соответствии с вектором C (результатом вывода кодировщика) и ранее сгенерированной исторической информацией y1, y2, ..., yn.

yi = G( C , y1,y2,...,yn-1)

На следующем рисунке показана схема генерации куплетов. 

Рисунок 2: Маленькие каштаны в жизни

  • фаза кодирования

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

  • этап декодирования

Это можно рассматривать как процесс, обратный кодированию. На этом этапе мы предсказываем следующее выходное слово yt по заданному семантическому вектору C и ранее сгенерированной выходной последовательности y1, y2,..., yt-1, т.е.также могу написать

 

В RNN это также можно упростить до

где s — скрытый слой в выходном RNN (то есть декодер RNN), C представляет семантический вектор, полученный предыдущим кодировщиком, а yt-1 представляет выход предыдущего периода времени, который, в свою очередь, используется в качестве ввод этого периода времени. g может быть нелинейной многослойной нейронной сетью, которая генерирует вероятность того, что каждое слово в словаре принадлежит yt.

3

Модель внимания

Хотя модель кодер-декодер очень классическая, она также очень ограничена. Самое большое ограничение состоит в том, что единственной связью между кодированием и декодированием является семантический вектор C фиксированной длины. То есть кодировщик сжимает всю последовательность информации в вектор фиксированной длины. Однако у этого способа есть два недостатка: во-первых, семантический вектор не может полностью представить информацию всей последовательности, во-вторых, информация, содержащаяся в первом входном содержимом, будет разбавлена ​​более поздней входной информацией. Чем длиннее входная последовательность, тем серьезнее это явление. Это делает невозможным получение достаточного количества информации из входной последовательности в начале декодирования. Тогда показатель точности при декодировании будет в определенной степени обесценен.

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

Рисунок 3: Классическая модель внимания

Каждый c будет автоматически выбирать наиболее подходящую контекстную информацию для вывода текущего y. В частности, мы используем aij для измерения корреляции между hj на j-м этапе кодирования и i-м этапе декодирования Наконец, контекстная информация ci входа i-го этапа в декодере получается из взвешенной суммы все hj к aij.

Рисунок 4: Диаграмма различных уровней внимания

Входная последовательность - «Я люблю Китай», поэтому h1, h2, h3 и h4 в кодировщике можно рассматривать как информацию, представленную «я», «люблю», «Китай» и «страна» соответственно. При переводе на английский язык первый контекст с1 должен быть наиболее релевантен слову «я», поэтому соответствующий а11 относительно велик, а соответствующие а12, а13, а14 относительно малы. c2 должно быть больше всего связано с «любовью», поэтому соответствующее a22 относительно велико. Последний c3 больше всего связан с h3 и h4, поэтому Значения а33 и а34 относительно велики. Как рассчитывается удельный вес модели aij?

Например: Ввод представляет собой английское предложение: Том Чейз Джерри, которое генерирует: «Том», «Чейз», «Джерри». Общий процесс расчета значения распределения вероятности распределения внимания:

Рисунок 5: Схематическая диаграмма расчета веса

Вес внимания текущего выходного слова Yi для определенного входного слова j определяется текущим скрытым слоем Hi и состоянием скрытого слоя (hj) входного слова j; затем добавляется sofrmax для получения значения вероятности 0- 1. То есть возможность выравнивания, соответствующая целевому слову Yi и каждому входному слову, получается через функцию F(hj, H i). Для более подробной информации, пожалуйста, обратитесь к статье Zhihu He Zhiyuan, а ссылка на статью будет дана в конце статьи.

4

seq2seq CNN

Модель Seq2Seq, используемая в большинстве сценариев, основана на RNN.Хотя были достигнуты хорошие результаты, некоторые ученые обнаружили, что использование CNN для замены кодировщика или декодера в Seq2Seq может дать лучшие результаты. Недавно FaceBook опубликовал статью «Сверточная последовательность для обучения последовательности», в которой предлагается использовать CNN для формирования модели Seq2Seq для машинного перевода, превосходящей эффект машинного перевода на основе LSTM, созданного Google. Большой причиной временной победы этой сети является использование множества приемов, которым стоит научиться:

  • Захват удаленных зависимостей

CNN низкого уровня фиксирует зависимости между словами, которые находятся близко друг к другу, а CNN высокого уровня фиксирует зависимости между словами, которые находятся дальше друг от друга. Через иерархическую структуру реализована аналогичная RNN (LSTM) функция захвата зависимостей последовательностей длиной более 20 слов.

  • эффективный

Предполагая, что длина последовательности последовательности равна n, использование RNN (LSTM) для ее моделирования требует n операций, а временная сложность составляет O (n). Напротив, при использовании сложенной CNN необходимо выполнить только n/k операций, а временная сложность составляет O(n/k), где k — размер окна свертки.

  • Параллельная реализация

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

  • Слияние нескольких слоев внимания

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

  • gate mechanism

GLU используется в качестве затворного механизма. Метод активации блока GLU показан в следующей формуле:

  • Отсечение градиента и инициализация мелкозернистого веса для ускорения обучения и сходимости модели.

Мы не можем судить, хороши или плохи модель seq2seq на основе CNN и модель Seq2Seq на основе LSTM. Самым большим преимуществом Seq2Seq с использованием CNN является то, что он быстрый и эффективный, а недостатком является то, что нужно настроить слишком много параметров. Когда CNN и RNN используются для задач NLP, CNN также осуществима, а структура сети более гибкая и эффективная.Поскольку обучение RNN часто требует состояния предыдущего момента, его трудно распараллелить, особенно в больших наборах данных, CNN -Seq2Seq дает лучшие результаты, чем RNN-Seq2Seq.

5

Область применения

  • машинный перевод

Рисунок 6: Сравнение эффекта от использования Seq2SeqКак видно из изображения, вектор контекста в модели заведомо содержит лингвистическое значение входной последовательности, и может разделять предложения с разным значением, генерируемые в разном порядке, что очень полезно для повышения точности машинного перевода. В настоящее время основные системы онлайн-перевода построены на основе моделей глубокого обучения, включая Google, Baidu и т. д. 

  • Распознавание речи Вход представляет собой последовательность речевых сигналов, а выход — последовательность слов.

  • текст резюмеВходные данные представляют собой последовательность текста, а выходные данные представляют собой последовательность сводок последовательности текста. Методы реферирования текста обычно делятся на две категории: экстрактивное реферирование и абстрактно-генеративное реферирование. Первый заключается в сортировке наиболее информативных предложений из документа или нескольких документов и объединении их в аннотацию; второй, подобно редактору-человеку, понимает содержание полного текста, а затем резюмирует весь текст краткими словами. В применении экстрактивный абстрактный метод более практичен и широко используется, но есть определенные проблемы в связности и непротиворечивости, и требуется некоторая постобработка; Абстрактные методы могут хорошо решать эти задачи, но они очень сложны для изучения.

  • генерация диалоговПосле того, как была предложена модель Seq2Seq, к задаче чат-бота была приложена большая работа.Есть надежда, что модель можно будет обучить с помощью массивных данных, чтобы сделать агента, который может ответить на любые открытые вопросы, в то время как другая группа людей изучает, как Объединение модели Seq2Seq с текущей базой знаний для создания ориентированного на выполнение задач чат-бота также позволило добиться определенного прогресса в очень вертикальной области (например, при покупке билетов в кино и т. д.). 

Рисунок 7: Чат-бот для создания диалогов
  • поколение поэзииНаличие машины, пишущей для вас стихи, не является далекой мечтой, очень интересным применением модели Seq2Seq является генерация стихотворения, то есть по предыдущему предложению стихотворения генерируется следующее предложение.

  • Создание завершения кода

    Рисунок 8: Схема автодополнения кода
  • Предварительная подготовкаВ 2015 году Google предложил автоэнкодер Seq2Seq в качестве этапа предварительной подготовки для классификации текста LSTM, тем самым повысив стабильность классификации. Это делает цель технологии Seq2Seq больше не ограничивающейся получением самой последовательности, открывая новую страницу в области ее применения.

  • Понимание прочитанного

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

резюме

 

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

использованная литература
  1. Адрес источника: https://github.com/google/seq2seq.

  2. «Сверточная последовательность для последовательного обучения»: https://link.zhihu.com/?target=https%3A//arxiv.org/abs/1705.03122

  3. «Языковое моделирование с закрытыми линейными единицами»: https://link.zhihu.com/?target=https%3A//arxiv.org/abs/1612.08083

  4. «Модель сверточного кодировщика для нейронного машинного перевода»: https://link.zhihu.com/?target=https%3A//arxiv.org/abs/1611.02344.

  5. Нейронный машинный перевод Google: https://research.googleblog.com/2016/09/a-neural-network-for-machine.html

  6. Краткая книга: Datartisan https://www.jianshu.com/p/124b777e0c55

  7. Знайте автора: Ли Нин https://zhuanlan.zhihu.com/p/30516984

  8. Знайте автора: Хэ Чжиюань https://zhuanlan.zhihu.com/p/28054589

  9. PaperWeekly: Чжан Цзюнь https://zhuanlan.zhihu.com/p/26753131

end

Алгоритм машинного обучения Full Stack Engineer


Выделенный публичный аккаунт

Длительное нажатие, определение, добавление внимания

Присоединяйтесь к группе, учитесь, получайте помощь

Ваше внимание, наш энтузиазм,

Мы обязательно окажем вам наибольшую помощь в обучении