深度学习系列(6):递归神经网络
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
递归神经网网络的训练算法和循环神经网网络类似,两者不不同之处在于,前者需要将残差\selta 从根 节点反向传播到各个子子节点,而而后者是将残差δ从当前时刻tk 反向传播到初始时刻t1 。 下面面,我们介绍适用用于递归神经网网络的训练算法,也就是BPTS算法。
3.1 误差项的传递
首首先,我们先推导将误差从父父节点传递到子子节点的公式,如下图:
这就是第l 层权重项的梯度计算公式。我们知道,由于权重W 是在所有层共享的,所以和循环神 经网网络一一样,递归神经网网络的最终权重梯度是各个层权重梯度之和。即:
c1 p = tan h W +b ( [ c2 ] )
该式就是递归神经网网络的前向计算算法,它和全连接神经网网络没有什什么区别,只是在输入入的过程 中需要根据输入入的树结构依次输入入每个子子节点。 需要特别注意的是,递归神经网网络的权重W 和偏置项b 在所有节点都是共享的。
三、递归神经网网络的训练
c1 p = tan h W +b ( [ c2 ] )
在上式中,tanh是激活函数(当然也可以用用其它的激活函数),是偏置项,它也是一一个维度为的 向量量。 然后,我们把产生生的父父节点的向量量和其他子子节点的向量量再次作为网网络的输入入,再次产生生它们的父父 节点。如此递归下去,直至至整棵树处理理完毕。最终,我们将得到根节点的向量量,我们可以认为它 是对整棵树的表示,这样我们就实现了了把树映射为一一个向量量。在下图中,我们使用用递归神经网网络 处理理一一棵树,最终得到的向量量p3 ,就是对整棵树的表示:
netp = W
在上述式子子里里里,netp 、c 1 、c 2 都是向量量,而而W 是矩阵。为了了看清楚它们的关系,我们将其展开:
⎡ netp1 ⎤ ⎡ wp1c11 ⎢ ⎥ ⎢ net ⎢ p2 ⎥ ⎢ wp2c11 ⎢ ··· ⎥=⎢ ··· ⎢ ⎥ ⎢ ⎣ netpn ⎦ ⎣ wpnc11
wp1c12 wp2c12 ··· wpnc12
一一、递归神经网网络的定义
因为神经网网络的输入入层单元个数是固定的,因此必须用用循环或者递归的方方式来处理理⻓长度可变的输 入入。循环神经网网络实现了了前者,通过将⻓长度不不定的输入入分割为等⻓长度的小小块,然后再依次的输入入 到网网络中,从而而实现了了神经网网络对变⻓长输入入的处理理。一一个典型的例例子子是,当我们处理理一一句句话的时 候,我们可以把一一句句话看作是词组成的序列列,然后,每次向循环神经网网络输入入一一个词,如此循环 直至至整句句话输入入完毕,循环神经网网络将产生生对应的输出。如此,我们就能处理理任意⻓长度的句句子子 了了。
从上图我们可以看到,递归神经网网络将所有的词、句句都映射到一一个2维向量量空间中。句句子子“the country of my birth”和句句子子“the place where I was born”的意思是非非常接近的,所以表示它们的 两个向量量在向量量空间中的距离很近。另外两个词“Germany”和“France”因为表示的都是地点,它 们的向量量与上面面两句句话的向量量的距离,就比比另外两个表示时间的词“Monday”和“Tuesday”的向量量 的距离近得多。这样,通过向量量的距离,就得到了了一一种语义的表示。 上图还显示了了自自然语言言可组合的性质:词可以组成句句、句句可以组成段落、段落可以组成篇章,而而 更更高高层的语义取决于底层的语义以及它们的组合方方式。递归神经网网络是一一种表示学习,它可以将 词、句句、段、篇按照他们的语义映射到同一一个向量量空间中,也就是把可组合(树/图结构)的信 息表示为一一个个有意义的向量量。比比如上面面这个例例子子,递归神经网网络把句句子子"the country of my birth"表示为二二维向量量[1,5]。有了了这个『编码器器』之后,我们就可以以这些有意义的向量量为基础 去完成更更高高级的任务(比比如情感分析等)。如下图所示,递归神经网网络在做情感分析时,可以比比 较好的处理理否定句句,这是胜过其他一一些模型的:
它就是将误差项从父父节点传递到其子子节点的公式。注意上式中的netc 也是将两个子子结点的加权输入入 有了了传递一一层的公式,我们就不不难写出逐层传递的公式。
netc1 和netc2 连在一一起的向量量。
上图是在树型结构中反向传递项的全景图,反复应用用上式,在已知δp 的情况下,我们不不难算出
(3)
W2 ,如下图所示:
显然,子子矩阵W1 和W2 分别对应子子节点c 1 和c 2 的到父父节点p权重。则矩阵Uj 为:
Uj = WjT
也就是说,将误差项反向传递到相应子子节点c j 的矩阵Uj 就是其对应权重矩阵Wj 的转置。 现在,我们设netc百度文库 是子子节点c j 的加权输入入,f 是子子节点c 的激活函数,则:
c1 和c2 分别是表示两个子子节点的向量量,p是表示父父节点的向量量。子子节点和父父节点组成一一个全连接
神经网网络,也就是子子节点的每个神经元都和父父节点的每个神经元两两相连。我们用用矩阵W 表示这 些连接上的权重,它的维度将是d × 2d ,其中,d 表示每个节点的维度。父父节点的计算公式可以 写成:
··· ··· ··· ···
在上面面的公式中,pi 表示父父节点p的第i个分量量;c 1i 表示子子节点的第i个分量量;c 2i 表示c 2 子子节点的第
i 个分量量;wpi cjk 表子子节点cj 的第k个分量量到父父节点p的第i个分量量的权重。根据上面面展开后的矩阵乘 法形式,我们不不难看出,对于子子节点c jk 来说,它会影响父父节点所有的分量量。因此,我们求误差 函数E对c jk 的导数时,必须用用到全导数公式,也就是: ∂E ∂E ∂netpi = = δ w ∑ ∂netpi ∂cjk ∑ pi pi cjk ∂cjk i i
δ(1) p 为:
′ (2) δ(2) = W T δ(3) p °f (net ) (2) δ(2) p = [δ ] p ′ (1) δ(1) = W T δ(2) p °f (net ) (1) δ(1) p = [δ ] p
在上面面的公式中
δ
p
(2)
=
[ δ(2) p ]
δ(2) c
,[δ(2) ] 表示取向量量δ(2) 属于节点p的部分。
深度学习系列列(6):递归神经网网络
上一一篇我们学习了了循环神经网网络,它可以用用来处理理包含序列列的信息。然而而,除此之外,信息往往 还存在着诸如树结构、图结构等更更复杂的结构。对于这种复杂的结构。循环神经网网络就无无能为力力力 了了。本文文学习一一种更更为强大大、复杂的神经网网络:递归神经网网络(Recursive Neural NetWork, RNN),以及它的训练算法BPTS(Back Propagation Through Structure)。顾名思义,递归神 经网网络可以处理理诸如树、图这样的递归网网络。
举个例例子子,我们使用用递归神将网网络将"两个外语学校的学生生"映射为一一个向量量,如下图所示:
最后得到的向量量p3 就是对整个句句子子"两个外语学校的学生生"的表示。由于整个结构是递归的,不不仅 短语"外语学院的学生生"的表示,而而向量量p1 是短语"外语学院的"的表示。
仅是根节点,事实上每个节点都是以其为根的子子树的表示。比比如,在左边的这棵树中,向量量p2 是
在上图中,蓝色色表示正面面评价,红色色表示负面面评价。每个节点是一一个向量量,这个向量量表达了了以它 为根的子子树的情感评价。比比如"intelligent humor"是正面面评价,而而"care about cleverness wit or any other kind of intelligent humor"是中性评价。我们可以看到,模型能够正确的处理理doesn't的 含义,将正面面评价转变为负面面评价。 尽管递归神经网网络具有更更为强大大的表示能力力力,但是在实际应用用中并不不太流行行行。其中一一个主要原因 是,递归神经网网络的输入入是树/图结构,而而这种结构需要花费很多人人工工去标注。想象一一下,如果 我们用用循环神经网网络处理理句句子子,那么我们可以直接把句句子子作为输入入。然而而,如果我们用用递归神经 网网络处理理句句子子,我们就必须把每个句句子子标注为语法解析树的形式,这无无疑要花费非非常大大的精力力力。 很多时候,相对于递归神经网网络能够带来的性能提升,这个投入入是不不太划算的。
3.2 权重梯度的计算
根据加权输入入的计算公式:
(l) netp = W c(l) + b
其中,netp 表示第l 层的父父节点的加权输入入,c (l) 表示第l 层的子子节点。W是权重矩阵,b 是偏置 项,将其展开可得:
(l)
ne
=
∑
ji
+
j
l = netp j
∑
i
wji cl i + bj
那么,我们可以求得误差函数在第l 层对权重的梯度为:
定义δp 为误差函数E相对于父父节点p的加权输入入netp 的导数,即:
δp =
设netp 是父父节点的加权输入入,则
∂E ∂netp c1 +b [ c2 ] ⎡ netc11 ⎤ ⎢ ⎥ wp1c21 · ·· ⎤ ⎢ netc12 ⎥ ⎥ wp2c21 · ·· ⎥ ⎢ · · · ⎥ ⎢ ⎥ netc21 ⎥ ··· ⎥ ⎢ ⎥⎢ ⎥ wpnc21 · ·· ⎦ ⎢ netc22 ⎥ ⎣ ··· ⎦
有了了上式,我们就可以把它表示为矩阵形式,从而而得到一一个向量量化表达:
∂E = Uj δp ∂c j
其中,矩阵Uj 是从矩阵W 中提取部分元素组成的矩阵。其单元为u jik = wpk c ji 上式看上出可能有 点抽象,从下图,我们可以直观的看到Uj 到底是啥。首首先我们把W 矩阵拆分为两个矩阵W1 和
cj = f (netcj )
这样,我们得到:
δcj =
∂E ∂E ∂ c j = = WjT δp °f ′ (netcj ) ∂netcj ∂cj ∂netcj [ δc2 ] δc1
如果我们将不不同子子节点c j 对应的误差项δcj 连接成一一个向量量
δc =
那么,上式可以写成
δc = W T δp °f ′ (netc )
二二、递归神经网网络的前向计算
接下来,我们详细介绍一一下递归神经网网络是如何处理理树/图结构的信息的。在这里里里,我们以处理理 树型信息为例例进行行行介绍。 递归神经网网络的输入入是两个子子节点(也可以是多个),输出就是将这两个子子节点编码后产生生的父父 节点,父父节点的维度和每个子子节点是相同的。如下图所示:
络通常都会获得不不错的结果。 递归神经网网络可以把一一个树、图结构信息编码为一一个向量量,也就是把信息映射到一一个语义向量量空 间中。这个语义向量量空间满足足某类性质,比比如语义相似的向量量距离更更近。也就是说,如果两句句话 (尽管内容不不容)它的意思是相似的,那么把它们分别编码后的两个向量量的距离也更更近;反之, 如果两句句话的意思截然不不同,那么编码后的距离则更更远。如下图所示:
l) ∂w ( ji
∂E
=
(l) ∂netp j
∂E
(l) ∂netp j l) ∂w ( ji
l) (l) = δ( pj · c i
上式是针对一一个权重项wji 的公式,现在需要把它扩展为对所有的权重项的公式。我们可以把上 式写成写成矩阵的形式(在下面面的公式中,m=2n):
∂E (l) (l ) T = δ · c ( ) ∂W (l)
如下图所示: 然而而,有时候把句句子子看作是词的序列列是不不够的,比比如下面面这句句话“两个外语学院的学生生”:
上图显示了了这句句话的两个不不同的语法解析树。可以看出这句句话有歧义,不不同的语法解析树则对应 了了不不同的意思。一一个是『两个外语学院的/学生生』,也就是学生生可能有许多,但他们来自自于两所 外语学校;另一一个是『两个/外语学院的学生生』,也就是只有两个学生生,他们是外语学院的。为 了了能够让模型区分出两个不不同的意思,我们的模型必须能够按照树结构去处理理信息,而而不不是序 列列,这就是递归神经网网络的作用用。当面面对按照树/图结构处理理信息更更有效的任务时,递归神经网网
3.1 误差项的传递
首首先,我们先推导将误差从父父节点传递到子子节点的公式,如下图:
这就是第l 层权重项的梯度计算公式。我们知道,由于权重W 是在所有层共享的,所以和循环神 经网网络一一样,递归神经网网络的最终权重梯度是各个层权重梯度之和。即:
c1 p = tan h W +b ( [ c2 ] )
该式就是递归神经网网络的前向计算算法,它和全连接神经网网络没有什什么区别,只是在输入入的过程 中需要根据输入入的树结构依次输入入每个子子节点。 需要特别注意的是,递归神经网网络的权重W 和偏置项b 在所有节点都是共享的。
三、递归神经网网络的训练
c1 p = tan h W +b ( [ c2 ] )
在上式中,tanh是激活函数(当然也可以用用其它的激活函数),是偏置项,它也是一一个维度为的 向量量。 然后,我们把产生生的父父节点的向量量和其他子子节点的向量量再次作为网网络的输入入,再次产生生它们的父父 节点。如此递归下去,直至至整棵树处理理完毕。最终,我们将得到根节点的向量量,我们可以认为它 是对整棵树的表示,这样我们就实现了了把树映射为一一个向量量。在下图中,我们使用用递归神经网网络 处理理一一棵树,最终得到的向量量p3 ,就是对整棵树的表示:
netp = W
在上述式子子里里里,netp 、c 1 、c 2 都是向量量,而而W 是矩阵。为了了看清楚它们的关系,我们将其展开:
⎡ netp1 ⎤ ⎡ wp1c11 ⎢ ⎥ ⎢ net ⎢ p2 ⎥ ⎢ wp2c11 ⎢ ··· ⎥=⎢ ··· ⎢ ⎥ ⎢ ⎣ netpn ⎦ ⎣ wpnc11
wp1c12 wp2c12 ··· wpnc12
一一、递归神经网网络的定义
因为神经网网络的输入入层单元个数是固定的,因此必须用用循环或者递归的方方式来处理理⻓长度可变的输 入入。循环神经网网络实现了了前者,通过将⻓长度不不定的输入入分割为等⻓长度的小小块,然后再依次的输入入 到网网络中,从而而实现了了神经网网络对变⻓长输入入的处理理。一一个典型的例例子子是,当我们处理理一一句句话的时 候,我们可以把一一句句话看作是词组成的序列列,然后,每次向循环神经网网络输入入一一个词,如此循环 直至至整句句话输入入完毕,循环神经网网络将产生生对应的输出。如此,我们就能处理理任意⻓长度的句句子子 了了。
从上图我们可以看到,递归神经网网络将所有的词、句句都映射到一一个2维向量量空间中。句句子子“the country of my birth”和句句子子“the place where I was born”的意思是非非常接近的,所以表示它们的 两个向量量在向量量空间中的距离很近。另外两个词“Germany”和“France”因为表示的都是地点,它 们的向量量与上面面两句句话的向量量的距离,就比比另外两个表示时间的词“Monday”和“Tuesday”的向量量 的距离近得多。这样,通过向量量的距离,就得到了了一一种语义的表示。 上图还显示了了自自然语言言可组合的性质:词可以组成句句、句句可以组成段落、段落可以组成篇章,而而 更更高高层的语义取决于底层的语义以及它们的组合方方式。递归神经网网络是一一种表示学习,它可以将 词、句句、段、篇按照他们的语义映射到同一一个向量量空间中,也就是把可组合(树/图结构)的信 息表示为一一个个有意义的向量量。比比如上面面这个例例子子,递归神经网网络把句句子子"the country of my birth"表示为二二维向量量[1,5]。有了了这个『编码器器』之后,我们就可以以这些有意义的向量量为基础 去完成更更高高级的任务(比比如情感分析等)。如下图所示,递归神经网网络在做情感分析时,可以比比 较好的处理理否定句句,这是胜过其他一一些模型的:
它就是将误差项从父父节点传递到其子子节点的公式。注意上式中的netc 也是将两个子子结点的加权输入入 有了了传递一一层的公式,我们就不不难写出逐层传递的公式。
netc1 和netc2 连在一一起的向量量。
上图是在树型结构中反向传递项的全景图,反复应用用上式,在已知δp 的情况下,我们不不难算出
(3)
W2 ,如下图所示:
显然,子子矩阵W1 和W2 分别对应子子节点c 1 和c 2 的到父父节点p权重。则矩阵Uj 为:
Uj = WjT
也就是说,将误差项反向传递到相应子子节点c j 的矩阵Uj 就是其对应权重矩阵Wj 的转置。 现在,我们设netc百度文库 是子子节点c j 的加权输入入,f 是子子节点c 的激活函数,则:
c1 和c2 分别是表示两个子子节点的向量量,p是表示父父节点的向量量。子子节点和父父节点组成一一个全连接
神经网网络,也就是子子节点的每个神经元都和父父节点的每个神经元两两相连。我们用用矩阵W 表示这 些连接上的权重,它的维度将是d × 2d ,其中,d 表示每个节点的维度。父父节点的计算公式可以 写成:
··· ··· ··· ···
在上面面的公式中,pi 表示父父节点p的第i个分量量;c 1i 表示子子节点的第i个分量量;c 2i 表示c 2 子子节点的第
i 个分量量;wpi cjk 表子子节点cj 的第k个分量量到父父节点p的第i个分量量的权重。根据上面面展开后的矩阵乘 法形式,我们不不难看出,对于子子节点c jk 来说,它会影响父父节点所有的分量量。因此,我们求误差 函数E对c jk 的导数时,必须用用到全导数公式,也就是: ∂E ∂E ∂netpi = = δ w ∑ ∂netpi ∂cjk ∑ pi pi cjk ∂cjk i i
δ(1) p 为:
′ (2) δ(2) = W T δ(3) p °f (net ) (2) δ(2) p = [δ ] p ′ (1) δ(1) = W T δ(2) p °f (net ) (1) δ(1) p = [δ ] p
在上面面的公式中
δ
p
(2)
=
[ δ(2) p ]
δ(2) c
,[δ(2) ] 表示取向量量δ(2) 属于节点p的部分。
深度学习系列列(6):递归神经网网络
上一一篇我们学习了了循环神经网网络,它可以用用来处理理包含序列列的信息。然而而,除此之外,信息往往 还存在着诸如树结构、图结构等更更复杂的结构。对于这种复杂的结构。循环神经网网络就无无能为力力力 了了。本文文学习一一种更更为强大大、复杂的神经网网络:递归神经网网络(Recursive Neural NetWork, RNN),以及它的训练算法BPTS(Back Propagation Through Structure)。顾名思义,递归神 经网网络可以处理理诸如树、图这样的递归网网络。
举个例例子子,我们使用用递归神将网网络将"两个外语学校的学生生"映射为一一个向量量,如下图所示:
最后得到的向量量p3 就是对整个句句子子"两个外语学校的学生生"的表示。由于整个结构是递归的,不不仅 短语"外语学院的学生生"的表示,而而向量量p1 是短语"外语学院的"的表示。
仅是根节点,事实上每个节点都是以其为根的子子树的表示。比比如,在左边的这棵树中,向量量p2 是
在上图中,蓝色色表示正面面评价,红色色表示负面面评价。每个节点是一一个向量量,这个向量量表达了了以它 为根的子子树的情感评价。比比如"intelligent humor"是正面面评价,而而"care about cleverness wit or any other kind of intelligent humor"是中性评价。我们可以看到,模型能够正确的处理理doesn't的 含义,将正面面评价转变为负面面评价。 尽管递归神经网网络具有更更为强大大的表示能力力力,但是在实际应用用中并不不太流行行行。其中一一个主要原因 是,递归神经网网络的输入入是树/图结构,而而这种结构需要花费很多人人工工去标注。想象一一下,如果 我们用用循环神经网网络处理理句句子子,那么我们可以直接把句句子子作为输入入。然而而,如果我们用用递归神经 网网络处理理句句子子,我们就必须把每个句句子子标注为语法解析树的形式,这无无疑要花费非非常大大的精力力力。 很多时候,相对于递归神经网网络能够带来的性能提升,这个投入入是不不太划算的。
3.2 权重梯度的计算
根据加权输入入的计算公式:
(l) netp = W c(l) + b
其中,netp 表示第l 层的父父节点的加权输入入,c (l) 表示第l 层的子子节点。W是权重矩阵,b 是偏置 项,将其展开可得:
(l)
ne
=
∑
ji
+
j
l = netp j
∑
i
wji cl i + bj
那么,我们可以求得误差函数在第l 层对权重的梯度为:
定义δp 为误差函数E相对于父父节点p的加权输入入netp 的导数,即:
δp =
设netp 是父父节点的加权输入入,则
∂E ∂netp c1 +b [ c2 ] ⎡ netc11 ⎤ ⎢ ⎥ wp1c21 · ·· ⎤ ⎢ netc12 ⎥ ⎥ wp2c21 · ·· ⎥ ⎢ · · · ⎥ ⎢ ⎥ netc21 ⎥ ··· ⎥ ⎢ ⎥⎢ ⎥ wpnc21 · ·· ⎦ ⎢ netc22 ⎥ ⎣ ··· ⎦
有了了上式,我们就可以把它表示为矩阵形式,从而而得到一一个向量量化表达:
∂E = Uj δp ∂c j
其中,矩阵Uj 是从矩阵W 中提取部分元素组成的矩阵。其单元为u jik = wpk c ji 上式看上出可能有 点抽象,从下图,我们可以直观的看到Uj 到底是啥。首首先我们把W 矩阵拆分为两个矩阵W1 和
cj = f (netcj )
这样,我们得到:
δcj =
∂E ∂E ∂ c j = = WjT δp °f ′ (netcj ) ∂netcj ∂cj ∂netcj [ δc2 ] δc1
如果我们将不不同子子节点c j 对应的误差项δcj 连接成一一个向量量
δc =
那么,上式可以写成
δc = W T δp °f ′ (netc )
二二、递归神经网网络的前向计算
接下来,我们详细介绍一一下递归神经网网络是如何处理理树/图结构的信息的。在这里里里,我们以处理理 树型信息为例例进行行行介绍。 递归神经网网络的输入入是两个子子节点(也可以是多个),输出就是将这两个子子节点编码后产生生的父父 节点,父父节点的维度和每个子子节点是相同的。如下图所示:
络通常都会获得不不错的结果。 递归神经网网络可以把一一个树、图结构信息编码为一一个向量量,也就是把信息映射到一一个语义向量量空 间中。这个语义向量量空间满足足某类性质,比比如语义相似的向量量距离更更近。也就是说,如果两句句话 (尽管内容不不容)它的意思是相似的,那么把它们分别编码后的两个向量量的距离也更更近;反之, 如果两句句话的意思截然不不同,那么编码后的距离则更更远。如下图所示:
l) ∂w ( ji
∂E
=
(l) ∂netp j
∂E
(l) ∂netp j l) ∂w ( ji
l) (l) = δ( pj · c i
上式是针对一一个权重项wji 的公式,现在需要把它扩展为对所有的权重项的公式。我们可以把上 式写成写成矩阵的形式(在下面面的公式中,m=2n):
∂E (l) (l ) T = δ · c ( ) ∂W (l)
如下图所示: 然而而,有时候把句句子子看作是词的序列列是不不够的,比比如下面面这句句话“两个外语学院的学生生”:
上图显示了了这句句话的两个不不同的语法解析树。可以看出这句句话有歧义,不不同的语法解析树则对应 了了不不同的意思。一一个是『两个外语学院的/学生生』,也就是学生生可能有许多,但他们来自自于两所 外语学校;另一一个是『两个/外语学院的学生生』,也就是只有两个学生生,他们是外语学院的。为 了了能够让模型区分出两个不不同的意思,我们的模型必须能够按照树结构去处理理信息,而而不不是序 列列,这就是递归神经网网络的作用用。当面面对按照树/图结构处理理信息更更有效的任务时,递归神经网网