新手教程之:循环网络和LSTM指南 (A Beginner’s Guide to Recurrent Networks and LSTMs)

  • 时间:
  • 浏览:1
  • 来源:大发5分快乐8_大发5分快乐8官方

  某种 反馈后向回传每次日后位于,每个 hidden state 不仅蕴藏前一天hidden state的轨迹,也涉及所有处里$h_{t-1}$的hidden state的轨迹,可是我我有足够的记忆空间。

  时序信息被保位于RN的隐层请况中,还可不里能 延伸所以时间步骤来级联前向传播来影响每有还还有一个新样本的处里。

  就像$y = f(x)$中那样,随着x的变换,y也随之改变,梯度表示了所有权重的改变,对应着误差的改变。前一天亲戚亲戚亲戚亲戚朋友无法知道梯度,就无法调整权重使得误差朝着减少的方向进行,故网络就停止学习了。

    Code Sample:

  $h_t = \phi(Wx_t + Uh_{t-1})$,

  下图给出了简单的RN 和 LSTM单元的对比:

  目录:

  什么门主要作用于亲戚亲戚亲戚朋友接收的信号,类似神经网络的结点。亲戚亲戚亲戚朋友利用自己设置的权重来过滤,基于其力量和重要性来决定阻止前一天允许通过信息。什么权重,像给输入和hidden state建模的权重一样,是随着RN学习过程不断调整的。即,Cells 学习多会儿允许数据通过,留下前一天删除,通过迭代过程做出预测,后向传播误差,以及通过梯度下降来调整权重。

  ...

  1. 回顾:前向传播网络

  7. 示例代码与评论

  Capturing Diverse Time Scales and Remote Dependencies

  下面的图标表明了数据在记忆单元中的数据流向以及怎么里能 被各种门控制:

  权重的不同集合为了输入 输出 和遗忘过滤输入。遗忘门 表示为线性行态函数,前一天前一天某种 门打开,不在 记忆Cell的当前请况就简单的乘以1,来以此向前传播多个时间步骤。

  某种 累积原困 是前一天信息在神经网络中传递经过所以相乘的阶段。前一天深度图神经网路的各个层和时间序列日后 根据相乘关系而关联在同時 的,梯度是非常敏感,从而会消失前一天爆炸。梯度爆炸将要花费是“蝴蝶效应”,有还还有一个很小的改变,会原困 出显很大的反应,即:蝴蝶煽动一下翅膀,会引起一场飓风,卷起一头牛,不在 疯狂!可是我我梯度爆炸相对来讲是比较容易处里的,前一天亲戚亲戚亲戚朋友还可不里能 被截断前一天压缩。梯度消失,日后 点头疼了,他使得计算机前一天太小而无法计算,网络也无法进行学习,这青春恋爱物语有还还有一个很棘手的事情!

  RN依赖于后向传播的拓展,称为:Backpropagation through time, or called BPTT。时间,在某种 请况下,就被简单的表达成有还还有一个定义好的,有序列的计算将有还还有一个time step和下有还还有一个time step联系起来,所以需要BP来完成。神经网络,不管算是循环的,都还可不里能 简单的表述成符合的函数:$f(g(h(x)))$。增加时间元素,仅仅是拓展该函数序列,亲戚亲戚亲戚亲戚朋友还可不里能 通过链式法则来计算偏导数。

  

  5. LSTMs

  有还还有一个GRU是有还还有一个基础的无输出gate的LSTM,所以每次时间步骤,完全从其记忆Cell中将内容写入更大的网络。

  RN 的目标是准确的分类出序列输入,亲戚亲戚亲戚亲戚朋友依赖误差的后向传播和梯度下降来完成该目标。

  大的加粗的字母给出了每次操作的结果。

  在上述流程图中,每个x是有还还有一个输入样本,w是权重,a是隐层的激活(权重输入和前一天hidden state的组合),b是利用rectified linear or sigmoid unit转换后的隐层输出。

  从底部看起,有还还有一个箭头表明从多个点刚开始流向Cell,当前的输入和过去的Cell state的组合既传给Cell某种,还传给他的有还还有一个门,来决定怎么里能 处里该输入。小圆孔可是我我“门”,分别来决定算是让当前新的输入进入,擦除当前的Cell state,前一天算是让那个请况影响当前网络的输出。$S_c$ 是记忆单元的当前请况,$g_y_in$是当前的输入。每有还还有一个门都还可不里能 关闭前一天开启,在每一步,亲戚亲戚亲戚朋友日后重组亲戚亲戚亲戚朋友的开启前一天关闭请况。

  你前一天比较疑惑,LSTM是为了联系远距离出显的最终的输出,不在 为啥会么会会要引入“遗忘门”?是啊,记得多了,容易累啊,当然要挑选性的遗忘某些东西来摆脱痛苦。哈哈,扯淡呢!可是我我,有前一天,是的确需要遗忘的。类似:当你有还还有一个处里有还还有一个文本时,可是我我接近尾声了,不在 你前一天不在 任何理由相信下有还还有一个文档与当前的文档有什么联系?对吧?所以,当网络刚开始输入下有还还有一个文档的相关内容时,应该将记忆单元置0,要花费暂时清除缓存,以准备下有还还有一个工作。

  前向网络还能不可不里能 不能 是将有还还有一个输入映射到有还还有一个输出,可是我我RN 还可不里能 将有还还有一个输入映射到多个输出,像上图所示的那样,也还可不里能 从多个到多个,前一天从多个到有还还有一个。

  LSTMs 将神经网络中正常流动的信息存储在有还还有一个门细胞中(gated cell)。信息还可不里能 存储,写入,后者从这里读取,就像数据位于计算机的存储单元中一样。该Cell经过门的打开和关闭,还可不里能 决定存储什么,什么前一天允许读取,写入前一天擦除。不像计算机中那种数字存储,然而,什么门日后 类似的,通过sigmoid执行元素级相乘,日后 在0-1的范围内。

  There are a lot of moving parts here, so if you are new to LSTMs, don’t rush this diagram---contemplate it. After a few minutes, it will begin to reveal its secrets.

  需要要注意到的是:LSTM的记忆单元给出了不同的角色来进行输入的相加和相乘。在有还还有一个流程图中,中心的加法符号,是LSTM的秘密。像他看起来那样的傻逼,某种 基础的改变,在需要往深处回传时,能帮助亲戚亲戚亲戚朋友保存固定的误差。从不通过将其当前请况与新的输入相乘来决定可是我我的Cell state,亲戚亲戚亲戚朋友将其相加,而日后 相乘,这两者是有很大区别的。(“遗忘门”依然采用相乘的土措施。)

  Gated Recurrent Units(GRUs)

  6. Capturing Diverse Time Scales

新手教程之:循环网络和LSTM指南 (A Beginner’s Guide to Recurrent Networks and LSTMs)

  4. 梯度爆炸与消失

  像大累积的神经网络一样,RN 也是很老的东西了,在1990年早期,梯度消失是抑制RN 性能的主要原困 。

  权重输入和hidden state的总和经函数$\phi$变换---要么是 逻辑sigmoid函数,要么是 tanh --- 是有还还有一个标准的工具来压缩过大前一天过小的值,也会将梯度变换的适合后向传播。

  下面给出来一幅图,来表示一遍又一遍的利用sigmoid 函数带来的影响。随着使用梯度的增加,曲线几乎变的平坦了,即:梯度也变得非常小!!!

  在前向传播网络的示例中,输入的样本被传到网络中,可是我我将其转换为有还还有一个输出;在有监督的学习中,输出前一天是有还还有一个标签。即,亲戚亲戚亲戚朋友将原始数据映射成类别,识别模式信号,即有还还有一个图像应该被标记为猫前一天大象。

  如上图所示,循环网络,其输入不仅仅是亲戚亲戚亲戚朋友就看的当前的输入样本,亲戚亲戚亲戚朋友也接收上有还还有一个时刻的输入。当前时刻的输入是:BTSXVPE,上有还还有一个时刻的信息存储在 CONTEXT UNIT中。

  某些相关教程:

  2. 循环网络

  就像人类的记忆力一样,其在身体结构循环,影响亲戚亲戚亲戚亲戚朋友的行为,可是我我亲戚亲戚亲戚亲戚朋友看还可不里能 其完全的行态,信息也在RN的隐层请况中循环。亲戚亲戚亲戚亲戚朋友公式化的执行记忆前向的过程:

  下面的流程图是有还还有一个正在工作的门:

  

  3. 随着时间的后向传播

  本文翻译自:http://deeplearning4j.org/lstm.html

  Truncated BPTT(截断的BPTT)

  有还还有一个前向传播网络在有标签图像上进行训练,直到亲戚亲戚亲戚朋友不断的缩短误差,使得亲戚亲戚亲戚朋友还可不里能 正确的猜到对应图像的类别。有了什么训练数据的参数前一天权重,可是我我就还可不里能 识别从未见过的种类数据。有还还有一个训练的前向传播网络,对图像的识别和处里是无序的,即:看有还还有一个猫的图像不需要使其感知大象。也可是我我说,他并不在 时序的概念,不记得过去处里的事情,只记得当前的训练。

  可是我我提供有还还有一个代码链接:https://github.com/deeplearning4j/dl4j-0.4-examples/blob/master/src/main/java/org/deeplearning4j/examples/recurrent/character/GravesLSTMCharModellingExample.java

  1. 前向传播网络

  前向网络中的后向传播通过结果输出,权重和每有还还有一个隐层的输入来回传误差,通过计算亲戚亲戚亲戚朋友偏导数 $\{alpha}E/\{alpha}w$,后者亲戚亲戚亲戚朋友比率的变换关系。什么导数可是我我用来作为学习的规则,梯度下降,来调整权重,不管哪个方向,来减小误差。

    给定有还还有一个字符序列,recurrent 前一天使用第有还还有一个字符来协助帮助识别第五个字符。类似:有还还有一个初始的q前一天原困 下有还还有一个字母是u,当是t时,下有还还有一个前一天是h。前一天RN随着时间展开,某种 动画很好的解释了某种 过程:http://imgur.com/6Uak4vF  

   4. 梯度爆炸和梯度消失

  RN寻找建立最终输出和某些时间步骤的事件之间的联系,前一天土措施非常遥远的输入不难 知道其重要性,这里作者给出了有还还有一个很有意思的借喻,即:你祖父的祖父的祖父的祖父的祖父的祖父的祖父的祖父的祖父的祖父的祖父的祖父的祖父的祖父的祖父的祖父,亲戚亲戚亲戚朋友在数量上增加到减慢,可是我我亲戚亲戚亲戚朋友的遗产就变得不在 模糊了。

   

  2. 循环网络

  在90年代中期,RN的有还还有一个变体,LSTMs 被德国的研究者作为处里梯度消失什么的问题的方案被提出。LSTMs 还可不里能 帮助用来存贮经过时间和各个层的误差,通过保持有还还有一个更加稳定的误差,亲戚亲戚亲戚朋友允许RN来继续更多次的时间步骤,从而实现了原困 和影响的远程操控。

    小段的直线代表 关闭的门,空白的小圆圈代表开着的门。在hidden layer下面的水平向下的线和圈是遗忘门。

  3. 随时间后向传播(Backpropagation Through Time ( BPTT ))

  2. 卷积网络 http://deeplearning4j.org/zh-convolutionalnets

  截断的BPTT是full BPTT的某种估计,更适合长序列,前一天full BPTT的每个参数更新的前向和后向代价随着时间的进行,变得不在 大。不好的地方在于:梯度还可不里能 回传不在 远,所以网络无法像full BPTT那样还可不里能 学到很长的依赖。

  上有还还有一个时刻的决定会影响下有还还有一个时刻。所以RN 有有还还有一个输入来源,当前的和最近时刻的,同時 来决定怎么里能 对付到来的新数据。与前向传播网络的不同之位于于,后向循环(feedback loop),即通常所说的RN具有记忆能力。任何东西的位于日后 有道理的,同样,给神经网络添加记忆功能也是有收益的,即:还可不里能 捕获时序上的信息,RN突然 还可不里能 执行前向传播网络所还可不里能 做的事情。

  此外,给每有还还有一个LSTM引入1的偏差还可不里能 改善性能(Sutskever 推荐将bias设为5)。

  1. 深度图神经网络简介 http://deeplearning4j.org/zh-neuralnet-overview

  8. 资源

  时刻t的隐层请况是$h_t$。$x_t$是当前的输入,$W$是权重矩阵,上有还还有一个时刻的隐层请况$h_{t-1}$,以及其 hidden-state-to-hidden-state matrix $U$。权重矩阵$W$ 是某种filter,来根据当前输入和过去的 hidden state 来决定重要性。亲戚亲戚亲戚朋友产生的误差会经前一天向传播回传,用来调整亲戚亲戚亲戚朋友的权重最终使得误差不再下降。