Как декодер обусловлен в обучении seq2seq?

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

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

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

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

Источник: Франсуа Шоле, 10-минутное введение в обучение в Керасе от последовательности к последовательности.

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

1 ответ

Решение

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

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

Другие вопросы по тегам