zoukankan      html  css  js  c++  java
  • RNN,LSTM

    在DNN中,当前输出层的值只和当前输入值有关系。如果当前输出值不仅依赖当前输入值,也依赖于前面时刻的输入值,那么DNN就不适用了。因此也就有了RNN。

    一、RNN

    1、RNN结构

    此RNN结构一共有T个时间序列,每个时间序列的输入为x,输出为y,流向下一个循环神经细胞的隐藏层状态为a。 

    2、RNN CELL单元以及前向传播

    前向传播公式为上图右所示

    3、RNN反向传播

    二、 LSTM

    1、LSTM的结构

    2、LSTM细胞单元

    一共三个sigmoid激活函数,门控作用。两个tanh。

    遗忘门(遗忘什么信息,因此使用sigmoid函数来控制,sigmoid的范围在0~1):

    $$mathbf{Gamma}_f^{langle t angle} = sigma(mathbf{W}_f[mathbf{a}^{langle t-1 angle}, mathbf{x}^{langle t angle}] + mathbf{b}_f) $$

    更新门(什么信息用来更新细胞状态):

    $$mathbf{Gamma}_i^{langle t angle} = sigma(mathbf{W}_i[a^{langle t-1 angle}, mathbf{x}^{langle t angle}] + mathbf{b}_i) $$ 

    输出门(什么信息用来输出):

    $$ mathbf{Gamma}_o^{langle t angle}=  sigma(mathbf{W}_o[mathbf{a}^{langle t-1 angle}, mathbf{x}^{langle t angle}] + mathbf{b}_{o})$$ 

    候选细胞状态

    $$mathbf{ ilde{c}}^{langle t angle} = anhleft( mathbf{W}_{c} [mathbf{a}^{langle t - 1 angle}, mathbf{x}^{langle t angle}] + mathbf{b}_{c} ight) $$

    最终细胞状态

    $$ mathbf{c}^{langle t angle} = mathbf{Gamma}_f^{langle t angle}* mathbf{c}^{langle t-1 angle} + mathbf{Gamma}_{i}^{langle t angle} *mathbf{ ilde{c}}^{langle t angle} $$ (因此,根据遗忘门和更新门,不需要的信息当门控值为0或者很小时,求和的部分只取很小值,因为是求和操作,因此可以防止梯度消失)

    隐藏细胞状态

    $$ mathbf{a}^{langle t angle} = mathbf{Gamma}_o^{langle t angle} * anh(mathbf{c}^{langle t angle})$$

    输出

    $$mathbf{y}^{langle t angle}_{pred} = extrm{softmax}(mathbf{W}_{y} mathbf{a}^{langle t angle} + mathbf{b}_{y})$$

    参考 Cousera

    谢谢!
  • 相关阅读:
    Eclipse快捷键 10个最有用的快捷键
    28000是 the account is lock
    MVN 打包命令
    增加eclipse启动的Tomcat内存的方法
    Ubuntu 12.04 简单实用的快捷键
    linux zip
    oracle 删除已连接用户
    eclipse下svn的分支与合并操作
    spring xml 配置文件向Bean 设置List值
    如何添加或删除ubuntu用户和组
  • 原文地址:https://www.cnblogs.com/ylxn/p/10229491.html
Copyright © 2011-2022 走看看