循环神经网络
在之前的章节中,我们使用了丰富的文本语义表示,并在嵌入层之上使用了一个简单的线性分类器。这种架构能够捕捉句子中词语的整体意义,但它没有考虑到词语的顺序,因为嵌入层上的聚合操作会丢失原始文本中的顺序信息…
课程内容
循环神经网络
课前测验
在之前的章节中,我们使用了丰富的文本语义表示,并在嵌入层之上使用了一个简单的线性分类器。这种架构能够捕捉句子中词语的整体意义,但它没有考虑到词语的顺序,因为嵌入层上的聚合操作会丢失原始文本中的顺序信息。由于这些模型无法建模词语的顺序,它们无法解决更复杂或更模糊的任务,例如文本生成或问答。
为了捕捉文本序列的意义,我们需要使用另一种神经网络架构,称为循环神经网络(Recurrent Neural Network,RNN)。在 RNN 中,我们将句子逐个符号输入网络,网络会生成某种状态,然后将该状态与下一个符号一起再次输入网络。

图片由作者提供
给定输入序列的标记 X0,...,Xn,RNN 会创建一个神经网络块的序列,并通过反向传播对该序列进行端到端训练。每个网络块以 (Xi,Si) 为输入,并生成 Si+1 作为结果。最终状态 Sn 或 (输出 Yn) 会进入线性分类器以生成结果。所有网络块共享相同的权重,并通过一次反向传播训练端到端。
由于状态向量 S0,...,Sn 会通过网络传递,RNN 能够学习词语之间的顺序依赖关系。例如,当单词 not 出现在序列中的某处时,它可以学习在状态向量中否定某些元素,从而实现否定。
✅ 由于上图中所有 RNN 块的权重是共享的,因此可以将整个图表示为一个带有循环反馈的单块(右侧),将网络的输出状态反馈到输入。
RNN 单元的结构
让我们看看一个简单的 RNN 单元是如何组织的。它接受前一个状态 Si-1 和当前符号 Xi 作为输入,并生成输出状态 Si(有时我们也对其他输出 Yi 感兴趣,例如在生成网络中)。
一个简单的 RNN 单元内部有两个权重矩阵:一个用于转换输入符号(我们称之为 W),另一个用于转换输入状态(H)。在这种情况下,网络的输出计算公式为 σ(W×Xi+H×Si-1+b),其中 σ 是激活函数,b 是额外的偏置。
