Часть III • Продвинутые возможности глубокого обучения с TensorFlow.js
Шлюзовой рекуррентный блок — более сложный тип RNN
SimpleRNN — не единственный рекуррентный слой в TensorFlow.js. Есть еще два:
шлюзовой рекуррентный блок (gated recurrent unit, GRU
1
) и LSTM, что, как вы
помните, расшифровывается как «сеть с долгой краткосрочной памятью»
2
. В боль
шинстве сценариев, реализуемых на практике, имеет смысл использовать один из
них. Слой SimpleRNN слишком прост для большинства практических задач, хотя
и требует намного меньшего объема вычислений и его внутренние механизмы про
ще для понимания, чем GRU и LSTM. У simpleRNN есть одна главная проблема:
хотя теоретически на момент
t
он способен хранить информацию о входных данных,
виденных многими временн
ы
ми шагами ранее, усвоение подобных долговременных
зависимостей на практике представляет собой непростую задачу.
Причина этого заключается в
проблеме исчезающего градиента
(vanishing gradient
problem) — эффекте, аналогичном наблюдаемому в сетях прямого распространения
глубиной во много слоев: по мере добавления новых слоев в сеть градиенты, рас
пространяемые обратно от функции потерь в начальные слои, все уменьшаются
и уменьшаются. А значит, обновления весовых коэффициентов тоже все уменьшают
ся и уменьшаются — до такой степени, что сеть постепенно становится необучаемой.
В случае RNN роль большого числа слоев в этой проблеме играет большое число
временн
ы
х шагов. GRU и LSTM представляют собой RNN, специально спроектиро
ванные для решения проблемы исчезающего градиента, причем из них GRU — более
простой. Давайте взглянем, как GRU это реализует.
Внутренняя структура GRU сложнее структуры simpleRNN. На рис. 9.4 показано
свернутое представление внутренней структуры GRU. По сравнению с аналогичным
свернутым представлением simpleRNN (блок Б на рис. 9.2) оно включает большее
число компонентов. Входной сигнал (
x
) и выходной сигнал/состояние (в лите
ратуре по RNN традиционно обозначаемые
h
) проходят через
четыре
уравнения,
превращаясь в новый выходной сигнал/состояние. Сравните это с simpleRNN с
од-
ним-единственным
уравнением. Сложность GRU отражается также в псевдокоде
(листинг 9.3), который можно считать реализацией механизмов, показанных на
рис. 9.4. Для простоты члены смещения в этом псевдокоде опущены.
Отметим два наиболее важных нюанса внутреннего устройства GRU.
1. Слои GRU сильно упрощают перенос информации на большое число времен
н
ы
х шагов. Это достигается за счет промежуточной величины
z
, называемой
шлюзом обновления
(update gate). Благодаря шлюзу обновления GRU обучается
переносить состояние на большое число временн
ы
х шагов с минимальными из
менениями. В частности, в уравнении (1 –
z
)
h
+
zh'
при
z
= 0 состояние
h
просто
копируется с одного временно
'
го шага на следующий. Возможность подобного
переноса в неизменном виде играет важную роль в том, как GRU борется с проб
1
Cho K. et al.
Learning Phrase Representations using RNN EncoderDecoder for Statistical
Machine Translation. — 2014. https://arxiv.org/abs/1406.1078.
2
Hochreiter S., Schmidhuber J.
Long ShortTerm Memory // Neural Computation. Vol. 9. 1997.
№ 8. P. 1735–1780.
Do'stlaringiz bilan baham: |