深度学习知识点:LSTM

打印 上一主题 下一主题

主题 1054|帖子 1054|积分 3162

1.应用现状

长短期记忆神经网络(LSTM)是一种特别的循环神经网络(RNN)。原始的RNN在训练中,随着训练时间的加长以及网络层数的增多,很容易出现梯度爆炸大概梯度消失的问题,导致无法处置惩罚较长序列数据,从而无法获取长间隔数据的信息。
LSTM应用的领域包括:文本生成、机器翻译、语音识别、生成图像形貌和视频标志等。


  • 2009年, 应用LSTM搭建的神经网络模型赢得了ICDAR手写识别角逐冠军。
  • 2015年以来,在机械故障诊断和预测领域,相关学者应用LSTM来处置惩罚机械装备的振动信号。
  • 2016年, 谷歌公司应用LSTM来做语音识别和文字翻译,此中Google翻译用的就是一个7-8层的LSTM模型。
  • 2016年, 苹果公司使用LSTM来优化Siri应用。
2.发展历史

1997年,Sepp Hochreiter 和 Jürgen Schmidhuber[1]提出了长短期记忆神经网络(LSTM),有效解决了RNN难以解决的人为延伸时间使命的问题,并解决了RNN容易出现梯度消失的问题。


  • 1999年,Felix A. Gers等人[2]发现[1]中提出的LSTM在处置惩罚连续输入数据时,如果没有重置网络内部的状态,最终会导致网络崩溃。因此,他们在文献[1]底子上引入了遗忘门机制,使得LSTM能够重置本身的状态。
  • 2000年,Felix A. Gers和Jiirgen Schmidhuber[3]发现,通过在LSTM内部状态单元内添加窥视孔(Peephole)连接,可以加强网络对输入序列之间渺小特征的区分能力。
  • 2005年,Alex Graves和Jürgen Schmidhuber[4]在文献[1] [2] [3]的底子上提出了一种双向长短期记忆神经网络(BLSTM),也称为vanilla LSTM,是当前应用最广泛的一种LSTM模型。
  • 2005年-2015年期间,相关学者提出了多种LSTM变体模型,此处不多做形貌。
  • 2016年,Klaus Greff 等人[5]回顾了LSTM的发展进程,并比力分析了八种LSTM变体在语音识别、手写识别和弦音乐建模方面的能力,实验效果表明这些变体不能显着改进标准LSTM体系结构,并证明白遗忘门和输出激活功能是LSTM的关键构成部分。在这八种变体中,vanilla LSTM的综合表现能力最佳。别的,还探索了LSTM相关超参数的设定影响,实验效果表明学习率是最关键的超参数,其次是网络规模(网络层数和隐藏层单元数),而动量梯度等设置对最终效果影响不大。
  • 在GRU被提出后,Junyoung Chung等人[6]比力了LSTM和GRU在复音音乐和语音信号建模方面的能力,实验效果表明GRU和LSTM表现相当。
  • GRU被提出至今(2019年),也只有几年时间,关于它的一些应用利弊到目前还未探索清楚。不外,相对于LSTM架构,GRU的的参数较少,在数据量较大的环境下,其训练速度更快。
  • LSTM是深度学习技术中的一员,其基本结构比力复杂,计算复杂度较高,导致较难进行较深条理的学习,例如谷歌翻译也只是应用7-8层的LSTM网络结构。别的,在训练学习过程中有可能会出现过拟合,可以通过应用dropout来解决过拟合问题(这在Keras等框架中均有实现。
  • LSTM在当前应用比力的结构是双向LSTM大概多层堆叠LSTM,这两种结构的实现在Keras等框架中均有对应的API可以调用。
    下图展示一个堆叠两层的LSTM结构图

    下图展示了一个双向LSTM的结构图

3.基本结构

本节起首回顾一下RNN的基本结构,然后说明LSTM的详细原理(下面要介绍的LSTM即为vanilla LSTM)。
原始的RNN基本结构图如下图所示。

由上图可知,RNN展开后由多个相同的单元连续连接。但是,RNN的实际结构确和上图左边的结构所示,是一个自我不断循环的结构。即随着输入数据的不断增长,上述自我循环的结构把上一次的状态传递给当前输入,一起作为新的输入数据进行当前轮次的训练和学习,一直到输入大概训练结束,最终得到的输出即为最终的预测效果。
LSTM是一种特别的RNN,两者的区别在于普通的RNN单个循环结构内部只有一个状态。而LSTM的单个循环结构(又称为细胞)内部有四个状态。相比于RNN,LSTM循环结构之间保持一个持久的单元状态不断传递下去,用于决定哪些信息要遗忘大概继承传递下去。
包含三个连续循环结构的RNN如下图,每个循环结构只有一个输出:

包含三个连续循环结构的LSTM如下图,每个循环结构有两个输出,此中一个即为单元状态:

一层LSTM是由单个循环结构结构构成,既由输入数据的维度和循环次数决定单个循环结构必要自我更新频频,而不是多个单个循环结构连接构成,即当前层LSTM的参数总个数只需计算一个循环单元就行,而不是计算多个连续单元的总个数。
下面将由一组图来详细解释LSTM细胞的基本构成和实现原理。LSTM细胞由遗忘门、输入门、输出门和单元状态构成。


  • 遗忘门(                                                   f                               t                                            f_t                     ft​):决定上一时刻的单元状态有多少必要保留到当前时刻。 (清理记忆垃圾,只保留考试相关内容)
  • 输入门(                                                   i                               t                                            i_t                     it​): 更新门决定了当前时刻有多少新的信息要被存储到单元状态中。(吸收新重点,加入到当前记忆)
  • 输出门(                                                   o                               t                                            o_t                     ot​):控制当前单元状态有多少必要输出到当前的输出值。(考试时根据标题提取相关知识点作答)
更普通的解释:

  • 遗忘门 (Forget Gate)
    功能:决定已往的信息中哪些必要保留,哪些必要丢弃。
    • 比喻:遗忘门像你的大脑在复习时选择丢弃的内容。例如,高数考试时你已经知道某些知识点不会考(如绪论部分),于是选择不再复习这些内容。
    • 原理:根据当前输入(考试重点提示)和已往的记忆(已掌握的知识)评估重要性,决定哪些内容不再必要(权值靠近 0 的部分被遗忘)。
  • 输入门 (Input Gate)
    功能:决定当前时刻有多少新的信息必要被记住并加入到记忆中。
    • 比喻:输入门像你的大脑在吸收新的知识。例如,在老师讲解考试重点时,你决定哪些内容是必要认真记忆的重点。
    • 原理:根据当前的输入(老师夸大的重点)和上下文评估新信息的价值,选择性地将有用信息写入到记忆中。
  • 输出门 (Output Gate)
    功能:决定当前单元状态中的多少内容必要被输出,用于生成当前时刻的输出值。
    • 比喻:输出门像你在考试答题时的记忆提取过程。例如,考试时你只必要提取与标题相关的知识点,而不必要将整本书的内容全部回忆出来。
    • 原理:基于单元状态(你储存的知识)和当前输入(详细的考试标题)决定必要输出的信息量。
下图展示了应用上一个时刻的输出                                             h                                       t                               −                               1                                                 h_{t-1}                  ht−1​和当前的数据输入                                             x                            t                                       x_t                  xt​,通过遗忘门得到                                             f                            t                                       f_t                  ft​的过程。

下图展示了应用上一个时刻的输出                                             h                                       t                               −                               1                                                 h_{t-1}                  ht−1​和当前的数据输入                                             x                            t                                       x_t                  xt​,通过输入门得到                                             i                            t                                       i_t                  it​,以及通过单元状态得到当前时刻暂时状态                                                        C                               ~                                      t                                       \tilde{C}_t                  C~t​的过程。

下图展示了应用上一个细胞结构的单元状态                                             C                                       t                               −                               1                                                 C_{t-1}                  Ct−1​、遗忘门输出                                             f                            t                                       f_t                  ft​、输入门输出                                             i                            t                                       i_t                  it​以及单元状态的输出                                                        C                               ~                                      t                                       \tilde{C}_t                  C~t​,得到当前细胞的状态                                             C                            t                                       C_t                  Ct​的过程。

下图展示了应用上一个时刻的输出                                             h                                       t                               −                               1                                                 h_{t-1}                  ht−1​和当前的数据输入                                             x                            t                                       x_t                  xt​,通过输出门得到                                             o                            t                                       o_t                  ot​的过程,以及结合当前细胞的单元状态                                             C                            t                                       C_t                  Ct​和                                             o                            t                                       o_t                  ot​得到最终的输出                                             h                            t                                       h_t                  ht​的过程。

看看里面的步骤
解释


  • 三个                                        σ                                  \sigma                     σ代表三个门,其输入均有上一层的隐藏状态                                                   h                               t                                            h_t                     ht​以及输入数据                                                   x                               t                                            x_t                     xt​
  •                                                    g                               t                                            g_t                     gt​ =                                                                C                                  ~                                          t                                            \tilde{C}_t                     C~t​
  • 其他参数:                                         W                                  W                     W初始化权重,                                        b                                  b                     b偏置向
  •                                                    c                                           t                                  −                                  1                                                       c_{t-1}                     ct−1​在经历过一次乘法和一次加法后的流动方向有两个:一个是直接输出,另一个是经过                                        t                            a                            n                            h                                  tanh                     tanh后和                                                   o                               t                                            o_t                     ot​汇合输出                                                   h                               t                                            h_t                     ht​
  •                                                    h                               t                                            h_t                     ht​也有两个流向:一个是流到下一个时刻,另一个是输出                                                    y                               t                                      =                                       W                                           y                                  h                                                            h                               t                                      +                                       b                               y                                            y_t = W_{yh}h_t + b_y                     yt​=Wyh​ht​+by​

4.LSTM和RNN的差异

RNN:把所有信息都记住,不管有用的没用的。
LSTM:设计一个记忆细胞,具备选择性记忆的功能,可以选择记忆重要信息,过滤掉噪声信息,减轻记忆负担,解决了RNN上的问题:梯度爆炸和梯度消失
普通讲差异:在期末复习周的时间,比如要考高数,老师已经给划定了重点,RNN还是会把整本书复习一遍,这会导致记忆负担重,会遗忘掉一些重要的信息,导致记忆效果差;而LSTM过滤掉了不考的信息,只记重点
名词解释
       梯度消失:
              现象:在训练过程中,反向传播时梯度渐渐变小,导致网络的早期层权重更新很少甚至停滞,使模型无法捕获恒久                      依赖的信息。
              原因:在时间序列长度较长的环境下,RNN 的反向传播会涉及到多次链式求导(如                                                        ∂                               L                                                 ∂                               W                                                 \frac{\partial L}{\partial W}                  ∂W∂L​中的链式规则)。如果激活                      函数的导数值小于 1(如 sigmoid),会使得梯度逐步衰减,最终趋近于 0。
       梯度爆炸:
              现象:在训练过程中,反向传播时梯度渐渐变大,导致权重更新幅度过大,模型失控。
              原因:与梯度消失类似,但激活函数导数值较大(或权重初始化不当)会导致梯度不断放大。
参考文献
[1] S. Hochreiter and J. Schmidhuber, “Long Short-Term Memory,” Neural Comput, vol. 9, no. 8, pp. 1735–1780, Nov. 1997.
[2] F. A. Gers, J. Schmidhuber, and F. A. Cummins, “Learning to Forget: Continual Prediction with LSTM,” Neural Comput., vol. 12, pp. 2451–2471, 2000.
[3] F. A. Gers and J. Schmidhuber, “Recurrent nets that time and count,” Proc. IEEE-INNS-ENNS Int. Jt. Conf. Neural Netw. IJCNN 2000 Neural Comput. New Chall. Perspect. New Millenn., vol. 3, pp. 189–194 vol.3, 2000.
[4] A. Graves and J. Schmidhuber, “Framewise phoneme classification with bidirectional LSTM and other neural network architectures,” Neural Netw., vol. 18, no. 5, pp. 602–610, Jul. 2005.
[5] K. Greff, R. K. Srivastava, J. Koutník, B. R. Steunebrink, and J. Schmidhuber, “LSTM: A Search Space Odyssey,” IEEE Trans. Neural Netw. Learn. Syst., vol. 28, no. 10, pp. 2222–2232, Oct. 2017.
[6] J. Chung, C. Gulcehre, K. Cho, and Y. Bengio, “Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling,” ArXiv14123555 Cs, Dec. 2014.

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

去皮卡多

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表