深度学习5 -- 循环神经网络

引言

  • 在前面的全连接神经网络和卷积神经网络,以及它们的训练和使用。他们都只能单独的取处理一个个的输入,前一个输入和后一个输入是完全没有关系的。但是,某些任务需要能够更好的处理序列的信息,即前面的输入和后面的输入是有关系的。比如,当我们在理解一句话意思时,孤立的理解这句话的每个词是不够的,我们需要处理这些词连接起来的整个序列;当我们处理视频的时候,我们也不能只单独的去分析每一帧,而要分析这些帧连接起来的整个序列。这时,就需要用到深度学习领域中另一类非常重要神经网络:循环神经网络(Recurrent Neural Network)。

语言模型

  • RNN是在自然语言处理领域中最先被用起来的,比如,RNN可以为语言模型来建模

循环神经网络

基础循环神经网络

  • 循环神经网络与上两个神经网络相比,结构比较抽象,因为其有一个全新的概念
    微信图片_20230215110028
  • 首先左边类比全连接的神经网络,只是多了W所在的圈儿,其中x为输入,u是输入到隐藏层的权重,s是隐藏层的输出,v是隐藏层到输出层的权重
  • 那么w呢?w其实隐藏层上一次的值作为这一次隐藏层到输出层输入的权重(注意是上一次,上一次计算,而不是上一层)
  • 再看右边图示去理解循环神经网络的计算方法就好理解了:(注意理解的时候,这个并非是上一层的值,而是同层,上一次计算的值)

双向循环神经网络

  • 前面提到对于序列信息,不仅前面信息重要,后面的信息同样重要,所以我们需要双向循环神经网络
    微信图片_20230215165837
  • 该图看的时候可以类比上面的基础循环神经网络,只是隐藏层多出了反向的部分
  • 隐藏层到输出层的输入值不再是一个,而是两个,分别是正向计算和反向计算的结果值

深度循环神经网络

  • 那么进一步眼神,我们就得到了深度循环神经网络
    微信图片_20230215113222
  • 此处公式可以进一步看出,节点是节点,层是层,注意区分

循环神经网络的训练

训练算法:BPTT

  • BPTT算法是针对循环层的训练算法,它的基本原理和BP算法是一样的,也包含同样的三个步骤:
    • 前向计算每个神经元的输出值;
    • 反向计算每个神经元的误差项δ值,它是误差函数E对神经元j的加权输入的偏导数;
    • 计算每个权重的梯度。
    • 最后再用随机梯度下降算法更新权重。
  • 前向计算:
    • 循环层
      微信图片_20230215145511
  • 误差项的计算(在时间方向上的误差项计算)
    • BTPP算法将第l层t时刻的误差项δt值沿两个方向传播,一个方向是其传递到上一层网络,得到同时刻不同层的值,这部分只和权重矩阵U有关;另一个是方向是将其沿时间线传递到初始时刻t1得到初始时刻该层的值,这部分只和权重矩阵W有关。
  • 以下为计算出任意时刻的误差值δ




  • 接下来是循环层之间,误差项的传递(在同一时刻层之间的误差项计算)
  • 权重梯度的计算(W和U)



  • 上述累加公式为何如此是利用了一个结论的,如果想看看为何如此可以去参考资料中查看原解答
  • 此处加入当前个人理解误差项和梯度的关系:首先正向传播后肯定要计算总误差以方便使用反向传播来更新权重,以降低下一次正向传播的结果与真实结果的误差,在计算每个权重的时候就要使用偏导数计算每个变量对总误差的影响,其实也就是总误差对该变量的一个偏导数的值,知道该值以后,我们一般使用的是梯度下降法来进行更新权重的值,更新方法需要用到该偏导数的值,因为需要先求出所有的误差项后,再去求所有的梯度。


关于梯度爆炸和消失

  • 梯度消失更难检测,而且也更难处理一些。总的来说,我们有三种方法应对梯度消失问题:
    • 合理的初始化权重值。初始化权重,使每个神经元尽可能不要取极大或极小值,以躲开梯度消失的区域。
    • 使用relu代替sigmoid和tanh作为激活函数。
    • 使用其他结构的RNNs,比如长短时记忆网络(LTSM)和Gated Recurrent Unit(GRU),这是最流行的做法。我们将在以后的文章中介绍这两种网络。

提示

  • 关于原文章还有关系数据向量化以及稀疏矩阵,损失函数相关内容本人有写过该技术点,本文不做详细赘述
  • 关于具体代码可以看参考原文,RNN的具体代码后续我会单独再出文章

参考资料

参考资料
雅可比行列式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

矮人三等

秀儿,是你吗秀儿?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值