LSTM был изобретен специально, чтобы избежать проблемы исчезающего градиента. Предполагается, что это будет сделано с помощью карусели постоянных ошибок (CEC), которая на диаграмме ниже (от Греффа и др. ) Соответствует петле вокруг ячейки .
(источник: deeplearning4j.org )
И я понимаю, что эту часть можно рассматривать как своего рода функцию тождества, поэтому производная равна единице, а градиент остается постоянным.
Что я не понимаю, так это как он не исчезает из-за других функций активации? Врата ввода, вывода и забывания используют сигмоид, производная которого составляет не более 0,25, а g и h традиционно были tanh . Как обратное распространение через тех, кто не делает градиент исчезает?
neural-networks
lstm
TheWalkingCube
источник
источник
Ответы:
Исчезающий градиент лучше всего объяснить в одномерном случае. Многомерность более сложна, но по сути аналогична. Вы можете просмотреть его в этой превосходной статье [1].
Предположим, у нас есть скрытое состояние на шаге t времени . Если мы упростим ситуацию и удалим смещения и входные данные, мы имеем h t = σ ( w h t - 1 ) . Тогда вы можете показать, чточасT T
Фактор отмечен знаком !!! является решающим. Если вес не равен 1, он будет либо экспоненциально быстро уменьшаться до нуля в течениеt′-t, либо экспоненциально быстро расти.
В LSTM у вас есть состояние ячейки . Производная там имеет вид ∂ s t ′sT
Здесьvt- вход в ворота забытия. Как видите, экспоненциально быстрый затухающий фактор не задействован. Следовательно, существует хотя бы один путь, где градиент не исчезает. Полный вывод см. В [2].
[1] Пашкану, Разван, Томас Миколов и Йошуа Бенжио. «О сложности обучения рекуррентным нейронным сетям». ICML (3) 28 (2013): 1310-1318.
[2] Байер, Джастин Саймон. Представления последовательности обучения. Дисс. Мюнхен, Технический университет Мюнхена, Дисс., 2015, 2015.
источник
Изображение блока LSTM от Greff et al. (2015) описывает вариант, который авторы называют ванильным LSTM . Это немного отличается от оригинального определения от Hochreiter & Schmidhuber (1997). Первоначальное определение не включало ворота забытия и соединения глазка.
Термин «Карусель с постоянной ошибкой» использовался в оригинальной статье для обозначения повторяющейся связи состояния ячейки. Рассмотрим исходное определение, в котором состояние ячейки изменяется только путем сложения, когда открывается входной вентиль. Градиент состояния ячейки относительно состояния ячейки на более раннем временном шаге равен нулю.
Ошибка по-прежнему может войти в CEC через выходной вентиль и функцию активации. Функция активации немного уменьшает величину ошибки перед ее добавлением в CEC. ЦИК является единственным местом, где ошибка может течь без изменений. Опять же, когда входной вентиль открывается, ошибка выходит через входной вентиль, функцию активации и аффинное преобразование, уменьшая величину ошибки.
Таким образом, ошибка уменьшается при обратном распространении через слой LSTM, но только при входе и выходе из CEC. Важно то, что он не меняется в ЦИК независимо от того, на какое расстояние он проходит. Это решает проблему в базовой RNN, которая заключается в том, что на каждом временном шаге применяется аффинное преобразование и нелинейность, а это означает, что чем больше временное расстояние между входом и выходом, тем меньше ошибка.
источник
http://www.felixgers.de/papers/phd.pdf Пожалуйста, обратитесь к разделам 2.2 и 3.2.2, где объясняется усеченная ошибка. Они не распространяют ошибку, если она просачивается из памяти ячейки (т. Е. Если есть закрытый / активированный входной вентиль), но они обновляют веса шлюза на основе ошибки только для этого момента времени. Позже он обнуляется во время дальнейшего обратного распространения. Это своего рода хак, но причина этого заключается в том, что поток ошибок вдоль ворот все равно со временем затухает.
источник
Я хотел бы добавить некоторые детали к принятому ответу, потому что я думаю, что это немного более нюансировано, и нюанс может быть не очевиден для того, кто впервые узнает о RNN.
источник