现在我们退一步,了解循环神经网络的优点在哪。与传统神经网络最大的不同就是循环神经网络可以接收输入序列(我们例子中的词)。你可以将其与典型的卷积神经网络对比,其只能是将单一图片作为输入。然而使用循环神经网络,输入可以小到短句,直播,大到有 5 个段落的文章。此外,该输入的序列顺序能极大地影响到权重矩阵和隐藏向量在训练中如何改变。隐藏状态在训练后期望能从过去(前面的时间步骤)获取信息。 门控循环单元(GRU) 现在让我们看一个门控循环单元(gated recurrent unit/GRU)。这个单元的目标是提供一种更复杂的方法来计算我们在循环神经网络中的隐藏状态向量(hidden state vectors )。这种方法将允许我们储存信息并捕获长距依赖性(long distance dependencies)。让我们想象下为什么长期依赖性(long term dependencies)在传统的循环神经网络构架中存在问题。在反向传播中,误差将流经循环神经网络,从最近的时间步骤到最早的时间步骤。如果初始梯度是较小的数字(如小于0.25),那么在通过第三或第四模块时,梯度实际上会消失(链式规则与梯度一起乘积),因此较早时间步骤的隐藏状态将不会更新 。 在传统循环神经网络中,隐藏状态向量是通过该公式计算的:
GRU提供了一个不同的方式计算隐藏状态向量h(t),该计算分为三个分量,一个更新门(update gate)、一个重置门(reset gate)和一个新的记忆存储器(memory container)。两个门都是输入词向量和在前时间步骤的隐藏状态函数:
关键区别是每个门使用不同的权重,这由不同上标来表示。 更新门(update gate)使用Wz和Uz,而重置门(reset gate)使用Wr和Ur。 现在,新的记忆存储器(memory container)就是通过以下方式来计算的:
(空心点指的是Hadamard 积) 现在,如果仔细看看公式,你会发现如果重置门的值接近0,那么这整个项也会变成0,因此忽略了在先前时间步ht-1的信息。在这种情况下,计算单元仅仅只是新词向量xt的函数。 h(t)的最终公式如下:
ht 是一个有三个部分的函数:重置门、更新门以及记忆存储器。理解这一点的最佳方式就是当 zt 接近1 以及 0 的时候,视觉化所发生的情况。当 zt 靠近1,新的隐藏层向量 ht 几乎取决于之前的隐藏层,而且因为(1-zt) 变成 0,我们忽略了当前记忆存储。当 zt 接近 0 时,新的隐藏层向量几乎取决于当前记忆存储,我们忽略了之前的隐藏层状态。以一种直觉的方式观察这三个组成部分,可以归纳为以下: 1.更新门(Update Gate): 如果zt趋向于1,ht就完全忽略现在的词向量,仅仅只是复制前隐藏状态(如果不是太理解,请查看ht方程并注意当zt趋向于1时,1-zt有什么改变)。 如果zt趋向于0,ht就完全忽略前一时间步骤的隐藏状态,仅仅只依赖于新的记忆存储器。 此门控能让模型控制前一隐藏状态的信息多大程度上影响现在的隐藏状态。 2.重置门(Reset Gate): 如果rt趋向于1,记忆存储器将保持前一隐藏状态的信息。 如果rt趋向于0,记忆存储器将忽略前一隐藏状态的信息。 此门控能允许模型在丢弃一些对未来不相干的信息。 3.记忆存储器(Memory Container): 依赖于重置门。 一个通常用来说明 GRU 有效的例子如下:假设你遇到下面一段话 (责任编辑:本港台直播) |