# «Teacher-forcing — это хак»: решение для стохастических RNN

Источник: https://www.youtube.com/watch?v=_PyusGsbBPY
Канал: Yannic Kilcher
Опубликовано: 21.12.2018

---

## Stochastic RNNs: жизнь без Teacher-Forcing
[[JUMP:0:00]]

Традиционные методы обучения рекуррентных нейронных сетей (RNN) для генерации текста практически всегда полагаются на технику *teacher-forcing*, при которой модель во время обучения получает на вход эталонные (реальные) данные, а не свои собственные предсказания. В своем докладе Флориан, гость канала Янника Килхера (Yannic Kilcher), утверждает, что этот подход имеет фундаментальные недостатки, и предлагает альтернативу: стохастические RNN, использующие вариационные потоки (variational flows) и свободные от teacher-forcing.

### Проблема Teacher-Forcing
[[JUMP:0:41]]

Генерация текста исторически выросла из языкового моделирования, где задача состоит в предсказании следующего слова по цепочке предыдущих. В RNN это реализуется через функцию перехода $f$, которая обновляет скрытое состояние $h$ на основе предыдущего состояния и предыдущего слова.

Однако при обучении возникает «ловушка»: чтобы модель сходилась, исследователи используют *teacher-forcing* — подмену собственного предсказания модели на «истинный» токен из обучающей выборки. 

По мнению Флориана, этот подход является «хаком» и порождает ряд проблем:

* **Разрыв между обучением и тестом:** Модель учится на ground truth данных, но во время генерации (test time) она работает только со своими предсказаниями, что ведет к накоплению ошибок.
* **Хрупкость:** Алекс Грейвс (Alex Graves), выступавший на воркшопе по обучению с подкреплением на конференции NeurIPS, назвал *teacher-forcing* одной из трех главных проблем авторегрессионных моделей. Грейвс утверждает, что это ведет к «миопическим» (близоруким) представлениям и «хрупкой» генерации, где модель учится предсказывать только на один шаг вперед, а не выстраивать длинные последовательности.

### Новый подход: неавторегрессионные модели
[[JUMP:4:11]]

Чтобы уйти от этой зависимости, Флориан предлагает изменить архитектуру функции перехода $f$. В новой модели функция:

1.  Зависит от предыдущего скрытого состояния ($h_{t-1}$), но **не зависит** от предыдущего слова.
2.  Принимает на вход вектор белого шума как источник энтропии.

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

### Вариационные потоки и обучение
[[JUMP:5:27]]

Для реализации этой концепции авторы используют вариационные потоки (variational flows) и фреймворк вариационного вывода (variational inference).

* **Генеративная модель:** Состоит из генеративного потока $F_G$ и источника шума.
* **Инференс-модель:** Использует поток $F_Q$, который информирован о данных (будущих наблюдениях).

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

### Итоги и метрики
[[JUMP:13:57]]

Авторы протестировали модель на задаче безусловной генерации текста. Ключевые выводы исследования:

* **Производительность:** Модель не уступает, а зачастую превосходит авторегрессионные RNN, обученные с *teacher-forcing*, при том же размере скрытого состояния.
* **Важность архитектуры:** Использование мощного генеративного потока оказалось критически важным для достижения высоких результатов.
* **Интерпретируемость шума:** Авторы измерили взаимную информацию (mutual information) между вектором шума и наблюдением, подтвердив, что модель действительно использует шумовую компоненту как активный драйвер генерации.

Флориан заключает: неавторегрессионное моделирование последовательностей с использованием вариационных потоков — это жизнеспособный путь, который позволяет отказаться от *teacher-forcing* и получить интерпретируемую шумовую модель.