Как декодер обусловлен обучением в seq2seq? - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь понять последовательное обучение с RNN.Что я понимаю до сих пор, так это то, что выход кодера используется для кондиционирования декодера.

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

Источник: Нейросетевые методы для обработки естественного языка. Йоав Голдберг

Насколько я понимаю автора, декодер работает на каждом этапе с вектором состояния И выходом декодера И следующей частьюпоследовательность.Таким образом, вектор состояния декодера отделен от результата кодера.

enter image description here

Источник: десятиминутное введение в последовательностьизучение последовательностей в Keras Франсуа Шоле

Насколько я понимаю автора и источника, декодеру предоставляется состояние кодера в качестве начального состояния.Таким образом, вектор состояния декодера является выходным сигналом декодера.Шаги декодера зависят только от выхода кодера через вектор состояния.

enter image description here

1 Ответ

0 голосов
/ 05 декабря 2018

Существует много способов подачи выходного сигнала кодера в декодер;либо непрерывно подавать его в декодер, либо разрешить ему создавать скрытое состояние декодера (либо непосредственно, либо после поверхностного преобразования), либо даже путем объединения выходного сигнала декодера с выходным сигналом кодера перед передачей двух из них в окончательное выходное предсказание (см. Cho et.al '14).Как правило, каждый дополнительный вектор, который вы вводите в свой декодер, масштабирует его вычислительную сложность в довольно неблагоприятных условиях;если, например, вы решили подавать выходной сигнал энкодера E в качестве входных данных на каждом шаге, вы увеличиваете свое пространство ввода с ‖X‖ до ‖X + E‖, что означает увеличение в пространстве параметров E * H (в простом случае RNN, т.е. не считая стробирования), где H - ваш скрытый размер.Это увеличивает пропускную способность сети, а также ее тенденцию к перегрузке, но это иногда необходимо (например, в случаях, когда вы пытаетесь декодировать в длинные выходные последовательности, в которых сети необходимо «напоминать» о том, над чем она работает),

В любом случае формализм остается прежним;декодер всегда зависит от выхода энкодера, поэтому вы всегда будете максимизировать p (y t | y t-1 ... y 0 , X) - разница в том, как вы решите включить входной контекст в вашу модель.

...