Neural-Networks
LSTM 如何防止梯度消失問題?
LSTM 是專門為避免梯度消失問題而發明的。應該使用 Constant Error Carousel (CEC) 來做到這一點,它在下圖中(來自Greff 等人)對應於cell周圍的循環。
(來源:deeplearning4j.org)
我知道那部分可以看作是一種恆等函數,所以導數是一,梯度保持不變。
我不明白的是它如何不會由於其他激活功能而消失?輸入、輸出和遺忘門使用 sigmoid,其導數最多為 0.25,g 和 h 傳統上是tanh。通過那些不使梯度消失的反向傳播如何?
消失的梯度最好在一維的情況下得到解釋。多維更複雜,但本質上是類似的。您可以在這篇優秀的論文 [1] 中查看它。
假設我們有一個隱藏狀態在時間步. 如果我們讓事情變得簡單並消除偏見和輸入,我們就有
然後你可以證明
標有 !!! 是關鍵。如果權重不等於 1,它將在,或呈指數級增長。 在 LSTM 中,你有細胞狀態. 那裡的導數形式為
這裡是遺忘門的輸入。如您所見,不涉及指數級快速衰減因子。因此,至少存在一條梯度不會消失的路徑。完整的推導參見[2]。 [1] 帕斯卡努、拉茲萬、托馬斯·米科洛夫和約書亞·本吉奧。“關於訓練循環神經網絡的難度。” ICML (3) 28 (2013): 1310-1318。
[2] 拜耳,賈斯汀·西蒙。學習序列表示。Diss. 慕尼黑,慕尼黑工業大學,Diss.,2015 年,2015 年。