本文共 2077 字,大约阅读时间需要 6 分钟。
前言:
在 RNN 的基础上网络进化到 LSTM。 回忆 RNN 相关思想请点 。
RNN 的 长期依赖 问题:
RNN 的核心思想是:将之前的信息连接到当前的任务中来,例如通过之前的电影故事情节来帮助推理接下来的故事情节发展。
一些情况下,我们只需要看最近的信息,就可以完成当前的任务。比如,预测句子“太阳从东方升起”中的最后一个单词,模型则不需要该句之前更多的上下文信息因为显然下一个单词应该是升起。此时当前位置与相关信息所在位置之间的距离相对较小,RNN可以训练使用这样的信息。
另外一些情况下,模型需要之前更多的上下文信息。比如想预测句子“I grew up in France……… I speak fluent French”中的最后一个单词。而最近的句子信息可以推测可能是某种语言,但想确定是哪种语言,模型则需要当前位置之前更远的上下文信息。实际中相关信息和需要该信息的位置之间的距离甚至可能非常的远。
随着上下文信息距离的增大,RNN 在将这些信息如何恰当的连接利用起来上表现得无能为力。
LSTM 网络比 RNN 多了一个(关键部分)控制参数 C :
参数
C 决定了什么样的信息将会保留或者遗忘。
传统的 RNN 每一步的隐藏单元只执行一个简单的tanh(或ReLU)操作。
LSTM每个循环模块内又有4层结构:3个sigmoid层;1个tanh层。
前言
门:是一种让信息选择式通过的方法。如下图网络模块中的加法门和乘法门。
门:是一种让信息选择式通过的方法。在下图网络循环模块中的 sigmoid 函数经过一个乘法门的作用就是: sigmoid 层输出 0 到 1 之间的数值,描述每个部分有多少量可以通过。0 代表“不许任何量通过”,1 就指“允许任意量通过”!
xt :当前信息。
ht−1 :前一阶段所有隐层的信息。
Ct−1 :前一阶段保留的历史参数控制信息。
把 ht−1 和 xt 拼接起来,传给一个sigmoid函数,该函数输出 [0,1] 之间的值 ft ( f :forget忘记门),这个值乘到细胞状态
Ct−1 上去。sigmoid函数的输出值直接决定了状态信息保留多少。ft=σ(Wf⋅[ht−1,xt]+bf) 例如当要预测下一个词时,细胞状态可能包含当前主语的人称(i),因此待测的正确代词(am)可以被选出来。当网络看到新的主语(they)时,人们希望忘记旧主语(i)。
it :要保留下来的新信息( i :input 输入门)
Ct :新数据形成的控制参数上一步 Ct−1 已经被忘记了部分信息,接着本步就应该考虑把哪些新有的信息加到细胞状态中。
1、 一个tanh层用来产生更新值的候选项 C˜t ,tanh的输出范围在[-1,1]。tanh的输出决定细胞状态在某些维度上需要加强,在某些维度上需要减弱。
2、 一个sigmoid层,它的输出值要乘到tanh层的输出上,起到一个缩放的作用。it=σ(Wi⋅[ht−1,xt]+bi) C˜t=tanh(WC⋅[ht−1,xt]+bC) 如sigmoid输出0说明相应维度上的细胞状态不需要更新。在预测下一个词的例子中,我们希望增加新的主语的身份(students)到细胞状态中,来替代需要忘记的旧主语。
然后让旧细胞状态 Ct−1 与 ft 相乘来选择性丢弃一部分信息;再加上需更新的部分 it∗C˜t ,由此生成新的细胞状态 Ct 。
Ct=ft∗Ct−1+it∗C˜t
由此可知,更新后的参数是由两部分组成:遗忘部分+保留新的部分。
利用新的控制参数产生输出:
参数更新好了,最后结果的输出由参数决定。把 Ct 输给一个tanh函数得到输出值的候选项。 候选项中的哪些部分最终会被选择输出,由一个sigmoid层来决定。 在预测下一个词的例子中,如果细胞状态 Ct 已知当前代词是第三人称(it),则可预测下一词可能是一个第三人称动词。(does)。ot=σ(Wo∗[ht−1,xt]+bo) ht=ot∗tanh(Ct)
如下图,LSTM 模块也可以像 RNN 的循环递归一样循环展开:
人工智能,AI。在近两年成为一个火热名词,凡是互联网科技学术圈的朋友大多是有所耳闻的。
然而 AI 在人们追捧的路上越行越远。一提到深度学习,机器学习,仿佛这就是人工智能的全部,然而,人工智能不等于深度学习!
深度学习也不能是人工智能的尽头!人工智能是什么?要搞清楚,现在很多做语音的,图像的都说自己是人工智能,其实只是 AI 的一个小小应用而已,何必那样搞噱头。
谁能书阁下,白首太玄经!