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

  • 时间:
  • 浏览:0
  • 来源:uu快3苹果版_uu快3单双_套路

  

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

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

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

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

  如上图所示,循环网络,其输入不仅仅是大伙儿 看得人的当前的输入样本,大伙儿 也接收上俩个多 时刻的输入。当前时刻的输入是:BTSXVPE,上俩个多 时刻的信息存储在 CONTEXT UNIT中。

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

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

  1. 回顾:前向传播网络

  就像人类的记忆力一样,其在身体组织组织结构循环,影响大伙儿 的行为,然后 大伙儿 看好难其删改的行态,信息也在RN的隐层清况 中循环。大伙儿 公式化的执行记忆前向的过程:

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

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

  RN寻找建立最终输出和一点时间步骤的事件之间的联系,然后 最好的土办法非常遥远的输入好难知道其重要性,这里作者给出了俩个多 很有意思的比喻,即:你祖父的祖父的祖父的祖父的祖父的祖父的祖父的祖父的祖父的祖父的祖父的祖父的祖父的祖父的祖父的祖父,大伙儿 在数量上增加到变慢,然后 大伙儿 的遗产就变得好难模糊了。

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

  此外,给每俩个多 LSTM引入1的偏差可不都可以改善性能(Sutskever 推荐将bias设为5)。

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

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

  

  2. 循环网络

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

  Gated Recurrent Units(GRUs)

  3. 随着时间的后向传播

  一点 提供俩个多 代码链接:https://github.com/deeplearning4j/dl4j-0.4-examples/blob/master/src/main/java/org/deeplearning4j/examples/recurrent/character/GravesLSTMCharModellingExample.java

  目录:

  ...

  在前向传播网络的示例中,输入的样本被传到网络中,然后 将其转换为俩个多 输出;在有监督的学习中,输出然后 是俩个多 标签。即,大伙儿 将原始数据映射成类别,识别模式信号,即俩个多 图像应该被标记为猫然后 大象。

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

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

  6. Capturing Diverse Time Scales

  时序信息被保发生RN的隐层清况 中,可不都可以延伸一点时间步骤来级联前向传播来影响每俩个多 新样本的除理。

  8. 资源

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

  你然后 比较疑惑,LSTM是为了联系远距离总是 跳出的最终的输出,好难为什么我要引入“遗忘门”?是啊,记得多了,容易累啊,当然要选泽性的遗忘一点东西来摆脱痛苦。哈哈,扯淡呢!然后 ,有然后 ,是的确时需遗忘的。累似 :当你俩个多 除理俩个多 文本时,然后 接近尾声了,好难你然后 好难任何理由相信下俩个多 文档与当前的文档有什么联系?对吧?一点,当网络开始英语 英语 英语 输入下俩个多 文档的相关内容时,应该将记忆单元置0,合适暂时清除缓存,以准备下俩个多 工作。

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

  俩个多 前向传播网络在有标签图像上进行训练,直到大伙儿 不断的缩短误差,使得大伙儿 可不都可以正确的猜到对应图像的类别。有了什么训练数据的参数然后 权重,然后 就可不都可以识别从未见过的种类数据。俩个多 训练的前向传播网络,对图像的识别和除理是无序的,即:看俩个多 猫的图像不用使其感知大象。也一点 说,他并好难时序的概念,不记得过去除理的事情,只记得当前的训练。

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

  Truncated BPTT(截断的BPTT)

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

  从底部看起,俩个多 箭头表明从多个点开始英语 英语 英语 流向Cell,当前的输入和过去的Cell state的组合既传给Cell两种,还传给他的俩个多 门,来决定如可除理该输入。大洞一点 “门”,分别来决定与否让当前新的输入进入,擦除当前的Cell state,然后 与否让那个清况 影响当前网络的输出。$S_c$ 是记忆单元的当前清况 ,$g_y_in$是当前的输入。每俩个多 门都可不都可以关闭然后 开启,在每一步,大伙儿 时会重组大伙儿 的开启然后 关闭清况 。

   4. 梯度爆炸和梯度消失

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

  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.

    Code Sample:

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

  7. 示例代码与评论

    给定俩个多 字符序列,recurrent 然后 使用第俩个多 字符来协助帮助识别第十个 字符。累似 :俩个多 初始的q然后 原困分析下俩个多 字母是u,当是t时,下俩个多 然后 是h。然后 RN随着时间展开,你这一动画很好的解释了你这一过程:http://imgur.com/6Uak4vF  

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

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

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

  1. 前向传播网络

  下面的流程图是俩个多 正在工作的门:

  Capturing Diverse Time Scales and Remote Dependencies

  5. LSTMs

   

  在90年代中期,RN的俩个多 变体,LSTMs 被德国的研究者作为除理梯度消失问提的方案被提出。LSTMs 可不都可以帮助用来存贮经过时间和各个层的误差,通过保持俩个多 更加稳定的误差,大伙儿 允许RN来继续更多次的时间步骤,从而实现了原困和影响的远程操控。

  时刻t的隐层清况 是$h_t$。$x_t$是当前的输入,$W$是权重矩阵,上俩个多 时刻的隐层清况 $h_{t-1}$,以及其 hidden-state-to-hidden-state matrix $U$。权重矩阵$W$ 是两种filter,来根据当前输入和过去的 hidden state 来决定重要性。大伙儿 产生的误差会经然后 向传播回传,用来调整大伙儿 的权重最终使得误差不再下降。

  前向网络好难是将俩个多 输入映射到俩个多 输出,然后 RN 可不都可以将俩个多 输入映射到多个输出,像上图所示的那样,不可不都可以从多个到多个,然后 从多个到俩个多 。

  你这一反馈后向回传每次时会发生,每个 hidden state 不仅含晒 然后 hidden state的轨迹,也涉及所有除理$h_{t-1}$的hidden state的轨迹,若果有足够的记忆空间。

  一点相关教程:

  2. 循环网络

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

  4. 梯度爆炸与消失

  你这一偏离 原困是然后 信息在神经网络中传递经过一点相乘的阶段。然后 深层神经网路的各个层和时间序列时会根据相乘关系而关联在一齐的,梯度是非常敏感,从而会消失然后 爆炸。梯度爆炸将合适是“蝴蝶效应”,俩个多 很小的改变,会原困总是 跳出很大的反应,即:蝴蝶煽动一下翅膀,会引起一场飓风,卷起一头牛,好难疯狂!然后 梯度爆炸相对来讲是比较容易除理的,然后 大伙儿 可不都可以被截断然后 压缩。梯度消失,时会点头疼了,他使得计算机然后 太小而无法计算,网络也无法进行学习,这甜得俩个多 很棘手的事情!

  俩个多 GRU是俩个多 基础的无输出gate的LSTM,一点每次时间步骤,删改从其记忆Cell中将内容写入更大的网络。