文章目录

  • 引入
    • 发展史
    • LSTMs 是什么
      • 短期记忆
      • 长期记忆
    • RNN 的局限
  • LSTM 网络详解
    • 符号约定
    • LSTM 网络分解
    • 其他 LSTM 网络
    • 整体模型

引入

所谓序列学习,就是输出不单单取决于当前的输入,而且与历史输入有关。序列学习的模型有:隐马尔科夫模型(HMM)、结构化感知器、以及条件随机场。当然以上这些模型都是机器学习的方法,若应用神经网络,即深度学习(实际上属于机器学习之一)的方法,于是则诞生了 RNN (Recurrent Nerual Network)。

发展史

RNN 的发展与序列学习形影不离。序列学习其实是分类问题的一种,在 NLP 领域也叫结构化预测问题。序列学习也属于强化学习的范畴。然而这些定义总没有严格的标准。因此,这里给出笔者个人的定义:所谓序列学习,输入序列变量,该序列蕴含着某种顺序,通过这个序列变量输出标签。

如图所示,序列学习包括如下几种状态。一是 one2one,这种类似于分类问题了,是序列个数等于 1 的特殊情况。第二种也是输入一个序列个数为 1 的“序列”,输出其当前、未来对应的标签状态。第三种,通过序列,输出最后的标签。以此类推。

传统的实现序列学习的方法有 HMM,之后又引申出了条件随机产。之后,神经网络的崛起又诞生了结构感知器。再然后,就演变成了 RNN 网络了。

实际上 RNN 并不是近代才出现的。实际上,但神经网络出现之初,就有很多 RNN 的影子。实际上,现在的很多中文文献中,常称 RNN 网络为序列神经网络。但在早期的时候,大约是 1980 年左右,其被称为反馈神经网络。比如 Elman 神经网络、NAXR 神经网络就是其一。即使到现在,还有人在使用这两种反馈神经网络。比如你下载一个2010版本的 Matlab,其 cntool 工具箱就有其实现。

为什么称反馈神经网络为 RNN 的前身呢?以 Elman 神经网络为例,其包括输入层、隐藏层、承接层和输出层,像极了今天的 RNN。其中其承接层用于延迟和存储隐藏层的输出,并自联到隐藏层的输入中。这种自联方式对历史状态的数据都具有敏感性,内部反馈网络的加入增加了网络本身的动态处理能力,从而达到动态建模的效果。

之后,随着神经网络的第一次没落,反馈神经网络也因此销声匿迹。随后,大数据时代的到来,使得反馈神经网络再一次粉墨登场,以 RNN 的新形态屹立于深度学习之林。当然,反馈神经网络与 RNN 是有区别的。比如,反馈神经网络要求定义反馈的步长。换句话说,其当前输出的,与当前输入,和有限步长内的输入有关。而 RNN 则不然,其不需要定义反馈步长。也因此,RNN 的输出,与之前的所有输入均有关。而这种有关的程度,取决与神经节点的权重。更切确的说,取决于以往的输入数据。

卷积神经网络经常用在计算机视觉领域,其接受一个矩阵(或者说图像),输出一个概率序列。内部经过一系列的卷积,因此其神经元的参数非常之多。即便如此,大数据的福音使得 CNN 不再是土豪们的玩具,并且开始了其走出象牙塔,走向工业应用。

然而,对于 RNN,人们总是有很多腹诽。很多智者们不加思考地指出,用训练一个 RNN 是非常苦难、耗时的。其实不然,在很多实践的验证下,这种无稽之谈不攻自破。于 2015 年左右, RNN 被许多专家们看上,并迅速发展起来,期间诞生了许多精通与 RNN 原理的高手,以及许多新型的 RNN 网络。

目前 RNN 通常用于物体捕捉图像识别自然语言处理中。题外话,在 NLP 领域中,比如汉语的分词、词性标注和语法分析中,都是用序列学习的方法实现的。通常将其视为序列标注问题。然而,它们并非使用 RNN 实现,而是条件随机场。那么 RNN 用在哪里呢?它用在逼格更高的地方,比如根据上下文,预测接下来的单词。或根据上下文,直接自动生成接下来的内容。很多高手们使用了 RNN,甚至可以根据当前的代码,自动生成接下来的代码,这不得不说是程序猿的福音与噩梦。

LSTMs 是什么

就如 Fast-RCNN 和 YOLO 之于 CNN, LSTMs 网络与 RNN 两者在概念上属于从属关系。LSTMs的全称为 Long Short Term Memory,即长期-短期记忆。

短期记忆

比如句子鸟在天上飞,如果要根据序列鸟在天上,预测飞,实际上是很容易的。只要根据或者天上这个单词就可以预测出了。也许有点误差,但八九不离十了。如下图所示:

长期记忆

比如句子我在中国长大,…,我汉语很六,中间隔了很多条句子。但是,汉语很六只能通过在中国长大第一条句子中,才有可能推断出来。也就是说,当前的输出结果,与较早之前的记忆有关,如图所示;

RNN 的局限

然而,传统的 RNN 网络,却不能很好的解决长期记忆的问题。其原因较为复杂,大家可以参阅文献link。当然这里我也会简单的谈一下。

首先,RNN 的学习算法与 BP 神经网络一样。也是基于代价函数梯度反向传播算法。但与 BP 不同的是,其在计算梯度的时候,用了时间信息。具体做法是,在求一个节点的梯度时,存储该时刻节点的激活函数的形式。然后,根据以往的激活函数和现在的激活函数,来求取当前的梯度。但不幸的地方就在于,存储能力是有限的,因而限制了其处理长期记忆的能力。另外,即便能够完全存储。在很多实验中也表明:虽然 RNN 在处理长期记忆问题上,比反馈神经网络要好得多。但是,其训练始终无法有效收敛。换句话说,其收敛是局部最优的。往往这种局部最优,导致其处理短期记忆很强,长期记忆很弱。

然而,LSTM 神经网络并没有上述缺点。也就是说,它能够处理好 both 长期记忆 and 短期记忆问题~

LSTM 网络详解

如下图所示,一个 RNN 网络可以表示如下

将循环展开,可得:

下面,我们将讨论 LSTM 网络的详细介绍,包括其定义和扩展。

符号约定


方框表示神经网络层(自设),红色圆圈表示向量运算,里面是个乘号,就表示点积。黑色箭头表示向量,两个黑色箭头融合在一起,表示将向量进行拼接


上图中Ct−1C_{t-1}Ct−1​是一条胞状态,就像工厂上的传送带一样,Ct−1C_{t-1}Ct−1​ 经过工人们的处理,最后变成 CtC_tCt​ 。


上图表示阀门,其中 σ\sigmaσ 是 sigmoid 函数。相信大家对 sigmoid 函数都很熟悉,其取值为 [0,1][0,1][0,1],具体长什么样,就不在介绍了。

LSTM 网络分解

一个典型的 LSTM 网络如下:

当输入 xtx_txt​ 和 ht−1h_{t-1}ht−1​ 传送而入时,首先要经过过滤。即用 sigmoid 函数,将两者的点击进行过滤,然后传送到 Ct−1C_{t-1}Ct−1​ 的传送带中。这实际上模拟健忘过程。比如之前的主语为 he 时,若再输入主语 she,则需要将之前的 he 更新掉。

之后,为了模拟 she 替换掉 he 的过程,应该加入如下的函数。此时 ht−1h_{t-1}ht−1​ 和 xtx_txt​ 用一个 tanh 和 sigmoid 过滤 输出 iti_tit​ 和 C~t\widetilde{C}_tCt​。

最后,将上述的结果 ft,it,C~tf_t,i_t,\widetilde{C}_tft​,it​,Ct​ 传送到“传送带”中了,如下:

之后,为了模拟根据历史状态,以及当前的输入输出 hth_tht​ 的过程,还需要以下处理:

其中 ht−1,xth_{t-1},x_tht−1​,xt​ 通过一个 sigmoid 函数过滤,而胞状态 CtC_tCt​ 通过 tanh 函数过滤后,两者的点击加上偏移项输出 hth_tht​。

实际上,通过存储胞状态、ht−1h_{t-1}ht−1​ 就可以存取历史状态了。这个历史状态的长久与否,取决于神经元的参数。当然,如果 A (记住,它是一个层)中包含多个神经元节点,那么其 ht−1h_{t-1}ht−1​ 和胞状态的个数还是不少的。

其他 LSTM 网络

以上的 LSTM 网络是比较典型的,LSTM网络还有如下形式:

上述模型与经典模型的差别在于,其胞状态和以往的胞状态也有关系。也就是说,其长期的联系比较强烈。另一个LSTM 模型如下。


这种模型与经典模型比较相似,不过在 C~t\widetilde{C}_tCt​ 的更新有点差别,详见上面的公式。第三种与第一种类似,也是倾向于长期联系的,如下所示:

整体模型

我们只是讨论了隐藏层而已,换句话说,最终的输出 y 与隐藏层的输出 hth_tht​ 有关。因为隐藏层被 BP 神经网络用了,因此,我们姑且层为 LSTM 层吧。于是整个 RNN 的神经网络应该是这样

Created with Raphaël 2.2.0输入层LSTM 层输出层

其中,LSTM 层的每个输入 xtx_txt​ 为一个向量,输出亦是 hth_tht​ 亦是一个向量。通过存储 Ct,ht−1C_{t},h_{t-1}Ct​,ht−1​,并根据 LSTM 层的参数,来映射历史输入对当前输出的影响。之后,输出层根据 hth_tht​ 输出最终的标签。当然,输出层的传递函数可以自定义,用 sigmoid 或者 RELU 都可以。

序列学习——RNN网络之 LSTM 原理相关推荐

  1. 深度学习原理与框架-RNN网络框架-LSTM框架 1.控制门单元 2.遗忘门单元 3.记忆门单元 4.控制门单元更新 5.输出门单元 6.LSTM网络结构...

    LSTM网络是有LSTM每个单元所串接而成的, 从下面可以看出RNN与LSTM网络的差异, LSTM主要有控制门单元和输出门单元组成 控制门单元又是由遗忘门单元和记忆门单元的加和组成. 1.控制门单元 ...

  2. 【深度学习】网络训练的原理:什么是梯度下降?学习率的作用是什么?

    对于输入 x x x,通过某个网络后给出预测的结果 y y y,但是其正确结果为 y ^ \hat y y^​,预测结果和真实结果之间的差距我们称之为损失 L L L 这里要注意,衡量二者之间的差距的 ...

  3. 深度学习升级打怪之序列模型-(RNN, LSTM)

    序列模型 对于序列学习问题如果我们使用标准的神经网络,则会有一些问题 输入和输出在不同的例子中有不同的长度,即使定义最大长度后补零也效果可能会比较差 对于NLP等领域的问题时,输入的维度过大,导致参数 ...

  4. 深度学习——RNN原理与TensorFlow2下的IMDB简单实践

    在深度学习中,RNN是处理序列数据的有效方法之一,也是深度的一种很好的体现,本文将简单介绍RNN的工作方式,以及针对IMDB数据集的简单实践 RNN简介 RNN(Recurrent Neural Ne ...

  5. 深度学习之循环神经网络(8)长短时记忆网络(LSTM)

    深度学习之循环神经网络(8)长短时记忆网络(LSTM) 0. LSTM原理 1. 遗忘门 2. 输入门 3. 刷新Memory 4. 输出门 5. 小结  循环神经网络除了训练困难,还有一个更严重的问 ...

  6. 递归神经网络RNN网络 LSTM

    转自: https://blog.csdn.net/Jerr__y/article/details/61195257 @author: huangyongye 前言: 根据我本人学习 TensorFl ...

  7. 花书+吴恩达深度学习(十七)序列模型之长短期记忆 LSTM 和门控循环单元 GRU

    目录 0. 前言 1. 长短期记忆 LSTM 2. 门控循环单元 GRU 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十五)序列模型之循环神经网络 ...

  8. 《自然语言处理学习之路》 13 RNN简述,LSTM情感分析

    文章目录 书山有路勤为径,学海无涯苦作舟 凡我不能创造的,我就不能理解 一.RNN神经网络 二.LSTM神经网络 三.使用LSTM进行情感分析 3.1深度学习在自然语言处理中的应用 3.2词向量模型 ...

  9. 一篇文章玩转 RNN 网络 原理

    1. RNN的网络结构(展开) 图 1 RNN网络的基本运算单元 RNN 网络是由一个个的 cell 组成的,每一个 cell 都五脏俱全: 可以看出,沿着时间轴 t 每一个RNN的单元内都有一个输入 ...

最新文章

  1. NR 5G UE和5G网络功能之间的安全流程
  2. 20155229实验三 《Java面向对象程序设计实验三 敏捷开发与XP实践 》实验报告
  3. 短时能量法代码c语言,[蓝桥杯][算法提高]能量项链 (Python代码)
  4. Android中的ListView
  5. oracle listagg方法,Oracle实现字符串拼接和分离功能的方法(LISTAGG函数),oraclelistagg...
  6. 云服务器 自有操作系统,云服务器 自有操作系统
  7. 用纯css来实现一个优惠券
  8. 邮箱不可用 550 User has no permission
  9. java形参改变实参_java方法改变形参后得到实参值是否改变
  10. python中的super使用方法[探索4]
  11. Spark 广播变量 TorrentBroadcast
  12. Mac编译OpenJDK8:configure: error: Xcode 4 is required to build JDK 8, the version found was 10.1config
  13. linux 配置软件安装源
  14. JAVA8 Swing 简单的桌面精灵(踩坑点记录)
  15. 2015 ACOUG 年终总结感恩会圆满落幕
  16. waf防火墙是什么有什么作用?
  17. iOS App 转移 图文详解
  18. ArcGIS简单的三维演示
  19. numpy多维数组获取指定矩形区域
  20. 网络图如何用计算机计算方法,工程网络图时间参数最简单计算方法.doc

热门文章

  1. 【AAAI2021】Dual-Level Collaborative Transformer for Image Captioning
  2. 简谈新人工作之余成长的实施方案
  3. 最轻的5号电池------耐时锂电池
  4. 实验六 医学图像的增强(二)
  5. 全面预算管控 提升企业运营管理竞争力
  6. 内核驱动隐藏【绕过PatchGuard】
  7. 人物介绍的排版【小白进】
  8. 【操作系统】读者写者问题——写者优先、寿司店问题 题目+答案
  9. 自制Arduino Leonardo笔记
  10. Android 商城类应用实战之购物车附源码