趋近智
在我们了解驱动Transformer模型的注意力机制之前,了解序列数据传统上是如何处理的是有益的。对于翻译句子或预测文本中下一个词这样的任务,元素的顺序非常重要。前馈神经网络独立处理输入,天生不适合捕获这些序列依赖。这促成了循环神经网络 (RNN) 的出现。
RNN的标志性特点是其内部的“记忆”或隐藏状态。与标准前馈网络不同,RNN逐个元素(例如,逐词)处理序列。在每一步,它接收当前输入元素和上一步的隐藏状态,以计算新的隐藏状态。这个隐藏状态就像是目前为止序列中已见信息的持续摘要。
可以将其想象成阅读句子:你逐个词处理,任何时候的理解都取决于你已经读过的词。RNN的隐藏状态试图捕捉这种变化的语境。
其核心是,RNN单元在每个时间步执行相同的计算,但其内部状态根据输入序列而变化。如果我们有一个输入序列 x=(x1,x2,...,xT),RNN在时间步 t 更新其隐藏状态 ht,使用当前输入 xt 和前一个隐藏状态 ht−1。这种更新的常见公式是:
ht=tanh(Whhht−1+Wxhxt+bh)在这里:
RNN还可以选择在每个时间步生成输出 yt,通常根据隐藏状态计算:
yt=Whyht+by这里 Why 是隐藏到输出的权重矩阵,by 是输出偏置。是否在每一步都需要输出取决于具体的任务(例如,在每一步预测下一个词,或对整个序列进行分类)。
通过时间“展开”RNN通常更容易理解其运作。想象为每个时间步创建一个独立的网络副本,隐藏状态从一个副本传递到下一个。
一个RNN随时间展开的示意图。相同的RNN单元(权重共享)处理输入 xt 和前一个隐藏状态 ht−1,生成新的隐藏状态 ht 和输出 yt。隐藏状态从一个时间步流向下一个时间步。
这种循环结构使得RNN理论上能够模拟序列中任意长度的依赖关系,因为信息可以通过隐藏状态传播。多年来,RNN(以及其更复杂的变体,如LSTMs和GRUs,它们旨在更好地处理长距离依赖)是序列建模任务的常规选择。
然而,正如我们将在下一节中看到,这样纯粹地按顺序处理序列会带来其自身的一些重要挑战,尤其是在处理非常长的序列或复杂依赖关系时。这些局限性促使了替代架构的出现,最终促成了Transformer。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造