9. Современные рекуррентные нейронные сети
В предыдущей главе мы познакомились с основами рекуррентных нейронных сетей, которые лучше справляются с последовательными данными. Мы реализовали языковую модель на текстовых данных, но для многих современных задач обработки последовательностей этих методов может оказаться недостаточно.
Например, частая проблема рекуррентных нейронных сетей на практике — численная неустойчивость. Хотя мы уже применяли такие приёмы, как отсечение градиентов, чтобы смягчить эту проблему, её всё же нужно решать более сложными архитектурами последовательных моделей. Конкретно, мы представим две широко используемые сети: управляемый рекуррентный блок (gated recurrent unit, GRU) и долгую краткосрочную память (long short-term memory, LSTM). Затем расширим архитектуру рекуррентной нейронной сети с одним однонаправленным скрытым слоем. Опишем глубокие архитектуры с несколькими скрытыми слоями и обсудим двунаправленные конструкции, основанные на прямых и обратных рекуррентных вычислениях. Современные рекуррентные сети часто используют такие расширения. Объясняя эти варианты, мы продолжим рассматривать задачу языкового моделирования из главы 8.
На самом деле языковое моделирование раскрывает лишь малую часть возможностей обучения последовательностям. В самых разных задачах, например в автоматическом распознавании речи, преобразовании текста в речь и машинном переводе, и входы, и выходы — последовательности произвольной длины. Чтобы показать, как работать с такими данными, мы на примере машинного перевода опишем архитектуру «кодировщик — декодировщик» на основе рекуррентных нейронных сетей и лучевой поиск, с помощью которого генерируются последовательности.