RNN,GRU,LSTM
2019-08-29 17:17:15
问题描述:比较RNN,GRU,LSTM。
问题求解:
- 循环神经网络 RNN
传统的RNN是维护了一个隐变量 ht 用来保存序列信息,ht 基于 xt 和 ht-1 来计算 ht 。
ht = g( Wi xt + Ui ht-1 + bi )
yt = g( Wo ht + bo )
- 门控循环神经网络 GRU
门控循环神经网络(Gated Recurrent Unit,GRU)中引入了门控机制。
Update:Γu = g( Wu xt + Uu ht-1 + bu )
ht~ = g( Wc xt + Uc ht-1 + bc ) -Candidate
ht = Γu * ht~ + Γf * ht-1
【注】实际使用中还会加入重置门,可以看成计算了 ht-1 和 xt 之间的相关性
Γr = g( Wr xt + Ur ht-1 + br )
ht~ = g( Wc xt + Γr Uc ht-1 + bc )
- 长短期记忆网络 LSTM
长短期记忆网络(Long Short Term Memory,LSTM)是循环神经网络的最知名和成功的扩展。由于循环神经网络有梯度消失和梯度爆炸的问题,学习能力有限,在实际的任务中往往不达预期。LSTM可以对有价值的信息进行长期记忆,从而减小循环神经网络的学习难度,因此在语音识别,NER,语言建模等问题中有着广泛的应用。
与传统的循环神经网络对比,LSTM仍然是基于xt 和 ht-1 来计算 ht ,只不过对计算的内部流程进行更加精心的设计。
LSTM中引入了cell memory称为 ct ,ht 由 cell memory生成。
LSTM在前向传播的时候不仅传递 ht ,而且还传递 cell memory,cell memory实际形成了一个信息的流通的highway。
LSTM中加入了三个门更新门(也有称为输入门) Γu,遗忘门 Γf,输出门 Γo。这里的门的概念可以理解为相关性,本质是三个权重。
Update:Γu = g( Wu xt + Uu ht-1 + bu )
Forget:Γf = g( Wf xt + Uf ht-1 + bf )
Output:Γo= g( Wo xt + Uo ht-1 + bo )
这三个门都是作用在cell memory上的,那么cell memory怎么计算呢?
ct~ = g( Wc xt + Uc ht-1 + bc )
ct = Γu * ct~ + Γf * ct-1
计算完成 ct 后,就可以根据输出门来求 ht 了。
ht = Γo * ct
RNN,GRU,LSTM的更多相关文章
- NLP教程(5) - 语言模型、RNN、GRU与LSTM
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-det ...
- Recurrent Neural Network系列4--利用Python,Theano实现GRU或LSTM
yi作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORK ...
- 【pytorch】关于Embedding和GRU、LSTM的使用详解
1. Embedding的使用 pytorch中实现了Embedding,下面是关于Embedding的使用. torch.nn包下的Embedding,作为训练的一层,随模型训练得到适合的词向量. ...
- 太深了,梯度传不下去,于是有了highway。 干脆连highway的参数都不要,直接变残差,于是有了ResNet。 强行稳定参数的均值和方差,于是有了BatchNorm。RNN梯度不稳定,于是加几个通路和门控,于是有了LSTM。 LSTM简化一下,有了GRU。
请简述神经网络的发展史sigmoid会饱和,造成梯度消失.于是有了ReLU.ReLU负半轴是死区,造成梯度变0.于是有了LeakyReLU,PReLU.强调梯度和权值分布的稳定性,由此有了ELU,以及 ...
- LSTM梳理,理解,和keras实现 (一)
注:本文主要是在http://colah.github.io/posts/2015-08-Understanding-LSTMs/ 这篇文章的基础上理解写成,姑且也可以称作 The understan ...
- 自己动手实现深度学习框架-7 RNN层--GRU, LSTM
目标 这个阶段会给cute-dl添加循环层,使之能够支持RNN--循环神经网络. 具体目标包括: 添加激活函数sigmoid, tanh. 添加GRU(Gate Recurrent U ...
- 简易机器学习代码(LR,Kmeans,NN,RNN)
Logistic Regression 特别需要注意的是 exp 和 log 的使用. sigmoid 原始表达式为 1 / (1+exp(-z)),但如果直接使用 z=-710,会显示 overfl ...
- 使用LSTM做电影评论负面检测——使用朴素贝叶斯才51%,但是使用LSTM可以达到99%准确度
基本思路: 每个评论取前200个单词.然后生成词汇表,利用词汇index标注评论(对 每条评论的前200个单词编号而已),然后使用LSTM做正负评论检测. 代码解读见[[[评论]]]!embeddin ...
- 三步理解--门控循环单元(GRU),TensorFlow实现
1. 什么是GRU 在循环神经⽹络中的梯度计算⽅法中,我们发现,当时间步数较⼤或者时间步较小时,循环神经⽹络的梯度较容易出现衰减或爆炸.虽然裁剪梯度可以应对梯度爆炸,但⽆法解决梯度衰减的问题.通常由于 ...
随机推荐
- Blue的博客
整合其他ORM框架 使用Spring所提供的ORM整合方案, 可以获得许多好处: 方便基础设施的搭建 Spring中, 对不同的ORM框架, 首先, 始终可以采用相同的方式配置数据源; 其次, Spr ...
- 从未来看 C#
前言 如今 C# 虽然发展到了 8.0 版本,引入了诸多的函数式特性,但其实在 C# 未来的规划当中,还有很多足以大规模影响现有 C# 代码结构和组成的特性,本文中将会对就重要的特性进行介绍,并用代码 ...
- 2020年春招面试必备Spring系列面试题129道(附答案解析)
前言 关于Spring的知识总结了个思维导图分享给大家 1.不同版本的 Spring Framework 有哪些主要功能? 2.什么是 Spring Framework? Spring 是一个 ...
- iOS下的 Fixed BUG
input 光标位置乱窜 固定式浮层内的输入框光标会发生偏移.即 fixed 定位的容器中输入框光标的位置显示不正确,没有正常地显示在输入框中,而是偏移到了输入框外面 可触发条件 页面body出现滚动 ...
- 论nw.js的坑~~~感觉我所有的前端能遇到的坑都踩了一遍
先总结:nw.js 真特么的...难用...文档,我得先百度才能看的稍微明白点文档......!!!!!!我感觉我所有的前端能遇到的坑都踩了一遍,此文针对前后端分离项目,别的先不说 一.不需要在项目里 ...
- Linux基本操作及常用指令
今天复习了下Linux的基本操作及常用指令,上学期大数据云计算课一直也在用linux系统还是比较熟悉的,并在centos6.7虚拟机上部署了前几天做的web项目,了解了Nginx的反向代理与负载均衡, ...
- SpringBoot框架——从SpringBoot看IoC容器初始化流程之方法分析
目录 一.概观Spring Boot 二.Spring Boot应用初始化 2.1 初始化入口 2.2 SpringApplication的run方法 2.3 方法分析 三.容器创建与初始化 3.1 ...
- Fabric 源码学习:如何实现批量管理远程服务器?
前不久,我写了一篇<Fabric教程>,简单来说,它是一个用 Python 开发的轻量级的远程系统管理工具,在远程登录服务器.执行 Shell 命令.批量管理服务器.远程部署等场景中,十分 ...
- 安装部署hyperledger fabric1.0
安装环境 CentOS7 1.安装Docker Docker Hub在国外,安装会较慢,可用国内镜像DaoCloud.可执行以下命令安装Docker. sudo yum install -y yum- ...
- 学习ConcurrentHashMap并发写机制
1. 前言 上篇文章讲了 Unsafe 类中 CAS 的实现,其实是在为这篇文章打基础.不太熟悉的小伙伴请移步Unsafe 中 CAS 的实现.本篇文章主要基于 OpenJDK8 来做源码解析. 2. ...