ячейка памяти (карусель константной ошибки); выходная функция активации; глазковые связи.
Входной Скрытый Скрытый
слой слой 1 слой 2
|
Рис. 4.23 Рекуррентная нейронная сеть,
|
|
|
развернутая вдоль временной оси
|
|
|
Выход
|
|
|
Выход блока
|
Рекуррентная
|
Рекуррентная
|
|
|
|
Рекур-
|
Смотровые глазки
|
Выходной вентиль
|
|
|
|
рентная
|
|
Вход
|
|
|
|
Ячейка
|
Рекуррентная
|
|
|
|
Вентиль
|
|
Вход
|
забывания
|
|
|
|
|
|
Входной вентиль
|
|
Вход блока
|
Вход
|
|
|
|
Вход
|
Рекуррентная
|
|
|
Выходной
слой
Обозначения
Невзвешенная связь
Взвешенная связь Связь с запаздыванием по времени
Точка ветвления
Умножение
Сумма по всем входам
Вентильная функция активации (всегда сигмоида)
Входная функция активации (обычно tanh)
Выходная функция активации (обычно tanh)
Рис. 4.24 Схема блока LSTM
140 Основные архитектуры глубоких сетей
Три вентиля обучаются защищать линейный блок от ложных сигналов: входной вентиль защищает блок от несущественных входных событий; вентиль забывания позволяет блоку забывать предыдущее содержимое па-
мяти;
выходной вентиль раскрывает (или не раскрывает) содержимое памяти на
выходе блока LSTM.
Выход блока LSTM рекуррентно соединяется с его входом и всеми вентилями блока. Во всех трех вентилях блока LSTM применяются сигмоидные функции ак-тивации (для приведения аргумента к диапазону [0, 1]). В качестве функции акти-вации на входе и выходе блока обычно используется tanh.
Замечание о вентиле забывания
Значение активации 1.0 означает «помнить все», а значение 0.0 – «забыть все». Так что этот вентиль было бы правильнее назвать «вентилем запоминания»!
Памятуя об этом, мы обычно инициализируем смещение вентиля забывания большим зна-чением, чтобы он обучался долгосрочным зависимостям (в DL4J «большое» значение по умолчанию равно 1.0).
На рис. 4.25 приведены векторные формулы прямого прохода для слоя LSTM, взятые из работы Greff et al.41
Вход блока
Входной вентиль
Вентиль забывания
Состояние ячейки
Выходной вентиль
Выход блока
Рис. 4.25 Векторные формулы прямого прохода для слоя LSTM
В табл. 4.1 описаны переменные, встречающиеся на рис. 4.25.
Таблица 4.1. Описание переменных в векторных формулах LSTM
Имя переменной
|
Описание
|
xt
|
Входной вектор в момент t
|
W
|
Прямоугольные матрицы входных весов
|
R
|
Квадратные матрицы рекуррентных весов
|
p
|
Векторы весов глазковых связей
|
b
|
Векторы смещений
|
Саморекуррентная связь имеет фиксированный вес 1.0 (за исключением слу-чая, когда она модулируется), чтобы преодолеть проблему исчезающего гради-ента. В такой базовой форме блоки LSTM могут обнаруживать далеко отстоящие события в последовательности – находящиеся на удалении до 1000 временных
Greff et al., 2015. LSTM: A Search Space Odyssey // http://arxiv.org/pdf/1503.04069v1.pdf.
Рекуррентные нейронные сети 141
шагов. Сравните с предшествующими архитектурами, которые могли моделиро-вать только события в пределах 10 временных шагов или около того.
Другие варианты LSTM
Обратите внимание на статью «LSTM: A Search Space Odyssey» (https://arxiv.org/ pdf/1503.04069v1.pdf).
Вентильные рекуррентные блоки
LSTM имеет некоторое сходство вентильный рекуррентный блок (Gated Recurrent Unit – GRU)42. В GRU имеются вентиль забывания и вентиль обновления, которые похожи на вентиль забывания и входной вентиль в блоке LSTM. Основное отличие заключается в том, что GRU полностью раскрывает содержимое своей памяти, при-меняя интеграцию с утечкой (но с адаптивной временной константой, управляемой вентилем обновления). На дизайн GRU оказал влияние блок LSTM, но считается, что GRU проще для вычислений и реализации.
LSTM-слои
LSTM-слой принимает входной вектор x (нефиксированный) и порождает выход y. На значение y оказывают влияние вход x и история всех входов. На слой влияет история входов через рекуррентные связи. В РНС имеется внутреннее состояние, которое обновляется при подаче на вход слоя каждого нового вектора. Состояни-ем является один скрытый вектор.
Обучение
LSTM-сетях для обновления весов применяется обучение с учителем. На вход алгоритма обучения подается по одному вектору из последовательности. Векто-ры вещественные и становятся последовательностями активаций входных бло-ков. Все остальные блоки вычисляют свое текущее значение активации на каждом временном шаге. Это значение является нелинейной функцией от взвешенной суммы активаций всех блоков, связанных с данным.
Для каждого вектора во входной последовательности ошибка равна сумме от-клонений вычисленных активаций от известных меток. Рассмотрим вариант ал-горитма обратного распространения во времени (BPTT), применяемый в рекур-рентных нейронных сетях, включая LSTM.
Do'stlaringiz bilan baham: |