机器学习之RNN循环神经网络与LSTM

RNN循环神经网络

RNN循环神经网络,又称为时间循环神经网络。同样缩写是RNN的还有一种叫做递归神经网络(结构循环时间网络)。

 1.基本循环神经网络

 

 其中U、V、W 均为权重值,图片左边的基本循环图等价于右边分解后的循环图。从右图中我们可以看出隐藏值St 取决于St-1 和 xt 。

所以可以写出以下公式:其中 g()与 f()  为激活函数.

 

 2.双向循环神经网络

 

 一个参与正向计算的 A与一个参与反向计算的 A' 。所以这里就相当于又多了一个关系,即St 也与St+1有关。因此可以写出以下公式:

 

 3.深层循环神经网络(多层隐藏层)

 

 

循环神经网络的训练

1.BPTT算法

流程:

  1. 前向计算每个神经元的输出值;
  2. 反向计算每个神经元的误差项值δ,它是误差函数E对神经元j的加权输入的偏导数;
  3. 计算每个权重的梯度。
  4. 使用梯度下降算法更新权重

前向计算:若写成矩阵就是下面这样的。

 

 误差计算

 

 

 计算权重的梯度:

 

 

 

LSTM长短期记忆

 因为在梯度的计算过程中是累乘的,所以当数值大于或小于1就会出现累乘为无穷(爆炸)或0(消失),LSTM解决RNN训练中的梯度消失或者爆炸的方法。

LSTM的思路是这样的,在原先的隐藏层中加入一个单元状态C

     

 

  正是使用这个状态单元C,才能起到控制作用,其运作图如下图所示

 

 

三个重要的门:遗忘门 .输入门 、输出门

遗忘门:决定了上一时刻的单元状态Ct-1 有多少保留到当前时刻Ct 

输入门:决定了当前时刻网络的输入Xt  有多少保存到单元状态 Ct

输出门:单元状态Ct 有多少输出到LSTM的当前输出值 ht

 

 上图所示的LSTM的内部结构,内部结构中的表示分别乘和加。

 

遗忘门:,遗忘门用一个sigmoid函数区分哪些该遗忘,那些该记住。所以经过这个sigmoid函数的参数是前一个状态S与当前的输入X组成的向量与一个权重W进行乘积。由此确定那部分为0那部分为1,0表示忘记,1表示记住,于是与上一个C相乘的时候就可以做到把该忘记的忘记了。其中b表示置偏项。

 

 

输入门:

  

  

 

   it 挑选出当前状态下需要记住的东西,然后计算当前的单元状态  。最后整合前后的状态C 进行跟新。

 

输出门:

  

   

   首先确定一下多少内容是需要输出出去,所以先建立一个Ot ,然后利用这个Ot 从新得出的单元状态C中计算得到 h

 

总结下就是下面这个图:

 

 

 

 

参考原文:

https://zybuluo.com/hanbingtao/note/581764

https://zybuluo.com/hanbingtao/note/541458 

 https://zhuanlan.zhihu.com/p/32085405

转载于:https://www.cnblogs.com/jacker2019/p/11563416.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值