首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【模型解读】浅析RNN到LSTM

【模型解读】浅析RNN到LSTM

作者头像
用户1508658
发布2019-07-26 16:11:42
5760
发布2019-07-26 16:11:42
举报
文章被收录于专栏:有三AI有三AI

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 有三AI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档