10. Современные рекуррентные нейронные сети¶
В предыдущей главе были рассмотрены ключевые идеи, лежащие в основе рекуррентных нейронных сетей (RNN). Однако, как и в случае со свёрточными нейронными сетями, в архитектурах RNN было предложено огромное количество инноваций, которые привели к созданию нескольких сложных конструкций, успешно зарекомендовавших себя на практике. В частности, наиболее популярные из них содержат механизмы для смягчения известной численной нестабильности, с которой сталкиваются RNN, проявляющейся в виде затухающих и взрывающихся градиентов. Напомним, что в Section 9 мы боролись с взрывающимися градиентами, применяя грубый эвристический метод обрезки градиента. Несмотря на эффективность этого приёма, проблема затухающих градиентов остается нерешенной.
В этой главе мы вводим ключевые идеи, лежащие в основе наиболее успешных архитектур RNN для последовательностей, которые происходят из двух работ. Первая, Long Short-Term Memory (Hochreiter and Schmidhuber, 1997), вводит ячейку долгой краткосрочной памяти — вычислительный элемент, заменяющий традиционные узлы в скрытом слое сети. Благодаря этим ячейкам долгой краткосрочной памяти сети способны преодолевать трудности с обучением, с которыми сталкивались более ранние рекуррентные сети. Интуитивно ячейка долгой краткосрочной памяти решает проблему затухания градиента, сохраняя значения во внутреннем состоянии каждой ячейки и передавая их по рекуррентному ребру с весом 1 через множество последовательных временных шагов. Набор мультипликативных вентилей помогает сети определять не только входные данные, которые следует допускать в состояние памяти, но и то, когда содержимое состояния памяти должно влиять на выход модели.
Вторая статья, Bidirectional Recurrent Neural Networks (Schuster and Paliwal, 1997), описывает архитектуру, в которой для определения выхода в любой точке последовательности используется информация как из будущего (следующие временные шаги), так и из прошлого (предыдущие временные шаги). Это контрастирует с предыдущими сетями, в которых на выход влияли только прошлые входные данные. Двунаправленные рекуррентные нейронные сети стали основным инструментом для задач маркировки последовательностей в обработке естественного языка, а также во множестве других задач. К счастью, эти два нововведения не являются взаимоисключающими, и их успешно объединяли для классификации фонем (Graves and Schmidhuber, 2005) и распознавания рукописного текста (Graves et al., 2008).
В первых разделах этой главы будут рассмотрены архитектура LSTM, её облегченная версия — управляемый рекуррентный блок (GRU), ключевые идеи, лежащие в основе двунаправленных RNN, а также краткое объяснение того, как слои RNN объединяются для формирования глубоких RNN. Далее мы исследуем применение RNN в задачах преобразования последовательностей в последовательности, рассмотрев машинный перевод и такие ключевые концепции, как архитектуры кодировщик–декодировщик и лучевой поиск.
- 10.1. Долгая краткосрочная память (LSTM)
- 10.2. Блоки с управляемыми переходами (GRU)
- 10.3. Глубокие рекуррентные нейронные сети
- 10.4. Двухнаправленные рекуррентные нейронные сети
- 10.5. Машинный перевод и набор данных
- 10.6. Архитектура кодировщик–декодировщик
- 10.7. Обучение последовательность-в-последовательность для машинного перевода
- 10.7.1. Принудительное обучение учителя
- 10.7.2. Кодировщик
- 10.7.3. Декодировщик
- 10.7.4. Кодировщик–декодировщик для обучения последовательность-в-последовательность
- 10.7.5. Функция потерь с маскировкой
- 10.7.6. Обучение
- 10.7.7. Предсказание
- 10.7.8. Оценка предсказанных последовательностей
- 10.7.9. Итоги
- 10.7.10. Упражнения
- 10.8. Лучевой поиск