对rnn的一些模型结构可以查看这篇文章: RNN:几张图搞懂RNN模型构建
下面来 着重看一些lstm:
LSTM:是一种改进之后的循环网络,可以解决rnn无法处理长距离依赖的问题。
首先看一下原始rnn: 其实rnn可以看成是一个很深的network。 如下图所示的形式。
但是原始rnn存在梯度消失 或者 梯度爆炸的情况, 梯度消失可以通过累积来体现(激活函数等)、梯度爆炸可以通过累加再体现(累加值太大),那么有什么解决方法呢?
(1)clipped gradient: 将梯度约束到一点的范围内: [min, max],即梯度小于min时取min、当梯度大于max时取max。 (这点有没有想起GAN的....)
(2)优化算法使用:momentum、NAG、RMSProp。
(3)改变rnn的结构: LSTM(主要解决梯度消失的问题)。
LSTM的结构如下图所示:
主要包含三个门:
(1)遗忘门(如下图所示): 它决定了上一时刻的单元状态 c_t-1 有多少保留到当前时刻 c_t。 (有没有发现有点attention的意思,有没有看出点残差的额意思)
(2)输入门(如下图所示): 它决定了当前时刻网络的输入 x_t 有多少保存到单元状态 c_t。
(3)输出门: 控制单元状态 c_t 有多少输出到 LSTM 的当前输出值 h_t。
最终lstm后向传播是为了学习8组参数,如下图:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Java语言程序设计(基础篇 原书第10版)
[美]粱勇(Y.Daniel Liang) / 戴开宇 / 机械工业出版社 / 2015-7 / 85.00元
《Java语言程序设计(基础篇 原书第10版)》是Java语言的经典教材,中文版分为基础篇和进阶篇,主要介绍程序设计基础、面向对象编程、GUI程序设计、数据结构和算法、高级Java程序设计等内容。本书以示例讲解解决问题的技巧,提供大量的程序清单,每章配有大量复习题和编程练习题,帮助读者掌握编程技术,并应用所学技术解决实际应用开发中遇到的问题。您手中的这本是其中的基础篇,主要介绍了基本程序设计、语法......一起来看看 《Java语言程序设计(基础篇 原书第10版)》 这本书的介绍吧!