Глава 9. Глубокое обучение для последовательностей и текста
349
Текстовая сводка топологии модели simpleRNN, созданной в листинге 9.2, вы
глядит следующим образом:
Layer (type) Output shape Param #
=================================================================
simple_rnn_SimpleRNN1 (Simpl [null,32] 1504
_________________________________________________________________
dense_Dense1 (Dense) [null,1] 33
=================================================================
Total params: 1537
Trainable params: 1537
Non-trainable params: 0
_________________________________________________________________
В ней намного меньше весовых параметров, чем в ранее описанном MLP
(1537 вместо 107 585, то есть в 70 раз меньше), но потери MAE на проверочном на
боре данных ниже (то есть предсказания более точны), чем у MLP во время обуче
ния (0,271 вместо 0,289). Это небольшое, но стабильное сокращение погрешности
предсказания температуры подчеркивает мощь единства параметров на основе
временно
'
й инвариантности и преимущества RNN при обучении на последователь
ных данных, такие как наши метеорологические измерения.
Наверное, вы обратили внимание на то, что, несмотря на относительно небольшое
число весовых параметров в слое simpleRNN, его обучение и выполнение вывода про
исходят намного дольше, чем в моделях прямого распространения, подобных MLP.
Этот основной недостаток RNN — следствие невозможности распараллеливания
операций над отдельными временн
ы
ми шагами. А невозможно распараллеливание
потому, что последующие шаги зависят от значений состояния, вычисляемых на
предыдущих шагах (см. рис. 9.2 и псевдокод в листинге 9.1). В нотации «O большое»:
прямой проход RNN занимает
O
(
n
) времени, где
n
— число входных временн
ы
х ша
гов. Обратный проход (BPTT) занимает еще
O
(
n
) времени. Входной признак задачи
Jenaweather состоит из большого количества (240) временн
ы
х шагов, в результате
чего обучение и длится так долго, как мы видели ранее. Именно поэтому мы обучаем
модель в tfjsnode, а не в браузере.
Ситуация с RNN разительно отличается от ситуации со слоями прямого рас
пространения, например плотными и conv2d. В этих слоях можно распараллелить
вычисления по входным элементам, поскольку операция над одним элементом
не зависит от результатов, которые дают другие входные элементы. Благодаря этому
прямой и обратный проходы для подобных слоев прямого распространения зани
мают менее
O
(
n
) времени (в некоторых случаях около
O
(1)) при использовании
GPU для ускорения вычислений. В разделе 9.2 мы изучим еще несколько распа
раллеливаемых подходов к моделированию последовательных данных, в частности
одномерную свертку. Впрочем, познакомиться с RNN все равно не помешает, ведь
одномерная свертка не обладает в определенном смысле такой чувствительностью
к позиции элементов последовательности, как они (больше об этом рассказывается
далее).
350
Do'stlaringiz bilan baham: |