接上一篇 :AI算法综述 (一)html
RNN:循环神经网络 and LSTM 长短时间记忆网络算法
LSTM就是一个RNN网络,外部的结构是同样的,主要是单元的内在结构不一样。或者说LSTM是为了让RNN可以更好的处理NLP(天然语言问题)作的一些内部改造。网络
我推荐这篇文章理解LSTM :https://www.jianshu.com/p/9dc9f41f0b29函数
可能会比我本身说的更好,我这里就简单说一下,不涉及太多技术细节。spa
咱们先回顾一下基本的神经网络结构图翻译
总体结构就是 输入层+N层隐层+输出层。3d
数据的流向就是由左往右,输入X1,X2,X3 会分发给隐层经过这些连线传递过去,而后在节点计算以后有一个输出,继续分发给下一层。htm
那么单独拎一个节点放大来看的话就是这样的。blog
Z就是某中间节点。 这就是标准的前馈神经网络的结构。get
这种结构在处理某一类问题的时候很是无力,就是比方说当前的识别结果,须要依赖上一次的识别结果。
具体的场景就是天然语言的翻译,翻译须要结合上下文语境才能更精确的翻译出来。而不能像某些机译同样,一句一句单独翻译。
那么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就讲到这里,感谢各位阅读!