https://www.toutiao.com/a6711704602531594764/

卷积神经网络使用固定大小的矩阵作为输入(比如一张图片),然后输出一个固定大小的向量(比如不同分类的概率),适合于图像分类,目标检测,图像分割等。但是除了图像外,还有非常多的信息是非固定长度或者大小的,比如视频,语音,此时更加适合用来处理这些时序信号的网络就是一些时间序列模型。

常见的时间序列模型包括RNN,LSTM等,今天简单说一说。

作者 | 言有三

编辑 | 言有三

RNN

我们通常所说的RNN实际上有两种,一种是Recurrent Neural Networks,即循环神经网网络,一种是Recursive Neural Networks,即递归神经网络

循环神经网络是首先被提出的,它是一种时间上进行线性递归的神经网络,也就是我们通常所说的RNN。

递归神经网络(recursive neural network)被视为循环神经网络(recurrent neural network)的推广,这是一种在结构上进行递归的神经网络,常用于自然语言处理中的序列学习,它的输入数据本质不一定是时序的,但结构却往往更加复杂,我们这里只说循环神经网络。

一个RNN的结构如下:

左侧就是模型的基本结构,右侧就是它在时间上进行展开的示意图。xt是时刻t的输入,相应的ht,ot分别是对应时刻t的隐藏层和输出层。

上面我们可以看出,一个RNN的输入包括了两个:一个是当前时刻输入xt,用于实时更新状态,另一个是上一时刻隐藏层的状态ht-1,用于记忆状态,而不同时刻的网络共用的是同一套参数。

RNN中常用的激活函数是tanh,所以上面的式子写成公式,就是:

w就是要学习的权重,用几句代码表示RNN就是。

class RNN: def step(self, x): self.h = np.tanh(np.dot(self.W_hh, self.h) + np.dot(self.W_xh, x)) #更新隐藏层y = np.dot(self.W_hy, self.h) #得到输出return y

普通卷积神经网络的优化使用的是反向传播,那么RNN使用的是什么呢?最常见的还是反向传播,不过是带时序的版本,即BPFT(backpropagation through time),它与BP的原理是完全一样的,只不过计算过程与时间有关。

与普通的反向传播算法一样,它重复地使用链式法则,区别在于损失函数不仅依赖于当前时刻的输出层,也依赖于下一时刻。所以参数W在更新梯度时,必须考虑当前时刻的梯度和下一时刻的梯度,传播示意图如下;

具体的公式我们就不编辑了,大家可以找书看,之所以有后续的LSTM等,就是因为RNN有大问题:因为t时刻的导数会传播到t-1,t-2,... ,1时刻,这样就有了连乘的系数。

连乘一直带来了两个问题:梯度爆炸和消失。而且,在前向过程中,开始时刻的输入对后面时刻的影响越来越小,这就是长距离依赖问题。这样一来,就失去了“记忆”的能力,要知道生物的神经元拥有对过去时序状态很强的记忆能力。

LSTM

前面说的RNN有两个问题,长短期记忆(Long short-term memory, LSTM)就是要解决这两个问题,通过引入若干门来解决,相比RNN多了一个状态cell state。

这个cell state承载着之前所有状态的信息,每到新的时刻,就有相应的操作来决定舍弃什么旧的信息以及添加什么新的信息。这个状态与隐藏层状态h不同,在更新过程中,它的更新是缓慢的,而隐藏层状态h的更新是迅速的。

LSTM的网络结构图如下,输入包括ht-1,xt,输出ht,状态为ct-1,ct。

2.1 遗忘门与遗忘阶段

遗忘门决定了要从上一个状态中舍弃什么信息,它输入上一状态的输出ht-1、当前状态输入信息xt到一个Sigmoid函数中,产生一个介于0到1之间的数值,与上一个时刻的状态ct-1相乘之后来确定舍弃(保留)多少信息。0 表示“完全舍弃”,1 表示“完全保留”,这个阶段完成了对上一个节点cell state进行选择性忘记,遗忘门和它的输出公式如下:

2.2 输入门与选择记忆阶段

选择记忆阶段,也就是对输入有选择性地进行“记忆”,重要的记录下来,不重要的少记一些,它决定了要往当前状态中保存什么新的信息。它输入上一状态的输出ht-1、当前输入信息xt到一个Sigmoid函数中,产生一个介于0到1之间的数值it来确定需要保留多少的新信息。

“候选新信息”则通过输入上一状态的输出、当前状态输入信息和一个tanh激活函数生成。有了遗忘门和输入门之后,就得到了完整的下一时刻的状态Ct,它将用于产生下一状态的隐藏层ht,也就是当前单元的输出。

2.3 输出门与输出阶段

输出门决定了要从cell state中输出什么信息。与之前类似,会先有一个Sigmoid函数产生一个介于0到1之间的数值Ot来确定我们需要输出多少cell state中的信息。cell state的信息在与Ot相乘时首先会经过一个tanh层进行“激活”,得到的就是这个LSTM block的输出信息ht。

以上就是LSTM的基本原理,它通过门控状态来对信息进行选择性的记忆,满足了需要长时间记忆信息和遗忘信息的需求。

当然,随之而来的就是大量的参数,因此后续就有了GRU。另外,RNN和LSTM不止有单向的,还有双向的,这些就留给读者自己去学习了。

总结

时序模型在语音,视频以及自然语言处理等领域有不可替代的作用,虽然相比普通的CNN,模型的复杂度和训练难度都增加了不少,但是在进阶之路上也是需要好好掌握的。

「模型解读」浅析RNN到LSTM相关推荐

  1. 【模型解读】浅析RNN到LSTM

    卷积神经网络使用固定大小的矩阵作为输入(比如一张图片),然后输出一个固定大小的向量(比如不同分类的概率),适合于图像分类,目标检测,图像分割等.但是除了图像外,还有非常多的信息是非固定长度或者大小的, ...

  2. 「模型解读」深度学习网络只能有一个输入吗

    https://www.toutiao.com/a6711317479001424395/ 平常我们所见的深度学习模型,都是输入一个图像或者视频序列,输出分类,分割,目标检测等结果,但是还有一种模型需 ...

  3. 「模型解读」从2D卷积到3D卷积,都有什么不一样

    https://www.toutiao.com/a6711317983035130371/ 接着模型解读系列,在中国科幻作家刘慈欣的科幻小说<三体Ⅲ·死神永生>中,首次提出了降维打击这个概 ...

  4. 「模型解读」从“局部连接”回到“全连接”的神经网络

    https://www.toutiao.com/a6710967708617277960/ 作者 | 言有三(微信号:Longlongtogo) 编辑 | 言有三 与全连接神经网络相比,卷积神经网络在 ...

  5. 「模型解读」“不正经”的卷积神经网络

    https://www.toutiao.com/a6709293693758620172/ 1 卷积中的不变性 图像任务,都需要识别出图像中的主体,用于分类,检测,分割,比如下面的验证码识别. 但是同 ...

  6. 「模型解读」resnet中的残差连接,你确定真的看懂了?

    https://www.toutiao.com/a6708715626782786061/ 1 残差连接 想必做深度学习的都知道skip connect,也就是残差连接,那什么是skip connec ...

  7. 「模型解读」GoogLeNet中的inception结构,你看懂了吗

    https://www.toutiao.com/a6706860769624982020/ 1 Inception V1[1] GoogLeNet首次出现在2014年ILSVRC 比赛中获得冠军.这次 ...

  8. 全局稳定性收敛平衡点为0吗_「模型解读」GoogLeNet中的inception结构,你看懂了吗...

    作者 | 李健(微信号:lijian05170517) 编辑 | 言有三 1 Inception V1[1] GoogLeNet首次出现在2014年ILSVRC 比赛中获得冠军.这次的版本通常称其为I ...

  9. 谷歌「模型汤」靠微调屠了ImageNet的榜!方法竟然只有半页纸

      视学算法报道   编辑:LRS 好困 [新智元导读]ImageNet排行榜又双叒叕被刷新啦!不过这回,新霸主谷歌没有提出新模型,只靠微调「几个」模型就做到了第一,论文通篇都是实验分析,这也引起了网 ...

最新文章

  1. 找子串替换(kmp)poj1572
  2. gcc编译工具的使用
  3. @EnableDiscoveryClient
  4. PAT(乙级)1014
  5. 关于ASP.NET动态加载Master页面
  6. android studio复选按钮样式_Ubuntu与Android开发的邂逅
  7. Mybatis源码:MapperProxy 代理模式
  8. 课堂练习-水帖之王(水王)
  9. mac sierra 10.12部分注册机Special-K+CORE Keygen不能运行的问题
  10. 超2亿学生集体上线 在线教育概念股齐飞
  11. Lstm(循环神经网络)
  12. PXE工作流程(PXE启动报错处理)
  13. 通过对TCPWindowSize的调整对网络流量的性能优化
  14. 金蝶软件界面文字全部变为乱码解决办法
  15. amd linux显卡驱动,AMD Radeon系列显卡催化剂驱动14.4 正式版For Linux AMD Radeon系列显卡催化剂驱动14.4 正式版 显卡驱动 超威半导体...
  16. MySQL中常见的日志文件
  17. 关于金额转化为大写的小程序
  18. ppst开发技术视频——ubuntu crontab 的使用方法
  19. windows系统鼠标选中文本,文本被替换为c
  20. 【行研报告】2021中国素质教育策略创新研究报告—附下载

热门文章

  1. 证明矩阵添加一列(行),则其秩或不变,或增加1
  2. python种r b u f作用
  3. 获得jar包存放路径的方法
  4. E2Cloud体验-快速构建一个开发项目环境
  5. oracle配置oracle Database Configuration Assistant失败是什么原因?
  6. exception in thread main java.lang.noclassdeffounderror wrong name
  7. 走向国际,人民邮电出版社图灵公司携 10 本原创图书亮相首届云上 BIBF
  8. 创业,你准备好了吗?
  9. 计算机视觉>>PCV安装和使用
  10. Fiat–Shamir heuristic 启发式的应用 理解 代码实现