摘要:

  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后向传播公式:

    

    

         RNN推导

    LSTM推导

    (译)理解 LSTM 网络 (Understanding LSTM Networks by colah)

  3.算法特性及优缺点

    优点:可以拟合序列数据,通过遗忘门和输出门忘记部分信息来解决梯度消失的问题。

    缺点:

  4.注意事项

  5.实现和具体例子

    《TensorFlow实战》实现LSTM处理PTB数据

    《TensorFlow实战》实现BiLSTM处理Mnist数据

    tensorflow-char-rnn_model处理莎士比亚诗集

  6.适用场合

  

转载于:https://www.cnblogs.com/arachis/p/RNN.html

循环神经(LSTM)网络学习总结相关推荐

  1. 1.3 循环神经网络模型-深度学习第五课《序列模型》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.2 数学符号 回到目录 1.4 通过时间的方向传播 循环神经网络模型 (Recurrent Neural Network Model) 上节视频中,你了解了我们用来定义序 ...

  2. 教你用深度学习LSTM网络预测流行音乐趋势(附代码)

    来源:大数据挖掘DT数据分析 本文长度为1500字,建议阅读5分钟 本文为你介绍LSTM网络原理及其在流行音乐趋势预测赛题中的应用. 后台回复关键词"音乐",下载完整代码及数据集 ...

  3. [深度学习]理解RNN, GRU, LSTM 网络

    Recurrent Neural Networks(RNN) 人类并不是每时每刻都从一片空白的大脑开始他们的思考.在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义 ...

  4. 吴恩达深度学习笔记(109)-循环神经网络模型(RNN介绍)

    https://www.toutiao.com/a6652926357133066755/ 2019-02-06 20:15:53 循环神经网络模型(Recurrent Neural Network ...

  5. 【Pytorch神经网络理论篇】 18 循环神经网络结构:LSTM结构+双向RNN结构

    1 深层循环神经网络的构建 在深层网络结构中,会将简单的RNN模型从两个角度进行改造,具体如下. 使用更复杂的结构作为RNN模型的基本单元,使其在单层网络上提取更好的记忆特征. 将多个基本单元结合起来 ...

  6. 长短期记忆人工神经网络(LSTM)网络学习资料

    一.人工神经网络模型的分类: 1.27种神经网络的图解 地址:https://baijiahao.baidu.com/s?id=1590362274035183205&wfr=spider&a ...

  7. 【深度学习(deep learning)】花书第10章 序列建模:循环和递归网络 读书笔记

    [深度学习(deep learning)]花书第10章 序列建模:循环和递归网络 读书笔记 第10章 序列建模:循环和递归网络 [深度学习(deep learning)]花书第10章 序列建模:循环和 ...

  8. 深度学习中的循环神经网络LSTM详解

    (一).什么是循环神经网络LSTM? LSTM指的是长短期记忆网络(Long Short Term Memory),它是循环神经网络中最知名和成功的扩展.由于循环神经网络有梯度消失和梯度爆炸的问题,学 ...

  9. Python吴恩达深度学习作业20 -- 用LSTM网络创作一首爵士小歌

    用LSTM网络创作一首爵士小歌 在本次作业中,你将使用LSTM实现乐曲生成模型.你可以在作业结束时试听自己创作的音乐. 你将学习: 将LSTM应用于音乐生成. 通过深度学习生成自己的爵士乐曲. fro ...

  10. GAN学习记录(五)——循环生成对抗网络CycleGan

    循环生成对抗网络CycleGan实现风格迁移 dataset https://people.eecs.berkeley.edu/~taesung_park/CycleGAN/datasets/vang ...

最新文章

  1. SAP MM 对于MRKO事务代码的几点优化建议
  2. 4-曲线拐点模型分析
  3. python如何判断两个数组完全相等?
  4. AtCoder AGC033C Removing Coins (博弈论)
  5. linux下node-sass安装失败
  6. 【CodeForces - 501C】Misha and Forest (思维构造,树,数学异或)
  7. ubuntu 10.04 虚拟机建立tftp服务器
  8. 如何用NANT+FxCop 并生成文档规范检测结果?
  9. 【Shell】数值比较参数
  10. 浅谈jQuery Mobile设计思想
  11. jmeter压力测试
  12. 2021-11-16-小甲鱼python教学视频总结
  13. Zemax学习笔记(5)- 设计单透镜实例_2,分析
  14. viper12a电源电路图_VIPER22A VIPER12A工作原理引脚功能应用电路图纸与分析
  15. 线性插值_c语言实现
  16. bubu PC端的应用商店2 -目录结构和原理
  17. python批量图片合并
  18. 又开始的python-day10-20200821-文件操作相关内置函数-拷贝-读取-写入
  19. 电商教程,制作淘宝产品常见的风效果
  20. 怎么查看思科模拟器Cisco Packet Tracer的版本

热门文章

  1. mysql职业要求_运维职业要求
  2. 华为8817升级Android5,华为c8817E官方升级包大集合
  3. pytorch损失函数
  4. 卷积神经网络 第三周作业:Residual+Networks+-+v1
  5. 阿里云服务器Centos7 安装 pycuda报错:Could not build wheels for pycuda which use PEP 517 and cannot be install
  6. web自动化测试第6步:模拟鼠标操作(ActionChains)
  7. java继承和接口连接怎么用_继承与接口的使用
  8. python的装饰器、迭代器、yield_Python学习日记(5)简单了解迭代器、生成器、装饰器、上下文管理器...
  9. C++ std::set find 错误 operator中不能有<=
  10. 程序崩溃调试 Linux开启产生coredump文件