美文网首页
GRU && LSTM

GRU && LSTM

作者: thqby | 来源:发表于2020-11-26 12:12 被阅读0次

    本文将从以下几个方面介绍GRU && LSTM:

    1. GRU的提出背景

        前面我们讲的几种神经网络当网络层数比较深的时候,在反向传播链式法则中,可以看到都会无可避免的出现梯度消失的问题,为了解决此问题,相关学者提出了遗忘门更新们等门控结构来自动控制传播的数值。

    2.GRU的特点

        2.1.门控思想

        2.2.自动控制

    3.GRU的网络结构

        此图为盗图,上图为基本的一个神经元网络结构。

        a^t = tanh(W_{a} [a^(t-1),x^t  ] + b_{a} )

        为了解决梯度消失问题,对上述单元进行修改,增加了记忆单元,构建GRU,如下图所示:

         相应的表达式为:

            \vec{c} ^t = tanh(W_{c} [c^(t-1),x^t  ] + b_{c}  )

            \Gamma _{u} = \sigma (W_{u}[c^(t-1), x^t   ]+ b_{u}  )

            c^t = \Gamma _{u} *\vec{c} ^t  + (1-\Gamma_{u})  * c^(t-1)

        上述是简化的GRU模型,完整的GRU增加了另外一个gate,即\Gamma _{r} ,表达式如下:

            \vec{c} ^t  = tanh(W_{c} [\Gamma_{r} *c^(t-1), x^t    ] + b_{c} )

            \Gamma _{u} = \sigma (W_{u}[c^(t-1), x^t   ]+ b_{u}  )

            \Gamma _{r} = \sigma (W_{r}[c^(t-1), x^t   ]+ b_{r}  )

            c^t = \Gamma _{u} *\vec{c} ^t  + (1-\Gamma_{u})  * c^(t-1)

            a^t = c^t

    4.GRU的算法

     4.1. 从小节3的公式可以看到,GRU很好的利用了数据本身的特点,先对神经元的隐层输出进行试算,试算结果\vec{c} ^t 如果接近于0,则“更新门”\Gamma _{u} *\vec{c} ^t模块接近0,这时候“遗忘门”(1-\Gamma_{u})  * c^(t-1)模块起主要作用,当前神经元继承上一个神经元的特征数据。这个公式太妙了....反之,如果试算结果\vec{c} ^t 接近1,这时候”更新们“模块起主要作用,这时候就可以利用数据本身自调节神经元的输出,而不需要人工规则干预。

    5. LSTM的提出背景

        LSTM是另一种更强大的解决梯度消失问题的方法。它对应的RNN隐藏层单元结构如下图所示:

        此图为盗图

    6.LSTM的特点

        6.1. 门控数比GRU稍多

        6.2. 结构比GRU稍复杂

        6.3. 算法参数比GRU稍多

    7.LSTM的网络结构

    8. LSTM的算法

        数学是世界上最简洁最美丽的语言,这里不说话,默默贴公式...

        \vec{c} ^t = tanh(W_{c} [a^(t-1) ,x^t ] + b_{c} )

        \Gamma _{u} = \sigma (W_{u}[a^(t-1) ,x^t ]  + b_{c} )

        \Gamma _{f} = \sigma (W_{f}[a^(t-1) ,x^t ]  + b_{f} )

        \Gamma _{o} = \sigma (W_{o}[a^(t-1) ,x^t ]  + b_{o} )

        c^t = \Gamma _{u} *\vec{c} ^t + \Gamma _{f} *c^(t-1)

        a^t = \Gamma _{o} *c^t

        如果考虑c^<t−1>对Γu,Γf,Γo的影响,可加入peephole connection,对LSTM的表达式进行修改:

        \vec{c} ^t = tanh(W_{c} [a^(t-1),x^t  ] + b_{c} )

        \Gamma _{u} = \sigma (W_{u}[a^(t-1) ,x^t ,c^(t-1) ]  + b_{c} )

        \Gamma _{f} = \sigma (W_{r}[a^(t-1) ,x^t,c^(t-1)  ]  + b_{f} )

        \Gamma _{o} = \sigma (W_{o}[a^(t-1) ,x^t,c^(t-1)  ]  + b_{o} )

        a^t = \Gamma _{o} *c^t

    需要注意的是,这里没有使用前面的1-\Gamma _{u} 这样的小调节器,我们知道公式的激活函数为递增函数,可以想象,如果要达到门控结果,则”遗忘门“的参数W_{f} 矩阵的值则必须递减,否则就达不到相应的试算数据自动控制门控结果,好在W_{f} 的值是多次迭代训练根据损失函数梯度下降的结果。这一切不用我们过分设计。

    9. GRU和LSTM的关系

        GRU输入输出的结构与普通的RNN相似,其中的内部思想与LSTM相似。与LSTM相比,GRU内部少了一个”门控“,参数比LSTM少,但是却也能够达到与LSTM相当的功能。考虑到硬件的计算能力时间成本,因而很多时候我们也就会选择更加”实用“的GRU

    10.参考文献

    相关文章

      网友评论

          本文标题:GRU && LSTM

          本文链接:https://www.haomeiwen.com/subject/kkraiktx.html