Как следующая модель кодировщика-декодера генерирует выходные данные другого размера, чем входные?

Я реализовал следующий учебник в Keras:

https://towardsdatascience.com/nlp-sequence-to-sequence-networks-part-2-seq2seq-model-encoderdecoder-model-6c22e29fd7e1

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

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

Мое текущее понимание таково:

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

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

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


person wilkinsmicawber    schedule 17.01.2019    source источник
comment
После прочтения некоторых других руководств я думаю, что это работает следующим образом: полная входная строка снабжается токеном конца оператора. На вход полного декодера подается начало входного токена и, таким образом, задерживается на один временной шаг. Целью декодера является французское предложение с горячим кодированием, без задержки, с маркером конца оператора в конце.   -  person wilkinsmicawber    schedule 18.01.2019


Ответы (1)


Насколько я понимаю, этот документ https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf идея состоит в том, что ваш декодер предсказывает состояния (или слова), пока не увидит (предсказывает) конкретное слово (например, «EOS», которое является сокращением конца последовательности). Это, насколько я понимаю, причина, по которой длина вывода не фиксирована. Конечно, ваши тренировочные данные должны быть подходящими и аннотироваться специальными тегами «EOS».

person t_e_o    schedule 05.12.2019