LSTM(Long Short-term Memory,长短期记忆网络)是一种用于处理序列数据的神经网络模型。它可以被应用于语言模型、机器翻译、图片标注、音乐自动化生成等等,在深度学习与大数据中有着不可或缺的地位。

深度学习(Deep Learning)

为什么我们需要深度学习

  • 随着数据量的爆炸式增长以及计算机性能的提升,传统的神经网络因为其自身的局限性限制了它们进一步提升效率与性能从而处理大数据问题的可能;
  • 传统的机器学习往往无法处理原始格式的数据。比如,当要进行图片分类时,我们并不会将整张图片的所有像素值作为输入,而是先人为地提取出图片的特征,再转化为数字形式,然后用来训练网络。

什么是深度学习

  • 让我们首先了解表示学习(Representation learning):表示学习是一种使机器能自动检测出原始数据特征的学习方法;
  • 深度学习是一种表示学习,它用于许多表示层,这些层以简单但是非线性的模块的形式组合在一起,每一层都会讲表示转化为更高层的抽象传递给下一层。

如何构造深度学习模型

在深度学习中有2种模型最为常见:

  • CNN(Convolutional Neural Network,卷积神经网络):它可以被看做是标准神经网络的进阶版。它包含了卷积层(convolutional layer)、池化层(pooling layer)、全连接成(full-connected layer)。这些结果使得它能够接收图片的完整像素值,而不再需要人工特征提取;
  • RNN(Recurrent Neural Network,循环神经网络):它是与CNN完全不同的模型,专用于展示序列数据的动态行为。

循环神经网络(RNN)

RNN是一种人工神经网络,它通过节点之间的连接构成了一个有向图。

它主要拥有3个特征:

  • 结合内部状态(internal state)来处理输入序列;
  • 展示一个时间序列的时间动态行为;
  • 处理连续性的、相关联的任务。

算法

前向传播算法(Forward propagation)

相比于传统神经网络,RNN首要的区别在于它维护了一个内部状态,也就是说当数据序列中一个新的数据输入时,输出并不仅仅通过输入,还通过前一时刻的内部状态进行计算,并且在计算过程中,这个内部状态会相应地更新。

假设时间序列xx1, x2, x3...构成,当x1输入时,a0将被更新至a1,同时y_hat1将计算出来,然后在x2输入时,a1将被更新至a2,同时y_hat2将计算出来...一次类推。

反向传播法(Backpropagation)

与神经网络类似,RNN也用Backpropagation进行训练更新其权重与偏差,最小化损失函数(loss function),从而让网络输出尽可能拟合真实数据。

通常情况下,RNN框架会实现这一算法,因此作为使用者不需要了解其内部的数学逻辑,只需要对一些关键参数进行设置即可。

类型

RNN可以分为4中类型。

一对一(one-to-one)

这种RNN等价于传统神经网络,无论是输入还是输出都只有一个数据。

多对一(many-to-one)

这种RNN会接收一段数据序列,而仅仅产生最后一个结果。例如,我们想要判断一句话的情感,那么网络会将这句话的词作为序列依次输入,最终产生一个数值对应相应的情感。

一对多(one-to-many)

与多对一相反,这种RNN只接受一个输入,但会产生一系列连续输出。例如,在自动化生成音乐中,我们输入一个体裁所对应的数值,那么RNN会输入这个体裁的整首歌的音符。

多对多(many-to-many)

这是最为常见的类型,它们会接收一段数据序列,同时也会输出一段数据序列。此外,输入数据序列的数据个数与输出数据序列的数据个数可以相等,也可以不相等。

梯度消失

与其它使用Backpropagation算法的神经网络一样,RNN也拥有着梯度消失的问题,也就是说,当数据序列足够长时,靠后的时间步长的错误会很难影响到先前时间步长的计算。这也意味着RNN很难将距离较远的上下文信息关联起来,这个问题也被称为长期依赖问题(Long-time dependencies/Long-term dependencies)

例如,我们有两句话

The cat, which already had fish and milk, is full.

The cats, which already had fish and mile, are full.

在这种情况下,RNN可能无法判断其系动词应该是单数还是负数,因为系动词的位置距离主语相对较远。

因此,LSTM(Long Short-term Memory,长短期记忆网络)被设计出来解决这一问题。


长短期记忆网络(LSTM)

LSTM是RNN的一种变体,它拥有着解决长期依赖问题的能力。

与RNN相比,LSTM用cell取代了内部存储,它将数据维护在这个cell中,被称为cell state。这个cell state贯穿整个LSTM架构,仅仅只有少量的线性交互,这就使得信息可以在传递的过程中保持不变。

此外,相比于RNN仅有1个网络层,LSTM拥有着4个,它们以特别的方式进行交互。一个标准的LSTM单元由以下4个部分构成。

架构

Forget Gate

首先,在新数据传入LSTM时,我们要决定哪些旧数据需要从cell state中扔掉。这个就是由forget gate决定的,它是一个sigmoid函数层。

Input Gate

第二步是决定哪些新的信息需要被存储进cell state,分为两个步骤。首先,一个sigmoid函数层,即inpu gate会决定哪些值需要被更新;然后,一个tanh函数层会创建一个向量,作为加入到cell state的候选值。

Cell

现在我们可以更新cell state了,这同样分为两步。首先,我们从cell state移除掉我们在forget gate决定的信息;然后,我们以决定对每一个状态值更新的比例来加入input gate计算出的候选值。

Output Gate

最后,我们决定将要输出的部分。输出是基于新的cell state,同时进行适当的处理。首先,我们通过一个sigmoid函数层来决定cell state中有哪些部分需要被更新,然后,我们将cell state经过一个tanh函数处理(其目的是使得数值落在(-1,1)区间内),并将其余sigmoid层的输出相乘,从而决定输出的部分。

LSTM的变体

在实际使用在,几乎每一篇涉及到LSTM的paper都会对LSTM进行适当的改进,这里我们简要介绍3种最常见的LSTM变体。

加入“peephole connections”

将forget gate与input gate进行耦合

GRU(Gated Recurrent Unit)

LSTM的应用

现在LSTM已经成为处理拥有长期依赖问题的序列数据问题的首要方法之一:

  • 语言模型(以字母/单词为单位);
  • 机器翻译;
  • 图片标注;
  • 图片自动化生成;
  • 音乐自动化生成;
  • ............

参考文献

  • LeCun, Yann, Yoshua Bengio, and Geoffrey Hinton. “Deep learning.” nature 521.7553 (2015): 436.
  • Hochreiter, Sepp, and Jürgen Schmidhuber. “Long short-term memory.” Neural computation 9.8 (1997): 1735-1780.
  • Understanding LSTM Networks
  • The Unreasonable Effectiveness of Recurrent Neural Networks

英文版博文地址:https://ertong.blog/2018/09/07/deep-into-lstm-from-deep-learning

从深度学习到LSTM相关推荐

  1. 【深度学习】LSTM神经网络解决COVID-19预测问题(二)

    [深度学习]LSTM神经网络解决COVID-19预测问题(二) 文章目录 1 概述 2 模型求解和检验 3 模型代码 4 模型评价与推广 5 参考 1 概述 建立一个普适性较高的模型来有效预测疫情的达 ...

  2. 【深度学习】LSTM神经网络解决COVID-19预测问题(一)

    [深度学习]LSTM神经网络解决COVID-19预测问题 文章目录 1 概述 2 数据分析 3 SIR模型和LSTM网络的对比 4 LSTM神经网络的建立 5 参考 1 概述 我们将SIR传播模型和L ...

  3. 浅谈深度学习:LSTM对股票的收益进行预测(Sequential 序贯模型,Keras实现)

    浅谈深度学习:LSTM对股票的收益进行预测(Sequential 序贯模型,Keras实现) 总包含文章: 一个完整的机器学习模型的流程 浅谈深度学习:了解RNN和构建并预测 浅谈深度学习:基于对LS ...

  4. 深度学习之LSTM案例分析(三)

    #背景 来自GitHub上<tensorflow_cookbook>[https://github.com/nfmcclure/tensorflow_cookbook/tree/maste ...

  5. MATLAB深度学习之LSTM

    MATLAB深度学习之LSTM 深度学习工具箱 net = trainNetwork(sequences,Y,layers,options) clc clear %% 训练深度学习 LSTM 网络,进 ...

  6. 【深度学习】深度学习之LSTM

    LSTM是深度学习领域一个非常受欢迎的模型,它被用以解决各种各样的问题.在交通领域,LSTM被广泛应用于道路.航空.铁路等各个方面的研究,例如基于LSTM建立车辆跟驰模型,利用LSTM进行短期交通流预 ...

  7. keras实现简单lstm_深度学习(LSTM)在交通建模中的应用

    上方点击蓝字关注? 在简单了解了LSTM原理之后,本期我将以航班延误预测为例为大家介绍一下如何利用Python编程来构建LSTM模型. 这里我们要用到一个高级的深度学习链接库--Keras,它以Ten ...

  8. 深度学习算法 | LSTM算法原理简介及Tutorial

    北京 | 深度学习与人工智能研修 12月23-24日 再设经典课程  重温深度学习 阅读全文 > 正文共4880个字 17张图,预计阅读时间:13分钟. 1.背景 LSTM(Long Short ...

  9. TensorFlow (RNN)深度学习 双向LSTM(BiLSTM)+CRF 实现 sequence labeling 序列标注问题 源码下载...

    http://blog.csdn.net/scotfield_msn/article/details/60339415 在TensorFlow (RNN)深度学习下 双向LSTM(BiLSTM)+CR ...

最新文章

  1. Web Api单元测试写法
  2. php批量处理图片大小,word图片怎么批量调整大小
  3. python爬取图片简记
  4. 《Excel与VBA开发》一书上市时间
  5. Spring5的数据访问与集成
  6. 【FTP】发布FTP服务器
  7. 人工智能的炒作_人工智能与网络安全结合从炒作走向现实
  8. matlab x轴特殊符号,matlab中的特殊符号
  9. mysql 提高update性能_如何调整Mysql中insert、update、delete的顺序来提高效率_提高MySQL效率与性能的技巧...
  10. RabbitMQ安装+配置远程访问+集群(windows)
  11. matlab里qmul,哈工大四系导航原理 大作业 INS部分
  12. 康师傅-好吃真的看得见么
  13. ESIM模拟器生成事件使用流程
  14. 盘点百度搜索算法大全(2022最新版)
  15. 突破硬件瓶颈(二):存储架构和协议瓶颈
  16. 你可能被openURL给坑了
  17. 博时金牛杯(三强)公开大赛
  18. 数字推盘游戏java_最强大脑数字推盘游戏-最强大脑数字推盘游戏官方版 v1.0预约_手机乐园...
  19. matlab中ss函数_matlab ss函数 tf函数
  20. oracle时间判断

热门文章

  1. python椭圆形骨料_一种基于python再生混凝土三维随机球形骨料模型的构建方法与流程...
  2. (42)2021-03-01(物体运动、swiper软件、自执行函数)
  3. matlab石碑提取,罗塞塔石碑-高尔夫代码:Tic Tac T
  4. 笔记本建立WIFI热点的bat命令
  5. Qt QImage类详解(QImage类型转换、QImage类函数及QImage像素操作)
  6. vue-router 采坑记录
  7. linux 安装apache apu,Apache编译安装
  8. Druid Monitor监控
  9. Oracle怎么查hex值,oracle 进制转换 HEX/DECIMAL/OCTAL/BINARY
  10. 源码解析:Spring源码解析笔记(五)接口设计总览