Rolling and Unrolling RNNs

#这一章是RNN神经网络的简介

Posted on April 27, 2016 by JesseJohnson

当输入序列被馈送到这样的网络中时,向后的箭头在稍后的步骤将关于早先输入值的信息反馈回系统。我没有在上篇文章中描述的一件事是如何训练这样的网络。所以在这篇文章中,我想介绍一种训练RNN的方法,称为展开(unrolling)。

回想一下,神经网络由有向图定义,即其中每个边缘具有从一个端点指向另一个端点的箭头的图。我把这个图形称之为经典神经网络图,其中每个顶点是一个神经元,发出一个单一的值。但是对于这篇文章,在张量环境中描述事物会更容易,其中每个顶点表示由一行/一层神经元定义的向量。这样,我们可以认为我们的网络是从表示输入向量的单个顶点开始,并结束于表示输出向量的单个输出顶点。我们可以通过从这个输入顶点开始并沿着它们的箭头指向的方向到达图中的每个顶点。类似地,我们可以通过沿着一些边的路径从任何顶点到输出顶点。

标准(非循环)前馈网络是有向无环图(DAG),这意味着除了被定向之外,它还具有如下属性:如果从任何顶点开始并沿箭头指向的方向,沿着边缘,你永远不会回到你开始的地方(无环)。因此,通过网络的自然流动允许我们一次一个地计算每个顶点所表示的向量,使得当我们计算每个向量时,我们已经计算了它的输入,即在另一端的向量是指向它的边缘的。在RNN中,图形具有循环,因此无论我们如何安排顶点,总是存在指向后方的边缘,也就是从其向量尚未计算的顶点开始。但是我们可以使用上一步的输出来处理。

例如,以输入向量和中间向量C(乘以权重矩阵MA)计算右侧图中的向量A。 其中“c”的圆圈表示连接向量,这意味着创建一个新的(更高维度的)向量in和C,其中前半部分来自输入向量,后半部分来自输入向量C。当第一个输入值in0到达顶点A时,我们还没有一个值用于C,所以我们只使用适当维度的零向量,我们让值A0我们计算的值。类似地,我们可以通过B0乘以A0及矩阵MB和来自B0和MC的第一输出值C0来计算。

然后是输入序列中的第二个值in1。 当我们去计算S1,我们还没有计算C1,但我们有最后一步的C0。 所以我们计算使用C0和in1计算A1。 然后我们可以计算B1和C1。 C1将用于下一步计算A2,等等。为了更好地了解这里发生了什么,我们绘制一个新的图形,表示我们将为原始图形中的顶点计算的所有值。因此,特别地,C0,C1在这个新图中将是两个单独的顶点,并且边缘从C0到顶点A0的并置运算符。 下图显示了输入序列中的前四个步骤。

你可以注意到这个图它有多个输入 - 一个输入序列中的每个向量和多个输出。你可能已经注意到的第二件事是,这个图是非循环的。特别是,原始图表特征的周期已经“展开”到更长的路径中,您可以在新图中向右移动。(事实上,如果你在正方向和负方向上无限展开,展开的图形将是原始图形的覆盖空间,如上所述,它将是非循环的(就有向循环而言,尽管不一定是无向循环)),这类似于简单连接,因此也许有一些类别的理论意义,其中它真的是一个通用的覆盖

你可以总是通过这个过程从循环有向图形成一个DAG,这被称为展开。注意,在展开的图中,我们有很多权重矩阵MAMBMCMD的副本。 这些在序列的每一步都是一样的,所以他们不会展开。

然而,我们确实需要更新权重矩阵,以训练神经网络,展开的想法真的很方便。因为展开的网络是DAG,我们可以像使用标准神经网络一样使用反向传播来训练它。但是这个展开的网络的输入不是来自序列的单个向量 - 它是整个序列,一次全部!我们用来计算梯度的目标输出是我们希望网络为输入序列中的每个步骤产生的输出值的整个序列。在实践中,通常截断网络并且仅使用每个训练步骤的序列的一部分。

在反向传播步骤中,我们计算梯度并使用它们来更新权重矩阵MAMBMCMD。 由于我们有每个权重矩阵的多个副本,我们可能要为每个副本获得不同的渐变。 但是我们希望每个矩阵的所有副本保持不变,所以我们将组合所有的渐变,通常采用平均值,并使用这个来更新所有副本的基本矩阵。

在实践中,您不一定需要明确构造展开的网络,以便训练具有反向传播的RNN。只要你愿意处理一些复杂的标记,可以直接从原始图计算权重矩阵的梯度。但是,展开是一个很好的方式来思考训练过程。

原文发布于微信公众号 - 鸿的学习笔记(shujuxuexizhilu)

原文发表时间:2016-12-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序生活

机器学习(四)通过递归的矩阵向量空间预测组合语义摘要简介方法结果结论

Semantic Compositionality Through Recursive Matrix-Vector Spaces 摘要 单字矢量空间模型已经在学...

35570
来自专栏算法channel

全面总结机器学习项目和面试中几乎绕不开的决策树

决策树是一种常见的机器学习算法,它的思想十分朴素,类似于我们平时利用选择做决策的过程。

12100
来自专栏机器学习、深度学习

目标检测--Light-Head R-CNN: In Defense of Two-Stage Object Detector

Light-Head R-CNN: In Defense of Two-Stage Object Detector Code will be make pu...

50790
来自专栏机器学习之旅

R开发:常用R语言包介绍

r与python差异比较大的一个地方就是,python的机器学习算法集中程度比较高,比如sklearn,就集成了很多的算法,而R语言更多时候需要一个包一个包去了...

12150
来自专栏小鹏的专栏

为什么很多做人脸的Paper会最后加入一个Local Connected Conv?

Deep face:论文。 a. 人脸检测,使用6个基点 b. 二维剪切,将人脸部分裁剪出来 c. 67个基点,然后Delaunay三角化,在轮廓处添加三角形来...

36050
来自专栏CreateAMind

TensorFlow 文档:MNIST机器学习入门

13620
来自专栏机器学习算法工程师

RNN入门与实践

作者:叶虎 编辑:黄俊嘉 引言 递归神经网络(Recurrent Neural Network, RNN)是神经网络家族的重要成员,而且也是深度学习领域中的得...

38470
来自专栏null的专栏

利用Theano理解深度学习——Auto Encoder

注:本系列是基于参考文献中的内容,并对其进行整理,注释形成的一系列关于深度学习的基本理论与实践的材料,基本内容与参考文献保持一致,并对这个专题起名为“利用The...

38280
来自专栏机器学习算法原理与实践

scikit-learn 梯度提升树(GBDT)调参小结

    在梯度提升树(GBDT)原理小结中,我们对GBDT的原理做了总结,本文我们就从scikit-learn里GBDT的类库使用方法作一个总结,主要会关注调参...

74730
来自专栏拂晓风起

验证码去噪 分离背景 分离文字 最大类间方差

12820

扫码关注云+社区

领取腾讯云代金券