专栏首页有三AI【模型解读】浅析RNN到LSTM

【模型解读】浅析RNN到LSTM

01RNN

我们通常所说的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时刻,这样就有了连乘的系数。

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

02LSTM

前面说的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,模型的复杂度和训练难度都增加了不少,但是在进阶之路上也是需要好好掌握的。

本文分享自微信公众号 - 有三AI(yanyousan_ai),作者:言有三

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-01-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【NLP-ChatBot】能闲聊的端到端生成型聊天机器人背后都有哪些技术?

    我们之前介绍过,按照应用场景的不同,聊天机器人可以分为问答系统,对话系统以及闲聊机器人三类。今天我们就来详细讲一讲其中的生成型闲聊机器人。

    用户1508658
  • 【完结】如何学习AutoML在模型优化中的应用,这12篇文章可以作为一个参考

    自动化机器学习技术是非常重要的基础研究,也是如今深度学习模型优化中的热点方向,我们开辟了一个专栏,专门讲解AutoML在深度学习模型优化中的一些重要思路,本次来...

    用户1508658
  • 【模型解读】说说移动端基准模型MobileNets

    Google开发的MobileNets【1】是用于嵌入式平台计算机视觉应用的基准模型。MobileNets是流线型的架构,它使用depthwise sparab...

    用户1508658
  • 机器学习与网络安全(四)概率学基础

    计算机科学所处理的内容大部分是完全确定且必然的,程序员写程序时是假定CPU将完美执行每条指令,硬件错误是非常罕见并在编程阶段几乎不予考虑。

    牛油果
  • Bengio NIPS 最新论文:用线性分类探测器理解中间层,更好地诊断神经网络模型

    【新智元导读】本文介绍 Bengio 和他的学生 Guillaume Alain 的最新论文,这篇论文也被即将于 12 月举行的著名会议 NIPS 接收。本文中...

    新智元
  • 分布式ID常见解决方案

    在分布式系统中,往往需要对大量的数据如订单、账户进行标识,以一个有意义的有序的序列号来作为全局唯一的ID。

    黄泽杰
  • 标书模板:结直肠癌肿瘤干细胞靶向疗法研究

    近年来,随着人口老龄化和生活方式的改变,结直肠癌发病率明显上升。目前全球范围内,结直肠癌是最常见的三大肿瘤之一。根据世界卫生组织的一项调查研究报告,中国结直肠癌...

    用户6317549
  • 【转】Istio 1.0发布,已生产就绪!

    今天,我们很高兴地宣布 Istio 1.0。这距离最初的 0.1 版本发布已经过了一年多时间了。从 0.1 起,Istio 就在蓬勃发展的社区、贡献者和用户的帮...

    杨振涛
  • 事件与委托的区别就是“+=”和“-="?

    事件的作用与委托变量一样,只是功能上比委托变量有更多的限制。(比如:1.只能通过+=或 -= 来绑定方法(事件处理程序)2.只能在类内部调用(触发)事件。)

    静心物语313
  • 当心!黑客会利用智能手机传感器破解你的PIN码

    导读 近日,新加坡南洋理工大学(NTU Singapore)研究人员表示,智能手机中的设备,例如:加速度计、陀螺仪和近距离传感器存在安全隐患。研究人员可利用手机...

    企鹅号小编

扫码关注云+社区

领取腾讯云代金券