RNN、LSTM相关知识总结。

RNN

        产生的原因:前馈网络的输出值只受当前输入的影响,但是没办法处理类似对话、文本、音频等类似的具有时序信息的数据,即前馈网络没有记忆力,当前结果不受之前的任何影响。

       实质:RNN可以根据之前所有记忆内容来进行对当前结果的判断,可以用来处理时序信息。

         RNN包括三个部分:输入层、隐藏层和输出层。如图所示,RNN在对当前时间步进行判断时同时受到当前输入和之前的隐藏状态的影响。

        当时间轴较长的情况下,RNN在进行反向传播时可能会发生梯度消失或者梯度爆炸的问题。我们可以采用更换激活函数或剪枝等操作进行处理。

        RNN的输入数据通常时一组具有时序信息的序列,输出则是图中y1,y2…yn这些隐藏状态组成的向量。通常用yn来代表最终的输出。

        RNN中的隐藏层的层数和隐藏层中隐藏单元的个数都是可以自行定义的。

        RNN各层之间是通过隐藏状态来建立联系的。

        RNN的前向传播公式:

        参数共享:在RNN每层隐藏层中,他们的参数W、V和b是相同的,只有在反向传播时才进行更新。

        RNN的参数解析(Pytorch):

        torch.nn.RNN(input_size,hidden_size,num_layers,batch_first)

  • inpur_size指的是数据特征表示维度,例如:输入数据每个都是由300维的词向量进行表示,那么input_size就是300
  • hindden_size指的就是每层隐藏单元中的隐藏因子数量,自行定义。
  • num_layers指RNN中隐藏层的层数。
  • bitch_first如果设置为true,表示输入数据x排列顺序为(bitch,seq_len,input_size),默认为false。

         梯度消失或爆炸的原因:在RNN反向传播时(BPTT),需要寻找最优的参数,但是累乘会导致激活函数导数的累乘,同时还有权重的累乘。如果权重小于1,那么就会产生梯度消失的问题,同理当权重大于1,则会产生梯度爆炸现象。

LSTM

        LSTM是一种特殊的RNN模型,它能够学习长期依赖型。开发LSTM是为了处理在训练传统RNN时可能遇到的爆炸和消失的梯度问题。裁剪梯度可以应对梯度爆炸问题,但是无法解决梯度衰减问题,所以RNN难以捕捉时间序列中时间步相差较大的依赖关系。

        细胞状态只得就是最上边水平得那个。细胞状态的改变受到遗忘门和输入门的影响,输出门不改变细胞状态的值。

        LSTM中包括输入门、遗忘门和输出门三个门来控制添加或者删除信息。其中门可以选择性的让信息通过,sigmoid层输出后的结果就是0-1范围内的一个实数,0代表全部删除,1代表全部通过。

       遗忘门:是模型最先通过的门控,它决定着我们要从细胞状态(Ct-1)中丢失什么信息。

    遗忘门公式:

   输入门:输入门是第二个通过的门控结构,他可以决定有多少新的信息加入到细胞状态中。输入门门控分为两个部分,第一部分由sigmoid层决定要更新那些信息,和遗忘门相似,第二部分是使用tanh层新生成一个向量,代表着备选的用来更新的内容,叫做候选记忆细胞。最后将这两部进行逐点相乘,对细胞状态进行更新。

   输入门公式:

        输出门:输出门是最后经过的门控,它决定着我们模型最后的输出值。首先用sigmoid层来确定细胞状态的哪部分进行输出,接着我们将细胞状态通过tanh层处理,处理后的值是-1到1之间,将他们两部分逐点相乘得到的结果就是当前时间步的输出,也叫做当前时间步的隐藏状态

 

 输出门公式:

        为什么LSTM可以解决RNN中的梯度消失的问题:因为在反向传播时,LSTM求出的导数中不含有权重项,只有sigmoid。但是RNN求出来的既有权重项又有sigmoid项,sigmoid的范围在0-1之间,而权重的变化则是产生梯度爆炸或衰减的真正原因。

RNN、LSTM与GRU的区别:

        (1)三者复杂度比较:LSTM > GRU > RNN,当数据集不大时,GRU和LSTM难分伯仲、但是数据集变大时LSTM更优;
        (2)RNN和GRU都只有隐状态,而LSTM不仅传递隐状态还传递细胞状态;
        (3)GRU:reset门(操作对象为ht-1),update门(操作对象为ht和ht-1);LSTM:input门(操作对象为ct),forget门(操作对象为ct-1),output门(操作对象为ht)

注:

        本文为学习时摘抄、总结的内容,全文链接如下:

        (2条消息) 【RNN】深入浅出讲解循环神经网络(介绍、原理)_程序遇上智能星空的博客-CSDN博客_循环神经网络原理

(2条消息) LSTM原理及实现(一)_bill_b的博客-CSDN博客_lstm实现

循环神经网络讲解|随时间反向传播推导(BPTT)|RNN梯度爆炸和梯度消失的原因|LSTM及GRU(解决RNN中的梯度爆炸和梯度消失)-跟李沐老师动手学深度学习_哔哩哔哩_bilibiliRNN & GRU & LSTM 区别与联系 - outthinker - 博客园 (cnblogs.com)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值