实习点滴(9)--LSTM是如何解决RNN中的“梯度消失”

来源:互联网 发布:高晓松和吴彦祖 知乎 编辑:程序博客网 时间:2024/06/17 15:07

        我们都知道RNN到迭代后期会出现“梯度消失”的问题;

        我们也知道LSTM是RNN的变形和改进,它解决了RNN中的“梯度消失”问题;

        我们还知道LSTM的各种门(遗忘门、输入门、输出门)。

        但是,我们不知道究竟LSTM是如何通过这些门解决“梯度消失”的,反正之前我一直很含糊,现在,我们就一探究竟。

      1.初识RNN与LSTM:

         为了更好的直观上比较二者的不同,我决定直接上图:

         普通RNN:

                                  

          LSTM:

                                 

      2.梯度消失的缘由:

        RNN中一般会用tanh()函数作为激活函数,而tanh函数如下图所示,在迭代后期,会逐渐收敛,导致梯度趋于0,于是,出现了“梯度下降”的问题。

                                                                       

      3.LSTM如何解决:

        遗忘门:

                                                                             

         输入门:

                                                                         

         状态更新:

                                                                             

         输出门:

                                                                             

        现在我们看看它是如何解决的。

        我们可以看到,最后我们输出是两部分的“同或”运算,第一部分与RNN的运算相同,第二部分是通过三个门新增加的,这一部分正是LSTM的特别之处,在反向传播的过程中,不仅仅由o(t)起作用(因为,如果只有o起作用,那么还是会出现梯度消失),从而解决了梯度消失的问题


原创粉丝点击