LSTM 简介

来源:互联网 发布:js 控制class 编辑:程序博客网 时间:2024/06/05 23:58

1. 简介

LSTM, Long-Short Term Memory RNN. 长短期记忆模型循环神经网络.
LSTM属于RNN, 是它的一种特殊实现.

2. Long-Short Term Memory

  • short term memory
    对于当前的任务, 有时我们只需考虑最近的信息, 看下面的填空,

    " the clouds are in the __sky__"

    这是常识, 不需要更远的前文环境.
    图片名称
    图2-1 short term memory

  • long term memory
    再看一个填空的例子, 最后一句话中, 要填的很可能是一种语言, 但应该是哪种语言呢? 往前追溯到第一句话, 可由 France 推断出是 French.

"I grew up in France. ... .I speak fluent __French__."

这个例子中, 相关信息需要它的点 之间的距离很远.
图片名称
图2-2 long term

RNN在short-term上表现不错, 但long-term就不理想了, 所以有人提出了LSTM.
它被广泛地运用, 并在相当多的问题上表现得惊人的好!

图片名称
图2-3 含有4个交互层的 LSTM重复模型

3. 组件

这里写图片描述

图片名称
图3-1 LSTM网络及标注示意

LSTM的关键是细胞状态 .

  • 顶部直线
    图片名称
    穿过图表上方的水平直线, 直接在整个链上运行,只有一些小的线性相互作用, 让信息在流动的同时保持不变性。

  • 阀门
    图片名称
    LSTM有能力向细胞状态中添加或移除信息, 这通过精细调整叫阀门的结构来实现.
    阀门可以让信息有选择地通过. 它们由一个S形网络层和一个逐点乘法操作组成.
    S形网络层输出[0,1]的一个数, 描述应该让每个组件通过多少信息. 0就是什么也不让通过, 1就是每个信息都可以通过.
    一个LSTM含有三个这样的阀门, 来保护和控制细胞状态.

  • 忘记阀门层
    图片名称
    用于决定从细胞状态中扔掉哪些信息, 这由一个叫做忘记阀门层的S形网络层实现.

  • 输入阀门层
    图片名称
    在丢掉一些信息之后, 下一步要决定把哪些信息存储在细胞状态中.由两部分组成.

    1. 决定要更新的值
    2. 创造新的候选值向量
  • 计算细胞状态
    图片名称
    将旧的细胞状态Ct1更新为新的状态Ct.

  • 输出阀门层
    图片名称
    首先, 我们会运行一个s网络层, 用于决定细胞状态的哪些部分会被输出. 然后将细胞状态作 tanh运算, 得到[-1,1]的值,

参考

  1. colah’s blog, Understanding-LSTM
  2. 机器之心:LSTM入门必读:从入门基础到工作方式详解