课程笔记——Recurrent Neural Network

举例

如下图蓝色框为记忆区,当黄色输入=1时,绿色=1+1=2,橙色输出=2+2=4,同时将绿色框结果存储到蓝色记忆区。
在这里插入图片描述
此时蓝色记忆区=2,黄色输入=1时,绿色=1+1+2+2=6,橙色输出=6+6=12,同时将绿色框结果存储到蓝色记忆区。
在这里插入图片描述
以此类推,输入输出序列如下,故我们可知当输入序列顺序改变时,输出值会产生变化。
在这里插入图片描述

1.几个简单分类

  • Elman Network:将某时间点的hidden layer存起来,在下个时间点读入
    在这里插入图片描述
  • Jordan Network:将某时间点的output存起来,在下个时间点读入
    在这里插入图片描述
  • Bidirectional RNN(双向的):同时训练一个正向的、逆向的,然后将某时间点的正逆两个结果输出 yt
    在这里插入图片描述

2.Long Short-term Memory(LSTM)

简单解释:

  • 现有一个Memory Cell
  • Input Gate决定外界输入能否被保存到Memory Cell中,Output Gate决定外界能否从Memory Cell读出,至于Input Gate、Output Gate是打开/关闭是网络自己学习的
  • Forget Gate决定什么时候要把过去记的东西忘掉,也是自己学习的
    在这里插入图片描述

详细解释:

  • 现要被存入Input里面的是 z z z,操控Input Gate的是 z i z_i zi(数值),操控Output Gate的是 z o z_o zo(数值),操控Forget Gate的是 z f z_f zf(数值)
  • 三个门的激活函数通常为sigmoid函数,介于0-1,1:开启状态 即可以输入。例如: f ( z i ) = 0 f(z_i)=0 f(zi)=0时, f ( z i ) g ( z ) = 0 f(z_i)g(z)=0 f(zi)g(z)=0也就没有输入了; f ( z f ) = 1 f(z_f)=1 f(zf)=1时, f ( z f ) c = 1 f(z_f)c=1 f(zf)c=1即原来存储什么还是什么,没有被遗忘(针对遗忘门,打开时代表记得,关闭时代表遗忘)
  • 新的存在Memory Cell里面的值: c ′ = g ( z ) f ( z i ) + c f ( z f ) c'=g(z)f(z_i)+cf(z_f) c=g(z)f(zi)+cf(zf)
  • 输出门 a = h ( c ′ ) f ( z 0 ) a=h(c')f(z_0) a=h(c)f(z0)
    在这里插入图片描述
  • 对比常规的神经网络,将上述框架看作是一个神经元,所以LSTM本质结构就是无数个上述结构的神经元相连。上文提到有四个输入过程,下图为解释:
    在这里插入图片描述

3.关于误差

基于RNN的网络,通常不容易被学习,常常出现如下情况:
在这里插入图片描述
详细分析如下:
loss可能会发生非常剧烈的振荡,更糟糕的状况例如当处在中间交界处时,之前的梯度都很小 所以将学习率调大,但当调整完后梯度突然增大 再加上学习率变大,整个结果就会崩坏。
在这里插入图片描述
为什么会这样:
假设现在有个结构如下的网络,
绿色框中的 w w w有十分大的梯度,那么针对这种情况我们需要将学习率设小
黄色框中的 w w w有小的梯度,那么针对这种情况我们需要将学习率设小
故,当面对变化频繁的梯度,学习率也需要不断调整
在这里插入图片描述

解决方法:LSTM
LSTM可以解决梯度消失问题,即将比较平坦的部分拿掉,但是该方法不会解决梯度爆炸问题。至于为什么会解决梯度消失问题,知乎上排名第一的答案可以参考(问题:LSTM如何来避免梯度弥散和梯度爆炸?)

4.其他应用

输入和输出的长度不一定要相同,例如:

  • 输入:序列,输出:向量。如:语义情感分析
  • 输入:长序列,输出:短序列。如:语音辨识
  • 输入:不确定长度序列,输出:不确定长度序列。如:Machine Translation

(未完)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值