聊聊RNN&LSTM
RNN
用于解决输入数据为,序列到序列(时间序列)数据,不能在传统的前馈神经网络(FNN)很好应用的问题。时间序列数据是指在不同时间点上收集到的数据,这类数据反映了某一事物、现象等随时间的变化状态或程度,即输入内容的上下文关联性强。
整体结构
x、o为向量,分别表示输入层、输出层的值;U、V为权重矩阵,U是输入层到隐藏层的权重矩阵,V是隐藏层到输出层的权重矩阵,W 是上一次的值 S(t-1) 作为这一次的输入的权重矩阵,S(t)是当前的隐藏层矩阵。

RNN层结构与计算公式
RNN层计算公式

RNN层正向传播
MatMul表示矩阵乘积。

这里的h也就是s,都是RNN层函数的输出结果。RNN层的处理函数是tanh,输出结果是h,因此RNN层具有"状态",这也是其具有记忆性的原因。
RNN隐藏层的输出结果,也被称为隐藏状态或是隐藏状态向量,一般用h或s表示。
RNN层反向传播
蓝线表示反向传播的线路图

带来的问题
由于激活函数Tanh其反向传播时,会导致梯度为0或趋于很大的数值,导致梯度消失或爆炸。
LSTM
通过引入输入门、遗忘门和输出门,解决RNN模型下带来的梯度消失的问题。
整体结构
输出门的结果用o来表示,其计算公式如下:

遗忘门的结果用f表示,其计算公式如下:

输入门的结果用i表示,其计算公式如下:

遗忘门从上一时刻的记忆单元中删除了应该忘记的东西,但需要添加一些应当记住的新信息,新的记忆单元g,其计算公式如下:

要注意的是,不同的门输出所代表的意义不一样,因为其最后流向的地方不一样,分别是转换为了新的记忆单元c,新的隐藏状态h。
最终汇总后的整体结构如下

反向传播
蓝线代表反向传播路径,记忆单元的反向传播仅流过“+”和“×”节点。“+”节点将上游传来的梯度原样流出,所以梯度没有变化(退化)。

优化
LSTM的优化可以从三个方面
- LSTM层的多层化
- 在使用RNN创建高精度模型时,加深LSTM层(叠加多个LSTM层)的方法往往很有效。之前我们只用了一个LSTM层,通过叠加多个层,可以提高语言模型的精度。

- 基于Dropout抑制过拟合
- 通过叠加LSTM层,可以期待能够学习到时序数据的复杂依赖关系。换句话说,通过加深层,可以创建表现力更强的模型,但是这样的模型往往会发生过拟合(overfitting)。
- Dropout随机选择一部分神经元,然后忽略它们,停止向前传递信号。这种“随机忽视”是一种制约,可以提高神经网络的泛化能力。

- 权重共享
- 共享权重可以减少需要学习的参数数量,从而促进学习。另外,参数数量减少,还能收获抑制过拟合的好处。
- 绑定(共享)Embedding层和Affine层的权重的技巧在于权重共享。通过在这两个层之间共享权重,可以大大减少学习的参数数量。

聊聊RNN&LSTM的更多相关文章
- RNN/LSTM/GRU/seq2seq公式推导
概括:RNN 适用于处理序列数据用于预测,但却受到短时记忆的制约.LSTM 和 GRU 采用门结构来克服短时记忆的影响.门结构可以调节流经序列链的信息流.LSTM 和 GRU 被广泛地应用到语音识别. ...
- 时间序列(六): 炙手可热的RNN: LSTM
目录 炙手可热的LSTM 引言 RNN的问题 恐怖的指数函数 梯度消失* 解决方案 LSTM 设计初衷 LSTM原理 门限控制* LSTM 的 BPTT 参考文献: 炙手可热的LSTM 引言 上一讲说 ...
- [NL系列] RNN & LSTM 网络结构及应用
http://www.jianshu.com/p/f3bde26febed/ 这篇是 The Unreasonable Effectiveness of Recurrent Neural Networ ...
- RNN LSTM 介绍
[RNN以及LSTM的介绍和公式梳理]http://blog.csdn.net/Dark_Scope/article/details/47056361 [知乎 对比 rnn lstm 简单代码] ...
- rnn,lstm and JuergenSchmidhuber
JuergenSchmidhuber 是瑞士的一位牛人,主要贡献是rnn, lstm. google的deep mind新作,Human-level control through deep rein ...
- RNN,LSTM,GRU基本原理的个人理解
记录一下对RNN,LSTM,GRU基本原理(正向过程以及简单的反向过程)的个人理解 RNN Recurrent Neural Networks,循环神经网络 (注意区别于recursive neura ...
- 用tensorflow搭建RNN(LSTM)进行MNIST 手写数字辨识
用tensorflow搭建RNN(LSTM)进行MNIST 手写数字辨识 循环神经网络RNN相比传统的神经网络在处理序列化数据时更有优势,因为RNN能够将加入上(下)文信息进行考虑.一个简单的RNN如 ...
- 深度学习中的序列模型演变及学习笔记(含RNN/LSTM/GRU/Seq2Seq/Attention机制)
[说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![认真看图][认真看图] [补充说明]深度学习中的序列模型已经广泛应用于自然语言处理(例如机器翻 ...
- tensorflow学习之(十一)RNN+LSTM神经网络的构造
#RNN 循环神经网络 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data tf.se ...
- Word Embedding/RNN/LSTM
Word Embedding Word Embedding是一种词的向量表示,比如,对于这样的"A B A C B F G"的一个序列,也许我们最后能得到:A对应的向量为[0.1 ...
随机推荐
- 【Python】爬虫-Xpath
Xpath 文章参考:https://www.cnblogs.com/mxjhaima/p/13775844.html#案例 安装 pip install lxml 引用 from lxml impo ...
- Hexo博客Next主题建立标签云hexo-tag-cloud及效果展示
hexo-tag-cloud插件介绍 hexo-tag-cloud插件是作者写的一个Hexo博客的标签云插件,旨在直观的展示标签的种类,美观大方且非常优雅. 插件地址: 插件的GitHub地址 插件说 ...
- 【渗透测试】Cobalt Strike制作钓鱼邮件渗透Windows
目标 在kali中使用Cobalt Strike制作钓鱼邮件,对Windows进行渗透 机器环境 kali(服务端):192.168.175.129 win11(攻击机):192.168.175.12 ...
- redis 使用 nologin 用户启动
添加不可登录的redis用户 sudo useradd -M -s /sbin/nologin redis 为redis新建目录,并设置属性 mkdir -p /data/redis &&am ...
- quarkus依赖注入之一:创建bean
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于依赖注入 对一名java程序员来说,依赖注入应该是 ...
- VIM编辑器和Shell命令脚本
注意:在Linux中一切皆文件,而配置一个服务就是在修改其配置文件的参数. VIM编辑器有三种模式: 命令模式:控制光标移动,可对文本进行复制.粘贴.删除和查找等工作 在该模式下不能对文件直接编辑,可 ...
- 掌握Spring条件装配的秘密武器
本文分享自华为云社区<Spring高手之路9--掌握Spring条件装配的秘密武器>,作者:砖业洋__. 在Spring框架中,条件装配是一个强大的功能,可以帮助我们更好地管理和控制Bea ...
- 2023-08-04:村里面一共有 n 栋房子 我们希望通过建造水井和铺设管道来为所有房子供水。 对于每个房子 i,我们有两种可选的供水方案: 一种是直接在房子内建造水井 成本为 wells[i -
2023-08-04:村里面一共有 n 栋房子 我们希望通过建造水井和铺设管道来为所有房子供水. 对于每个房子 i,我们有两种可选的供水方案: 一种是直接在房子内建造水井 成本为 wells[i - ...
- 原来ES7~12分别增加了这些属性呀
ES6也称为ES2015,于2015年发布,此后每年都有新增一些属性,分别命名为ES7~12,发布的年份分别对应2016年到2021年 ES7 includes方法 数组中新增了includes方法, ...
- auto-GPT部署
Auto-GPT 是一个实验性开源应用程序,其作者在3月31日将其发布在Github上.它以GPT-4 作为驱动,可以自主做出决定以实现目标,无需用户干预.AutoGPT的地址:https://git ...