前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Rolling and Unrolling RNNs

Rolling and Unrolling RNNs

作者头像
哒呵呵
发布2018-08-06 17:32:30
1.2K0
发布2018-08-06 17:32:30
举报
文章被收录于专栏:鸿的学习笔记

#这一章是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。只要你愿意处理一些复杂的标记,可以直接从原始图计算权重矩阵的梯度。但是,展开是一个很好的方式来思考训练过程。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鸿的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
灰盒安全测试
腾讯知识图谱(Tencent Knowledge Graph,TKG)是一个集成图数据库、图计算引擎和图可视化分析的一站式平台。支持抽取和融合异构数据,支持千亿级节点关系的存储和计算,支持规则匹配、机器学习、图嵌入等图数据挖掘算法,拥有丰富的图数据渲染和展现的可视化方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档