zoukankan      html  css  js  c++  java
  • 人工智能算法综述(二) RNN and LSTM


    接上一篇 :AI算法综述 (一)

    RNN:循环神经网络 and LSTM 长短期记忆网络

    LSTM就是一个RNN网络,外部的结构是一样的,主要是单元的内在结构不同。或者说LSTM是为了让RNN能够更好的处理NLP(自然语言问题)做的一些内部改造。

    我推荐这篇文章理解LSTM :https://www.jianshu.com/p/9dc9f41f0b29

    可能会比我自己说的更好,我这里就简单说一下,不涉及太多技术细节。

    我们先回顾一下基本的神经网络结构图

    整体结构就是 输入层+N层隐层+输出层。

    数据的流向就是由左往右,输入X1,X2,X3 会分发给隐层通过这些连线传递过去,然后在节点计算之后有一个输出,继续分发给下一层。

    那么单独拎一个节点放大来看的话就是这样的。

    Z就是某中间节点。  这就是标准的前馈神经网络的结构。

    这种结构在处理某一类问题的时候非常无力,就是比方说当前的识别结果,需要依赖上一次的识别结果。

    具体的场景就是自然语言的翻译,翻译需要结合上下文语境才能更精确的翻译出来。而不能像某些机译一样,一句一句单独翻译。

    那么RNN 所谓的循环神经网络就是在这中间节点做了一个改造。

    这个改造就是,把中间节点的输出拷贝一份出来,然后混合着下一次的输入再做一次计算(激活函数)得出结果,反复如是,直到没有输入。

     那LSTM跟这个RNN有什么区别呢?

    RNN当然也不是万能的,其中也存在各种利弊。

    然后有个缺陷,就是假如当前 T 结果依赖上一次 (就是  T -1) 的结果,这问题不大,那如果 依赖 T-2 或者更远一点 T-10 的结果呢?

    然后大家看回那个结构图,h20 的结果如果依赖 X1  那么中间的路途遥远,原输入经过了很多次计算才到H20 损耗非常大,变数更大。

    而且需要依赖上下文语境的情况在自然语言处理中还普遍存在。所以……

    当当当……

    LSTM应运而生,为了世界和平而生。

    我们先看一下LSTM跟常规的RNN区别。

    主要是绿色块里面的变化,外部结构是一样的。

    这个内在结构长的很像电路板,可以把这个电路板分为3个部件。

    分别是“遗忘门” “输入门” “输出门”

    具体这个结构怎么实现的这3个门这里不细说,上面那个地址有详细说明,爱看公式的童鞋可以移步。

    这里我概括性的讲为啥要有遗忘门跟输入门、输出门

    接我们刚才在RNN那里讲的,如果依赖的结果离的很远,比如说T 依赖 T-10 的输出结果。中间隔了一条银河。

    你想要T么?先忘掉T-11 T-12…… 之前的所有信息,然后输入T-10,然后 忘掉 T-9 T-8 T-7 …… 然后把 T-10 的输入 通过输出门得出结果。

    那么遗忘门的摊开之后的参数就是 从T-12 到 T 就是:

    T-11 T-10 T-9 T-8 T-7 T-6 T-5 T-4 T-3 T-2 T-1 T-0
    0 1 0 0 0 0 0 0 0 0 0 0

    输入门就是:

    T-11 T-10 T-9 T-8 T-7 T-6 T-5 T-4 T-3 T-2 T-1 T-0
    0 0 0 0 0 0 0 0 0 0 0 1

    RNN的训练过程就是根据标识好的数据,训练调整这些参数到符合这些数据的规律。

    好了,RNN就讲到这里,感谢各位阅读!

  • 相关阅读:
    【SCOI 2011】 糖果
    【POJ 3159】 Candies
    【POJ 1716】 Integer Intervals
    【POJ 2983】 Is the information reliable?
    【POJ 1364】 King
    【POJ 1201】 Intervals
    【POJ 1804】 Brainman
    6月10日省中提高组题解
    【POJ 3352】 Road Construction
    【POJ 1144】 Network
  • 原文地址:https://www.cnblogs.com/7rhythm/p/8797572.html
Copyright © 2011-2022 走看看