1. Что такое seq2seq
Во многих приложениях обработки естественного языка как ввод, так и вывод могут быть последовательностями неопределенной длины. Возьмем в качестве примера машинный перевод: на входе может быть последовательность английских текстов неопределенной длины, а на выходе может быть последовательность французских текстов неопределенной длины, например:
Английский ввод: «Они», «есть», «наблюдают», «.»
Французский вывод: "Ils", "regardent", "."
Когда и вход, и выход представляют собой последовательности неопределенной длины, мы можем использовать модель кодер-декодер или модель seq2seq.Последовательная модель или модель seq2seq для краткости. Обе эти модели по существу используют две рекуррентные нейронные сети, называемые кодером и декодером. Кодер используется для анализа входной последовательности, а декодер используется для генерации выходной последовательности. Две рекуррентные нейронные сети обучаются совместно.
На рисунке ниже показан один из способов перевода приведенного выше английского предложения во французское предложение с использованием кодировщика-декодера. В обучающем наборе данных мы можем добавить специальный символ «
2. Энкодер
Роль кодировщика состоит в том, чтобы преобразовать входную последовательность неопределенной длины в фоновую переменную c постоянной длины и закодировать информацию о входной последовательности в фоновой переменной. Обычно используемый кодировщик представляет собой рекуррентную нейронную сеть.
Давайте рассмотрим образцы данных временных рядов с размером партии 1. Предположим, что входная последовательность — это x1,...,xT, например, xi — i-е слово во входном предложении. На временном шаге t рекуррентная нейронная сеть будет вводить вектор признаков xt из xt и скрытое состояние предыдущего временного шага.Преобразовать в скрытое состояние ht текущего временного шага. Преобразование скрытого слоя рекуррентной нейронной сети можно выразить как функцию f:
Затем кодировщик преобразует скрытое состояние каждого временного шага в фоновую переменную с помощью пользовательской функции q:
Например, при выбореq(h1, . . . , hT ) = hT, фоновая переменная — это скрытое состояние последнего временного шага входной последовательностиhT.
Описанный выше кодировщик представляет собой однонаправленную рекуррентную нейронную сеть, и скрытое состояние на каждом временном шаге зависит только от этого временного шага и предыдущей входной подпоследовательности. Мы также можем создавать кодировщики, используя двунаправленные рекуррентные нейронные сети. В этом случае скрытое состояние кодера на каждом временном шаге зависит как от подпоследовательностей до, так и после этого временного шага (включая ввод на текущем временном шаге) и кодирует информацию обо всей последовательности.
3. Декодер
Только что было введено, что фоновая переменная c, выдаваемая кодером, кодирует информацию всей входной последовательности x1,...,xT. Учитывая выходную последовательность y1, y2,..., yT' в обучающих выборках, для каждого временного шага t' (символ отличается от входной последовательности или временного шага кодера t), условие выхода декодера yt' вероятность будет основываться на предыдущей выходной последовательностии фоновая переменная c, то есть:
Для этого мы можем использовать другую рекуррентную нейронную сеть в качестве декодера. На временном шаге t' выходной последовательности декодер преобразует выходные данные предыдущего временного шагаи фоновую переменную c в качестве входных данных и сравнить их со скрытым состоянием предыдущего временного шагаПреобразование в скрытое состояние st' текущего временного шага. Следовательно, мы можем выразить преобразование скрытого слоя дешифратора функцией g:
Со скрытым состоянием декодера мы можем использовать пользовательский выходной слой и операцию softmax для вычисления, например, на основе скрытого состояния декодера st' на текущем временном шаге вывод предыдущего временного шагаи фоновая переменная c для вычисления распределения вероятности выхода yt' на текущем временном шаге.
4. Обучите модель
Из оценки максимального правдоподобия мы можем максимизировать условную вероятность выходной последовательности на основе входной последовательности:
и получить потери для этой выходной последовательности:
Во время обучения модели среднее значение всех потерь выходной последовательности обычно используется в качестве функции потерь, которую необходимо минимизировать. В предсказании модели, описанном на рисунке выше, нам нужно взять выходные данные декодера на предыдущем временном шаге в качестве входных данных текущего временного шага. Напротив, во время обучения мы также можем использовать метки последовательности меток (реальная выходная последовательность обучающего набора) на предыдущем временном шаге в качестве входных данных декодера на текущем временном шаге. Это называется принуждением учителей.
5. предсказание модели seq2seq
Выше описано, как обучить кодер-декодер, чьи входные и выходные данные являются последовательностями неопределенной длины. В этом разделе мы опишем, как использовать кодер-декодер для предсказания последовательностей неопределенной длины.
При подготовке обучающего набора данных мы обычно добавляем специальный символ «
5.1 Жадный поиск
Жадный поиск (жадный поиск). Для любого временного шага t' выходной последовательности ищем слово с наибольшей условной вероятностью из |Y| слов:
как вывод. Как только найден символ "
Давайте посмотрим на пример. Предположим, что выходной словарь содержит четыре слова «A», «B», «C» и «
Далее обратите внимание на пример, показанный ниже. В отличие от приведенного выше рисунка, слово «C» со второй по величине условной вероятностью выбирается на временном шаге 2.
. Поскольку выходные последовательности временных шагов 1 и 2, на которых основан временной шаг 3, изменились с «A» и «B» на приведенном выше рисунке на «A» и «C» на следующем рисунке, временной шаг 3 на рисунке ниже генерирует каждое слово. Условная вероятность изменилась. Выбираем слово «В» с наибольшей условной вероятностью. В это время выходными подпоследовательностями первых 3 временных шагов, на которых основан временной шаг 4, являются «A», «C» и «B», которые отличаются от «A», «B» и «C» в выше рисунок. Следовательно, условная вероятность каждого слова, сгенерированного на временном шаге 4 на рисунке ниже, также отличается от вероятности на рисунке выше. Нами установлено, что условная вероятность выходной последовательности «А» «С» «В» «» в этот момент времени составляет 0,5×0,3×0,6×0,6 = 0,054, что больше, чем условная вероятность полученной выходной последовательности жадным поиском. Следовательно, выходная последовательность "A" "B" "C" "
5.2 Полный поиск
Если цель состоит в том, чтобы получить оптимальную выходную последовательность, мы можем рассмотреть исчерпывающий поиск: перебрать все возможные выходные последовательности и вывести последовательность с наибольшей условной вероятностью.
Хотя полный перебор позволяет получить оптимальную выходную последовательность, его вычислительные затратыЭто легко сделать негабаритным. Например, когда |Y|= 10000 и T′ = 10, мы оценимПоследовательности: это практически невозможно выполнить. пока жадный поиск Стоимость, что обычно значительно меньше, чем вычислительная стоимость полного перебора. Например, когда |Y|=10000 и T′=10, I Нам нужно только оценитьпоследовательность.
5.3 Поиск луча
Лучевой поиск — это улучшенный алгоритм жадного поиска. Он имеет гиперпараметр размера луча. Ставим на k. На временном шаге 1 выбираются k слов с наибольшей условной вероятностью на текущем временном шаге, чтобы сформировать первые слова из k возможных выходных последовательностей. На каждом последующем временном шаге на основе k выходных последовательностей-кандидатов предыдущего временного шага из k |Y| возможных выходных последовательностей выбираются k с наибольшей условной вероятностью в качестве выходных последовательностей-кандидатов этого временного шага. Наконец, мы отфильтровываем последовательности, содержащие специальный символ «
Ширина луча равна 2, а максимальная длина выходной последовательности равна 3. Возможными выходными последовательностями являются A, C, AB, CE, ABD и CED. Мы получим окончательный набор выходных последовательностей-кандидатов из этих 6 последовательностей. Из набора окончательных выходных последовательностей-кандидатов мы берем следующую последовательность с наивысшим баллом в качестве выходной последовательности:
Где L — длина конечной последовательности-кандидата, а α обычно может быть выбрано равным 0,75. Lα в баллах должен наказывать более длинные последовательности с большим количеством логарифмических сложений в вышеуказанных баллах. Анализ показывает, что вычислительная стоимость поиска луча составляет. Это находится между вычислительными издержками жадного поиска и исчерпывающего поиска. Кроме того, жадный поиск можно рассматривать как поиск луча с шириной луча, равной 1. Поиск луча обеспечивает компромисс между вычислительными затратами и качеством поиска благодаря гибкой ширине луча k.
6. Блю Счет
Для оценки результатов машинного перевода обычно используется BLEU (Bilingual Evaluation Understudy) (двуязычная оценка). Для любой подпоследовательности в последовательности прогнозирования модели BLEU проверяет, появляется ли подпоследовательность в последовательности меток.
В частности, пусть точность подпоследовательности из n слов равна pn. Это отношение количества подпоследовательностей с n словами, соответствующими предсказанной последовательности и последовательности меток, к количеству подпоследовательностей с n словами в предсказанной последовательности. Например, предположим, что последовательность меток — это A, B, C, D, E, F, а предсказанная последовательность — это A, B, B, C, D, тогда:
Униграммы прогнозируемой последовательности: A/B/C/D, все существуют в последовательности меток, поэтому P1 = 4/5 и т. д., p2 = 3/4, p3 = 1/3, p4 = 0. Предполагать- количество слов в последовательности меток и предсказанной последовательности соответственно, тогда определение BLEU:
где k — максимальное количество слов в подпоследовательности, которую мы хотим сопоставить. Можно видеть, что когда предсказанная последовательность и последовательность метки точно совпадают, СИНИЙ 1.
Поскольку сопоставление более длинных подпоследовательностей сложнее, чем сопоставление более коротких подпоследовательностей, BLEU придает большее значение точности сопоставления более длинных подпоследовательностей. Например, когда pn фиксировано на уровне 0,5, по мере увеличения n. Кроме того, модели, предсказывающие более короткие последовательности, как правило, дают более высокие значения pn. Следовательно, коэффициенты, предшествующие члену умножения в приведенном выше уравнении, предназначены для штрафа за более короткие выходные данные. Например, если k = 2, предположим, что последовательность меток — A, B, C, D, E, F, а предсказанная последовательность — A, B. Хотя p1 = p2 = 1, коэффициент штрафа exp(1-6/2) ≈ 0,14, поэтому BLEU также близок к 0,14.
7. Реализация кода
Базовая реализация TensorFlow seq2seq
【Машинное обучение легко понять серия статей】
8. Ссылки
Практическое глубокое обучение
автор:@mantchs
Гитхаб:GitHub.com/NLP-love/ml…
Приглашаются все желающие присоединиться к обсуждению! Улучшайте этот проект вместе! Номер группы: [541954936]