趋近智
RNN 逐个处理序列元素并更新隐藏状态。我们将形式化每个时间步 在简单 RNN 单元内部进行的计算。
回想一下,该单元接收两个输入:序列的当前输入特征向量 (vector) 和在上一时间步计算的隐藏状态 。其目标是计算新的隐藏状态 ,此状态包含从过去到当前步的信息,并且可能包含与此特定时间步相关的输出 。
核心计算通常由以下两个方程定义:
计算新的隐藏状态 ():
计算输出 ():
我们来详细说明这些方程的每个组成部分:
: 这是当前时间步 的输入向量。如果您在处理文本,这可以是位置 处词语的嵌入 (embedding)向量。如果是时间序列数据,它可能是时间 的传感器读数。假设 的维度是 (即 )。
: 这是来自上一时间步 的隐藏状态向量。它用作网络的历史记忆。我们假设隐藏状态的大小是 (即 )。对于第一个时间步 (), 通常被初始化,常常是一个零向量。
: 这是为当前时间步 新计算的隐藏状态向量。它的大小也是 (即 )。
: 这是转换当前输入 的权重 (weight)矩阵。它连接输入层到隐藏层。其维度必须与矩阵乘法兼容:如果 是 维的,且 是 维的,那么 必须具有 的形状。
: 这是转换上一隐藏状态 的权重矩阵。它表示从上一时间步的隐藏层到当前时间步的隐藏层的循环连接。其维度必须将一个 维向量 () 连接到另一个 维向量 (),因此 具有 的形状。
: 这是添加到隐藏状态计算中的偏置 (bias)向量。它与隐藏状态具有相同的维度 (即 )。
: 这是按元素应用以计算隐藏状态的激活函数 (activation function)。在简单 RNN 中,这通常是双曲正切函数(tanh)。tanh 函数将值压缩到 [-1, 1] 的范围,这有助于调整流经网络的激活值。其他函数如 ReLU 也可能被使用,但 tanh 是基本 RNN 隐藏状态的传统选择。
: 这是在时间步 计算的输出向量。其维度,我们称之为 (即 ),取决于具体任务。例如,在语言建模中,您可能预测下一个词,因此 将是词汇量大小。在时间序列预测中,如果您预测单个值, 可能为 1。请注意,根据应用情况,不一定在每个时间步都需要输出。
: 这是转换当前隐藏状态 以生成输出 的权重矩阵。它连接隐藏层到输出层。要将 维隐藏状态转换为 维输出, 必须具有 的形状。
: 这是添加到输出计算中的偏置向量。它与输出具有相同的维度 (即 )。
: 这是按元素应用以计算最终输出 的激活函数。 的选择很大程度上取决于任务的性质。
softmax 函数。一个重要的方面是 参数 (parameter)共享。相同的一组权重矩阵 (,,) 和偏置向量 (,) 用于在每个时间步执行计算。这使得模型计算效率高,并使其能够将序列中某一点学到的模式推广到其他点,而与序列长度无关。网络学习一组单一的规则,用于如何根据当前输入和其记忆来更新状态并生成输出。
这是一个单个 RNN 单元内计算过程的可视化:
一个简单 RNN 单元内的计算流程。输入 和 分别通过权重矩阵 和 转换,与偏置 相加,经过激活函数 产生 。然后 通过 转换,与偏置 相加,并经过激活函数 产生 。
这些方程定义了信息通过 RNN 单元的单个时间步前向传播。在训练期间,网络的参数 (,,,,) 会进行调整,以最小化基于预测输出 与真实目标值对比的损失函数 (loss function)。此学习过程涉及计算梯度,在 RNN 的背景下,这需要一种称为随时间反向传播 (backpropagation)(BPTT)的技术,这是我们接下来将讨论的话题。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•