1、LSTM 出现解决的问题
在最近的几年,RNN在很多问题上都取得了成功:比如语音识别,语音模型,翻译,图片注释等等,但是RNN存在着梯度消息/爆炸以及对长期信息不敏感的问题,上文中也说到中间维持的隐藏层h即为试图包含整个句子的所有信息的一个状态值,当信息量过大时,普通的RNN效果就不太好了,所以LSTM就被提出来了。现在很多问题的成功都必须归功于LSTM,它拥有更好的记忆能力,在许多的任务中表现都比普通的RNN更好,所以接下来我们来探索一下这个神奇的网络。
2、LSTM 介绍
2-1、结构对比
所有的RNN都有不断重复网络本身的链式形式。在普通的RNN中,这个重复复制的模块只有一个非常简单的结果。例如一个tanh层:
普通的RNN
LSTM也有这样的链式结构,但是这个重复的模块和上面RNN重复的模块结构不同:LSTM并不是只是增加一个简单的神经网络层,而是四个,他们以一种特殊的形式进行交互:
[图片上传失败...(image-3e28ec-1588774477693)]
首先我们先了解一下LSTM图中的符号:
LSTM 计算符号
在LSTM 计算符号图中,每条线表示一个向量,从一个输出节点到其他节点的输入节点。粉红色的圆圈表示逐点式操作,就像向量加法。黄色的盒子是学习好的神经网络层。线条合代表联结,线条分叉则表示内容被复制到不同的地方。
2-2、LSTM背后的核心思想
LSTM的核心之处就是它的cell state(神经元状态),在下图中就是那条贯穿整个结果的水平线。这个cell state就像是一个传送带,他只有很小的线性作用,但却贯穿了整个链式结果。信息很容易就在这个传送带上流动但是状态却不会改变。cell state上的状态相当于长期记忆,而下面的ht则代表短期记忆。
LSTM_CtLSTM有能力删除或者增加cell state中的信息,这一个机制是由被称为门限的结构精心设计的。
门限是一种让信息选择性通过的方式,它们是由sigmoid神经网络层和逐点相乘器做成的。
门限sigmoid层输出0和1之间的数字来描述一个神经元有多少信息应该被通过。输出0表示这些信息全部不能通过,而输出1则表示让所有信息都通过。
一个LSTM有三个这样的门限,去保护和控制神经元的状态。
2-3、三个门限
2-3-1、遗忘门
决定c(t-1)有多少被遗忘。sigmoid函数输出是(0,1)之间一个数(0代表不通过,1代表全通过),与c(t-1)相乘
遗忘门计算过程
2-3-2、输入门
输入门会根据遗忘门的信息, 并增加此时输入x(t)和h(t-1)的信息, 共同更新 c(t). 也就是说, 把前面的适当忘记一部分, 再加上新学的一部分。
输入门计算过程
2-3-3、输出门
输出h(t)由细胞状态c(t), x(t), h(t-1)决定. 把细胞状态c(t)通过 tanh 进行处理(得到一个在 -1 到 1 之间的值),x(t)和h(t-1) 通过sigmoid 门,两者相乘, 得到输出. 简单来说, 就是很久之前学到的, 刚刚学到的, 正在学的综合在一起。
输出门计算过程
网友评论