zoukankan      html  css  js  c++  java
  • 循环神经网络LSTM

    LSTM长短期记忆(Long Short-Term Memory)

    LSTM的表现通常比时间递归神经网络及隐马尔科夫模型(HMM)更好, 之所以出现LSTM, 是为了解决,当 要训练的时间序列过长时, RNN会丧失学习很远信息的能力, 由于反馈神经网络的链式求导计算, 会引起梯度爆炸, 或梯度消失, 这时训练的模型效果很差

    LSTM的细胞(cell)

    Cell 的状态就像是传送带,它的状态会沿着整条链条传送,而只有少数地方有一些线性交互。信息如果以这样的方式传递,实际上会保持不变,类似游戏中主线剧情.

    LSTM 通过门(gate)的结构控制 cell 的状态,并向其中删减或增加信息。可以把门理解为一种控制信息通过的方式。门由一个 sigmoid 网络层与一个按位乘操作构成。类似是否考虑支线剧情. Sigmoid 层的输出值在 0 到 1 间,表示每个部分所通过的信息。0 表示对所有信息关上大门;1 表示信息都通过。

    一个 LSTM 有三个这样的门,控制 cell 的状态。

    一.忘记门

    首先,LSTM 的第一步需要决定我们需要从 cell 中抛弃哪些信息。这个决定是从 sigmoid 中的「遗忘层」来实现的。它的输入是 ht-1 和 xt,把上 次的状态ht-1和这 次的输 xt相比较,输出为一个 0 到 1 之间的数。Ct−1 就是每个在 cell 中所有在 0 和 1 之间的数值,就像我们刚刚所说的,0 代表全抛弃,1 代表全保留。

     

    二.记忆门

    下一步,我们需要决定什么样的信息应该被存储起来。这个过程主要分两步。

    第一步,首先是 sigmoid 层(输入门)决定我们需要更新哪些值(忘记旧的);

    第二步,随后,tanh 层生成了一个新的候选向量 C`,它能够加入状态中(更新后的cell state)。

    最后,我们将这两个值结合起来,并更新 cell 的状态。例如t+1的信息和St的信息一样,可以考虑遗忘t+1的信息.

     

    三.更新门

    把老cell state更新为新cell state

     XOR和AND这样的 来 新我们的cell state:

     

     

    四.输出门

    最后,我们需要确定输出的内容。这个输出内容取决于我们的 cell 状态,

    首先,我们会运行一个 sigmoid 层决定 cell 状态输出哪一部分。

    随后,我们把 cell 状态通过 tanh 函数,将输出值保持在-1 到 1 间。

    之后,我们再乘以 sigmoid 门的输出值,就可以得到结果了。

     

  • 相关阅读:
    go爬虫
    node简单爬虫request简单运用
    Centos7.4安装Mysql5.6
    HTML本地资源读取!
    node-request模块
    react中使用AntDesign库 --- babel-plugin-import 配置
    Django 模型(数据库)
    TypeScript--安装依赖,vscode配置ts自动转换成js文件
    python爬虫
    nodejs爬虫简单实现
  • 原文地址:https://www.cnblogs.com/xmeo/p/7281037.html
Copyright © 2011-2022 走看看