RNN,LSTM,GRU学习笔记

一、RNN

1.循环神经网络概述

        循环神经网络(Recurrent Neural Network,RNN),简称RNN。它与DNN和CNN的不同是:可处理序列问题(如一段文字,一段语音等)。如给定一个索引从0-T的序列,对于任意的索引号t,它对应的输入是x^{t},则模型在t时刻的隐藏状态h^{t}x^{t}和t-1时刻的隐藏状态h^{t-1}共同决定。而t时刻的输出o^{t}则是由h^{t}通过非线性变换得到。

        也就是说,当我们在理解一句话时,不光要理解句子中的字,更要理解字前面或者后面的句子序列信息,以达到理解整个句子序列的目标。

        理论上来说,RNN可以理解关联往前或往后的任意多个字序列。

2.循环神经网络模型

        我想以一张图的方式简明扼要的阐述RNN模型。

 其中:

        x(t):代表在序列索引号 t 时训练样本的输入。

        h(t):代表在序列索引号 t 时模型的隐藏状态。

        o(t):代表在序列索引号 t 时模型的输出。

        L(t):代表在序列索引号 t 时模型的损失函数,模型整体的损失函数是所有的L(t)相加和。

        y(t):代表在序列索引号 t 时训练样本序列的真实输出。

        U、V、W这三个矩阵是模型的参数。他们在整个网络中是共享的。——共享权重

3.循环神经网络前向传播算法

        对于t时刻的隐藏状态:

                h_{t} = tanh(Ux_{t}+Wh_{t-1}+b)

        对于t时刻的输出:

                o_{t}=Vh_{t}+c

        则t时刻的预测输出为:

                \hat{y}_{t}=\sigma (o_{t})

        则t时刻的损失函数为:

                L_{t}=\frac{1}{2}(\hat{y}_{t}-y_{t})^{2}

        则RNN模型整体的损失函数为:

                L=\frac{1}{2}\sum_{t=1}^{T}(\hat{y}_{t}-y_{t})^{2}

4.循环神经网络反向传播算法

        BPTT(Back-Propagation Through Time)算法是RNN的训练算法,本质上还是BP算法。当然BPTT算法与BP算法的不同之处在于RNN中的U、V、W在序列中的不同位置是共享的,反向传播时我们更新的是相同的参数。

        BPTT算法关于参数U、V、W的偏导数推导更新公式如下:

         由于sigmoid导数的范围在(0,0.25],tanh导数的范围在(0,1],因此在上面关于W和U的梯度连乘中,会导致梯度接近于0,这就引起了梯度消失的问题。梯度消失意味着那一层参数再也不更新了,模型训练也就没意义了。Relu函数在一定程度上可以解决梯度消失问题,但又容易引起梯度爆炸问题。

        当序列很长时,梯度消失问题尤为明显,因此RNN一般用不了,取而代之的是LSTM模型。

注:循环神经网络和recursive neural network(递归神经网络)的区别如下:

        循环神经网络:时间维度上的展开,处理的是序列结构的信息,有环图

        递归神经网络:空间结构上的展开,处理的是树状结构的信息,无环图

二、LSTM

        长短期记忆网络(Long Short-Term Memory,LSTM),通过引入“门”机制,使得长距离依赖建模得以形成,并在一定程度上缓解RNN模型的梯度消失问题。

        LSTM模型的核心是Cell Memory,即记忆细胞C_{t}

         1.LSTM模型结构图

       模型参数量几乎是RNN的4倍。增加了三个门+一个候选记忆细胞的参数(3*3+3*1=12)。

       2.LSTM模型前向传播算法

        记:

                x_{t}:n*1

                h_{t}:m*1

                W: L*m

                b: L*1

                \hat{y}_{t}:L*1

                f_{t},i_{t},o_{t},\tilde{C}_{t},C_{t}:m*1

                W_{f},W_{i},W_{o},W_{g}:m*n

                U_{f},U_{i},U_{o},U_{g}:m*m

                b_{f},b_{i},b_{o},b_{g}:m*1

       3.LSTM模型的反向传播算法

        

         h_{t}作为t时刻输出会影响t时刻误差,同样作为t+1时刻的输入会影响t+1时刻的误差。所以h_{t}

​的变化影响的是t和t+1时刻的损失函数的变化。

        LSTM依然不能完全解决梯度消失这个问题,有文献表示序列长度一般到了三百多仍然会出现梯度消失现象。如果想彻底规避这个问题,还是transformer好用。

三、GRU

        1.简介

        门循环控制单元(Gated Recurrent Units,GRU),是对LSTM模型的简化版模型,但同时却保持者与LSTM模型相近的效果。

        相比LSTM的不同:

        1)将三门:输入门、遗忘门、输出门变两门:更新门 (Update Gate) z_t 和 重置门 (Reset Gate) r_t

        2)将 (候选) 细胞状态与隐藏状态 (输出) 合并,即只有 当前时刻候选隐藏状态 \tilde{h_t} 和 当前时刻隐藏状态 h_t

       GRU 结构图:

        2.GRU 的前向传播算法

        3.GRU 的反向传播算法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值