Решение задач класса seq2seq при помощи рекуррентных нейронных сетей
Теперь мы хорошо понимаем работу рекуррентных нейронных сетей и можем вернуться к проблеме seq2seq. Мы начали эту главу примером задачи класса seq2seq — привязкой последовательности слов в предложении к последовательности меток частей речи.
Работать с этой проблемой было можно, поскольку для создания соответствующих меток не требовалось учитывать долгосрочные зависимости. Но некоторые проблемы seq2seq, например перевод с одного языка на другой или создание резюме к видеофайлу, таковы, что долгосрочные зависимости в них крайне важны для успеха. И тут в дело вступают РНС.
Работа РНС с seq2seq во многом напоминает работу автокодера, о которой шла речь в предыдущей главе. Модель seq2seq состоит из двух отдельных сетей. Первая называется кодер (encoder) . Это рекуррентная сеть (обычно использующая нейроны LSTM), которая читает всю входную последовательность. Цель ее — создать сжатое понимание входных данных и выразить его в единой «мысли», представленной конечным состоянием сети. Затем используется декодер (decoder) , начальное состояние которой инициализируется конечным состоянием кодера. Символ за символом генерируется выходная последовательность. На каждом шаге декодер использует собственные выходные данные с предыдущего шага в качестве входных данных текущего шага. Весь процесс представлен на рис. 7.24.
Рис. 7.24. Иллюстрация использования схемы рекуррентной сети кодера-декодера для решения задач класса seq2seq
В этом примере мы попробуем перевести предложение с английского на французский. Мы токенизируем входное предложение и используем плотное векторное представление (так же, как для модели анализа эмоциональных состояний, созданной в предыдущем разделе), загружая по слову в кодер. В конце предложения мы ставим специальную метку (end of sentence, EOS), которая отмечает конец входного предложения для кодера.
Теперь берем скрытое состояние последней для инициализации декодера. Первый элемент на входе в нее — метка EOS, а выходное значение интерпретируется как первое слово предсказанного французского перевода.
С этого момента мы используем выходные данные декодера как входные данные в нее же на следующем шаге. Продолжаем, пока кодер не выдаст на выходе метку EOS, что будет свидетельствовать об окончании работы над переводом исходного английского предложения. Мы проанализируем открытую рабочую реализацию этой сети (с парой улучшений и хитростей для повышения точности) ниже.
Архитектура РНС для seq2seq может быть использована и для обучения хорошим плотным векторным представлениям последовательностей. Например, Райан Кирос и коллеги в 2015 году ввели понятие вектора skip-thought [91], который по архитектурным характеристикам напоминал как структуру автокодера, так и модель Skip-Gram (см. главу 6). Вектор skip-thought был создан путем разбиения фрагмента на серию триплетов, состоящих из последовательных предложений. Авторы воспользовались одним кодером и двумя декодерами (рис. 7.25).
Рис. 7.25. Архитектура skip-thought для seq2seq порождает компактные векторные представления для целых предложений
Кодер прочел предложение, плотное векторное представление которого (хранимое в последнем конечном состоянии кодера) мы и намеревались создать. Затем начался этап декодирования. Первая из сетей использовала это представление для инициализации собственного скрытого состояния и попыталась воссоздать предложение, предшествовавшее введенному. Вторая старалась воссоздать предложение, непосредственно следующее за введенным. Вся система была полностью обучена на этих триплетах и после завершения могла выдавать связные фрагменты текста; кроме того, повысилась эффективность решения ключевых задач на уровне предложений. Вот пример порождения рассказа из исходной статьи:
she grabbed my hand.
"come on. "
she fluttered her back in the air.
"i think we're at your place. I ca n't come get you. "
he locked himself back up
" no. she will. "
kyrian shook his head [92]
Теперь, поняв, как применять рекуррентные нейронные сети к задачам класса seq2seq, мы почти готовы создать свой вариант. Но сначала нужно разобраться еще с одной проблемой, к которой мы и перейдем в следующем разделе: идеей внимания в РНС для seq2seq.
Читать дальше
Конец ознакомительного отрывка
Купить книгу