循环神经(LSTM)网络学习总结
摘要:
1.算法概述
2.算法要点与推导
3.算法特性及优缺点
4.注意事项
5.实现和具体例子
6.适用场合
内容:
1.算法概述
长短期记忆网络(Long Short Term Memory networks) 通常叫做 “LSTM”,由Hochreiter & Schmidhuber (1997)提出,一个LSTM Cell图示如下:
现在,我们先来定义一下用到的符号:
在网络结构图中,每条线都传递着一个向量。其中上面一条直线表示LSTM的状态向量的传递;下面一条直线表示由LSTM的上一层输出和这一层输入组成的合并向量的传递;
粉红色的圆圈表示逐点操作,这里涉及到1.两个输入向量各个元素相加;2.两个输入向量各个元素相乘,即矩阵的哈达玛积(hadamard product)。
黄色的矩形框表示的是一个神经网络层(就是很多个神经节点);
合并的线表示把两条线上所携带的向量进行合并;
分开的线表示将线上传递的向量复制一份,传给两个地方。
一个LSTM Cell是由3个门限结构和1个状态向量传输线组成的,门限分别是遗忘门,传入门,输出门;
其中状态向量传输线负责长程记忆,因为它只做了一些简单的线性操作;3个门限负责短期记忆的选择,因为门限设置可以对输入向量做删除或者添加操作;
1.1遗忘门:
遗忘门是通过一个sigmoid 神经层来实现的。 0 表示“不让任何信息通过”, 1 表示“让所有信息通过”。它的作用是要决定让哪些信息继续通过这个 cell。
1.2传入门:
传入门实现需要两个步骤:首先,一个sigmoid 层决定哪些信息需要更新;一个 tanh 层生成一个备选的用来更新的内容;
再下一步,我们把这两部分联合(向量点乘)起来,对 cell 的状态进行一个更新。它的作用是决定让多少新的信息加入到 cell 状态中来。
1.3输出门
输出门实现需要两个步骤:首先通过一个sigmoid层来决定哪部分信息会被输出;
接着,我们把状态向量通过一个 tanh 层,然后把 tanh 层的输出和 sigmoid 层计算出来的权重相乘,这样就得到了最后输出的结果。
输出门的作用是决定输出什么值。
1.4 LSTM cell状态更新:
首先我们把旧的状态和遗忘门的输出相乘, 把一些不想保留的信息忘掉;然后加上输入门的输出,这部分信息就是我们要添加的新内容。
2.算法要点与推导
符号说明:这里的“*”代表矩阵的哈达玛积(hadamard product)
2.1LSTM前向传播公式:
其中设计到参数Wf,Wi,Wc,Wo,bf,bi,bc,bo
2.2LSTM后向传播公式:
(译)理解 LSTM 网络 (Understanding LSTM Networks by colah)
3.算法特性及优缺点
优点:可以拟合序列数据,通过遗忘门和输出门忘记部分信息来解决梯度消失的问题。
缺点:
4.注意事项
5.实现和具体例子
《TensorFlow实战》实现BiLSTM处理Mnist数据
tensorflow-char-rnn_model处理莎士比亚诗集
6.适用场合
最新文章
- Spring源代码解析
- mysql 去重,跨表更新,跨表删除
- HTML+css实现图片全屏
- VSS
- C++程序员笔试复习概要(一)
- Qt HTTP请求同步调用
- 《Javascript高级程序设计》读书笔记之闭包
- 实体框架(Entity Framework)
- Zabbix实战-简易教程--排错(持续收集中)
- Visual Studio 和 c# 正则表达式
- pytorch识别CIFAR10:训练ResNet-34(自定义transform,动态调整学习率,准确率提升到94.33%)
- SpringBoot webmvc项目导出war包并在外部tomcat运行产生的诸多问题以及解决方案
- 【转】Powershell与jenkins集成部署的运用(powershell运用)
- java-15习题
- Django的model form组件
- Effective Java (ENUM篇)
- nodejs windows安装
- unity3d Player Settings 中的Stripping Level(剥离等级)对应每个等级具体剥离了哪些库
- 【shell】分别提取文件名中的基本名与扩展名
- MFC框架程序解析
热门文章
- python3学习笔记4---引用http://python3-cookbook.readthedocs.io/zh_CN/latest/
- ASP.NET Core Api网关Ocelot的中文文档
- 使用Swashbuckle构建RESTful风格文档
- for循环之后的return
- add two nums
- C# 使用SmtpClient发送Email
- STL-Vector源码剖析
- 用Laravel Sms实现 laravel短信验证码的发送
- 洛谷 P1613 解题报告
- 基于.net的分布式系统限流组件