深度学习算法二:RNN

  1. 循环神经网络(RNN):包括输入层、隐含层、输出层;包含自循环结构,一般处理序列数据
  • 网络结构如下:

其初始化状态a<0>=0,计算其状态及输出,如下:

 其中a为隐层结点的状态,激活函数也可以为ReLu;则t时刻隐藏层和输出结果计算公式为:

为了提高并行计算能力,将参数转化为矩阵,拼接到一起计算;即:

;输出层计算不变。

  • RNN的反向传播:(随时间反向传播BPTT)按照时间t进行反向传播;即将输出端的误差值反向传播,运用梯度下降的方法进行参数更新。

1)计算输出的损失:(交叉熵损失函数或平方误差损失函数)

2)计算第t时刻损失L对参数W的偏导数,即其梯度;

3)计算整个序列的损失函数L对参数W的梯度(对2计算的梯度进行求和)。

4)根据其梯度根据随机梯度下降方法进行反向传播,进行参数更新。

图片来源于:https://blog.csdn.net/qq_39422642/article/details/78676567

  • RNN存在问题:
  1. 长期依赖问题,(由于每一个时刻的输出依赖于比它早的时刻的输入值)指当前系统的状态,可能受很长时间之前系统状态的影响,但是RNN由于序列长度以及模型本身特性会出现长期记忆失效。((1)渗透单元及其它多时间尺度的策略(2)长短期记忆和其它门控RNN(3)优化长期依赖(截断梯度、引导信息流的正则化))
  2. 梯度消失问题,在误差反向传播的过程中,误差经过每一层传递都会不断衰减,当网络层数很深时,神经元上的梯度也会不断衰减,导致前面的隐含层神经元的学习速度慢于后面隐含层上的神经元。(1.用ReLU、Leaky ReLU、PReLU、RReLU、Maxout等替代sigmoid函数。2.用Batch Normalization。3.LSTM的结构设计也可以改善RNN中的梯度消失问题。)
  3. 梯度爆炸问题,网络的权重设置得过大,梯度以指数级增大,神经网络的层数越深,梯度越大,产生梯度爆炸问题。(采取梯度截断权重正则化的方法。)
  • 常见的RNN的网络变种:LSTM、GRU;
  1. LSTM(Long-Short-Term Memory):有效的解决信息的长期依赖,避免梯度消失或爆炸问题;其隐藏层结构如下:

LSTM可以有效地解决长期依赖问题,避免梯度消失或爆炸问题;其通过门控机制对输入的信息进行有效的传递。具体公式如下:ht-1为上一细胞的信息;

GRU(Gated Recurrent Unit):

较于LSTM所做改变:

  1. 将输入门、遗忘门、输出门变为两个门:更新门zt与重置门rt;
  2. 将单元状态与输出合并为一个状态:ht;

隐藏层结构如下图:

GRU是在LSTM上进行的一种优化;其计算公式如下:.代表点乘,*代表叉乘

最终输出层对隐藏层信息进行非线性处理:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值