Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

8. Рекуррентные нейронные сети

До сих пор мы встречались с двумя типами данных: табличными данными и данными изображений. Для изображений мы разработали специальные архитектуры свёрточных нейронных сетей, которые учитывают структуру таких данных. Иными словами, если у нас есть изображение, нужно эффективно использовать положение его пикселей: если переставить пиксели, понять содержание изображения станет очень трудно.

Главное, до сих пор мы по умолчанию считали, что данные порождаются некоторым распределением и что все примеры независимы и одинаково распределены (independently and identically distributed, i.i.d.). Однако большинство данных устроено иначе. Например, слова в статье записаны в определённом порядке: если их случайно переставить, исходный смысл текста будет трудно восстановить. Кадры видео, аудиосигнал в разговоре и поведение пользователей на сайте тоже упорядочены во времени. Поэтому для таких данных имеет смысл строить специальные модели, которые, скорее всего, будут работать лучше.

Есть и другая проблема: от нас может требоваться не просто обработать последовательность на входе, а продолжить её, то есть угадать, что будет дальше. Например, задача может состоять в том, чтобы продолжить последовательность . Такая задача типична для анализа временных рядов: с их помощью прогнозируют колебания фондового рынка, температурные кривые пациентов или ускорение, которое нужно гоночному автомобилю. Для работы с такими данными тоже нужны специальные модели.

Коротко говоря, если свёрточные нейронные сети эффективно работают с пространственной информацией, то рекуррентные нейронные сети (recurrent neural network, RNN), о которых пойдёт речь в этой главе, лучше справляются с последовательной информацией. Рекуррентная сеть вводит переменную состояния, которая хранит информацию о прошлом вместе с текущим входом, и благодаря ей определяет текущий выход.

Многие примеры использования рекуррентных сетей связаны с текстовыми данными, поэтому в этой главе мы особенно подробно рассмотрим языковые модели. После более подробного обзора последовательных данных мы познакомимся с практическими приёмами предобработки текста. Затем обсудим базовые понятия языковых моделей, которые послужат основой для проектирования рекуррентных сетей. Наконец, опишем способ вычисления градиентов в рекуррентных сетях, чтобы разобраться в проблемах, с которыми можно столкнуться при обучении таких моделей.