网站首页 > 技术文章 正文
基础的LSTM介绍
LSTM是一种特殊形式的RNN,由Hochreiter和Schmidhuber于1997年提出,他是专为解决梯度消失和梯度爆炸问题而设计的。在学习长时依赖关系时它有着卓越表现,并成为RNN的事实上的标准。此后,人们相继提出LSTM的若干变种,这些变种都收录在tensorflow中。
LSTM的最大改进是把RNN中的普通神经元替换为其内部拥有少量记忆的LSTM单元。如同普通RNN一样,这些单元也被连接在一起,但他们还拥有有助于记忆许多时间步中的误差的内部状态。
LSTM的窍门在于这种内部状态拥有固定权值为1的自连接,以及一个线性激活函数,因此其局部内部偏导始终为1.在反向传播阶段,这个所谓的常量误差传输子(constant error carousel)能够在许多时间步中携带误差而不会发生梯度消失或者梯度爆炸。
尽管内部状态的目的是随许多时间步传递误差,LSTM架构架构中负责学习的实际上是环绕门(surrounding gates),这些门都拥有一个非线性的激活函数(通常为sigmoid)。在原始的LSTM单元中有两种门:一种负责学习如何对到来的活性值进行缩放,而另一种负责学习如何对输出的活性值进行缩放。因此,这种单元可学习包含或者忽略新的输入,以及何时将它表示的特征传递给其他单元。一个单元的输入会送入使用不同权值的所有门中。也可将RNN视为一些层,因为它可以用作规模更大的网络架构的组成。例如,我们可以先将时间步送入若干卷积和赤化层,然后用一个LSTM层处理这些输出,并在位于随后的时间步LSTM活性值上添加一个softmax层。
tensorflow为这样的LSTM提供了LSTMCell类,它可以直接替换BasicRNNCell类,同时该类还提供了一些额外的开关。尽管该类名称从字面上看只有一个LSTM单元,实际上却表示了一个完整的LSTM层。我们还可以将LSTM层与其他网络进行连接,以形成更大规模的网络。
上图表示的是基本的LSTM单元和一个LSTM层。
LSTM结构的变种
LSTM的一种比较流行的变种是添加一个对内部循环连接进行比例缩放的遗忘门,以允许网络徐汇遗忘。这样,内部循环连接的局部偏导就编程了遗忘门的活性值,从而取为非1的值。当记忆单元上下文非常重要时,也可以把遗忘门关闭。遗忘门的初始值一般设置为1,这样LSTM就可以从一个记忆状态开始工作。如今,几乎所有的实现中,遗忘门都是默认存在的。在tensorflow中,可通过指定LSTM层的forget_bias参数对遗忘门的偏置进行初始化。
另一种扩展是添加窥视孔连接(peephole connection),以使一些门能看到单元的状态。提出该变种的作者声称当任务中设计有精确时间选择和间隔时,使用窥视孔连接时有益的。tensorflow的LSTM层支持窥视孔连接,可通过LSTM层传入use_peepholes=True实现。
基于LSTM的基本思想,Chung等人于2014年提出了门循环单元(Gate Recurrent Unit,GRU)。和LSTM比,GRU架构更简单,而且只需要更少的计算就可以得到与LSTM相近的结果。GRU没有输出门,它将输入和遗忘门整合成一个单独的更新门。更新门决定了内部状态与候选活性值的融合比例。候选活性值是一句由重置门和新的输入确定的部分隐含状态计算得到的。tensorflow的GRU层对应GRUCell类,除了该层中的单元数目,它步含其他任何参数。若想进一步了解GRU,可参考Jozefowicz等发表的ICML015文章。
多层RNN与单层多神经元的取舍
到目前为止,我们研究了带有全连接隐含单元的RNN,这是最一般的架构,因为这种网络能够学会在训练期间将不需要的权值置为0。不过,最常见的做法是将两层或者多层全连接的RNN相互堆叠。这仍可视为一个其连接拥有某种结构的RNN网络。由于信息只在两层之间向上流动,与规模较大的全连接RNN相比,多层RNN拥有的权值数目更少,而且有助于学习到更多的抽象特征。
下次将用一个实例来介绍LSTM的使用以便观察效果,敬请期待。
猜你喜欢
- 2024-11-01 假期学习必备:机器学习知识体系汇总,弄懂面试横着走
- 2024-11-01 循环神经网络的使用RNN和LSTM rnn循环神经网络的原理
- 2024-11-01 #一天一个AI知识点# 什么是LSTM? #lstm有什么用
- 2024-11-01 NLP中应用最广泛的特征抽取模型-LSTM,虽老生常谈,却不乏新意
- 2024-11-01 TensorFlow 1.9更新,侧重对tf.keras文档,GRU和LSTM实现的改进
- 2024-11-01 #一天一个AI知识点# 什么是GRU? #gru1
- 2024-11-01 别再用RNN和LSTM了!注意力模型才是王道
- 2024-11-01 深度学习——动画版RNN、LSTM和GRU计算过程
- 2024-11-01 首次大规模神经机器翻译架构分析结果出炉,LSTM 优于GRU
你 发表评论:
欢迎- 最近发表
-
- 在 Spring Boot 项目中使用 activiti
- 开箱即用-activiti流程引擎(active 流程引擎)
- 在springBoot项目中整合使用activiti
- activiti中的网关是干什么的?(activiti包含网关)
- SpringBoot集成工作流Activiti(完整源码和配套文档)
- Activiti工作流介绍及使用(activiti工作流会签)
- SpringBoot集成工作流Activiti(实际项目演示)
- activiti工作流引擎(activiti工作流引擎怎么用)
- 工作流Activiti初体验及在数据库中生成的表
- Activiti工作流浅析(activiti6.0工作流引擎深度解析)
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)