zoukankan      html  css  js  c++  java
  • LSTM的理解

    LSTM的理解


    RNN(循环神经网络)

    循环神经网络(Recurrent Neural Network,RNN)是一种用于处理序列数据的神经网络。相比一般的神经网络来说,他能够处理序列变化的数据。比如某个单词的意思会因为上文提到的内容不同而有不同的含义,RNN就能够很好地解决这类问题,在自然语言处理当中经常用到。

    这里:

    (x)为当前状态下数据的输入, (h)表示接收到的上一个节点的输入。

    (y) 为当前节点状态下的输出,而 (h') 为传递到下一个节点的输出。

    通过上图的公式可以看到,输出 (h')(x)(h) 的值都相关。

    而 y 则常常使用 (h') 投入到一个线性层(主要是进行维度映射)然后使用softmax进行分类得到需要的数据。

    对这里的y如何通过 (h') 计算得到往往看具体模型的使用方式。

    通过序列形式的输入,我们能够得到如下形式的RNN


    LSTM(Long short-term memory, LSTM)

    长短期记忆(Long short-term memory, LSTM)是一种特殊的RNN,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的RNN,LSTM能够在更长的序列中有更好的表现。
    LSTM结构(图右)和普通RNN的主要输入输出区别如下所示。

    相比RNN只有一个传递状态 (h^t),LSTM有两个传输状态,一个 (c^t) (cell state),和一个 (h^t) (hidden state)。
    (Tips:RNN中的 (h^t) 对于LSTM中的 (c^t)
    (对于长短期记忆网络,(h^t) 可以看做是对当前的知识进行短期的记忆,通过tanh函数进行变换,而(c^t)是通过对前一时间的记忆和当前的记忆进行加工变换,做的是线性变化 所以改变不是很大)
    详细可以见后图

    其中对于传递下去的 (c^t) 改变得很慢,通常输出的 (c^t) 是上一个状态传过来的 (c^{t-1}) 加上一些数值。

    (h^t) 则在不同节点下往往会有很大的区别。


    深入LSTM结构

    首先使用LSTM的当前输入 (x^t)和上一个状态传递下来的 (h^{t-1}) 拼接训练得到四个状态。

    其中, (z^f)(z^i)(z^o) 是由拼接向量乘以权重矩阵之后,再通过一个(sigmoid) 激活函数转换成0到1之间的数值,来作为一种门控状态。而 (z)则是将结果通过一个 (tanh) 激活函数将转换成-1到1之间的值(这里使用 (tanh) 是因为这里是将其做为输入数据,而不是门控信号)。

    四个状态在LSTM内部



    (o.) 是Hadamard Product,也就是操作矩阵中对应的元素相乘,因此要求两个相乘矩阵是同型的。 (O+) 则代表进行矩阵加法。

    LSTM内部主要有三个阶段:

    1. 忘记阶段。这个阶段主要是对上一个节点传进来的输入进行选择性忘记。简单来说就是会 “忘记不重要的,记住重要的”。
      具体来说是通过计算得到的 (z^f) (f表示forget)来作为忘记门控,来控制上一个状态的 (c^{t-1}) 哪些需要留哪些需要忘。

    2. 选择记忆阶段。这个阶段将这个阶段的输入有选择性地进行“记忆”。主要是会对输入 (x^t) 进行选择记忆。哪些重要则着重记录下来,哪些不重要,则少记一些。当前的输入内容由前面计算得到的(z)表示。而选择的门控信号则是由 (z^i) (i代表information)来进行控制。

      将上面两步得到的结果相加,即可得到传输给下一个状态的 (c^t) 。也就是上图中的第一个公式。

    3. 输出阶段。这个阶段将决定哪些将会被当成当前状态的输出。主要是通过 (z^o) 来进行控制的。并且还对上一阶段得到的(c^o) 进行了放缩(通过一个tanh激活函数进行变化)。

    与普通RNN类似,输出 (y^t) 往往最终也是通过 (h^t) 变化得到。

    参考链接

    https://zhuanlan.zhihu.com/p/115026734
    https://zhuanlan.zhihu.com/p/115026734

  • 相关阅读:
    common-pool2连接池详解与使用
    Nginx实现页面缓存
    Nginx实现动静分离
    lnmp环境下nginx配置‘负载均衡’
    用phpstudy搭建的lnmp环境下mysql授权远程连接
    新浪OAuth网络登录,请求access_token时遇到21323的错误
    使用curl进行模拟登录
    yii2.0分页
    yii2.0表单自带验证码
    yii2.0查询关联数据以及widgets小部件
  • 原文地址:https://www.cnblogs.com/jiashun/p/LSTM.html
Copyright © 2011-2022 走看看