趋近智
基本循环神经网络 (RNN) 的结构包含了循环和隐状态。与信息严格单向流动的前馈网络不同,RNNs 包含一个循环,使得来自先前步骤的信息能够保留并影响当前步骤。这种内部记忆使得它们适合处理序列数据。
RNN 的核心是 RNN 单元。可以把这个单元看作是每个输入序列元素都会被重复使用的基本处理单元。在每个时间步 t,该单元接收两个输入:
根据这些输入,该单元执行两个主要计算:
其核心机制涉及使用特定的权重矩阵和激活函数来组合当前输入 xt 和先前隐状态 ht−1。
让我们分解一下在单个时间步 t 内一个简单 RNN 单元中发生的计算:
计算隐状态 (ht): 新的隐状态 ht 通过对当前输入 xt 和先前隐状态 ht−1 应用线性变换、添加偏置,然后将结果通过非线性激活函数(通常是 tanh 或 ReLU)计算得出。
公式通常为:
ht=tanh(Wxhxt+Whhht−1+bh)这里:
tanh 是激活函数的一个常见选择,它将值压缩到 -1 和 1 之间。计算输出 (yt): 当前时间步的输出 yt 通常通过对新计算出的隐状态 ht 应用另一个线性变换、添加偏置,并根据具体任务(例如,如果任务是每步分类,则为 softmax 函数)可能通过另一个激活函数来计算。
公式通常是:
yt=activation(Whyht+by)这里:
activation 是适用于该问题的输出激活函数(例如,回归任务使用恒等函数,多类别分类使用 softmax)。为了更好地理解 RNN 如何处理序列,我们通常会沿时间“展开”网络。这意味着将网络绘制得好像是一个深度前馈网络,其中一层对应一个时间步。
一个沿时间展开的 RNN。每个 RNN 单元 块代表一个时间步的处理,它接收输入 xt 和先前隐状态 ht−1 来生成输出 yt 和下一个隐状态 ht。注意隐状态 h 从一个时间步传递到下一个时间步(虚线所示)。重要的一点是,相同的权重矩阵 (Wxh, Whh, Why) 在所有时间步中都被使用。
展开所体现的最重要方面是参数共享。权重矩阵 (Wxh, Whh, Why) 和偏置向量 (bh, by) 在每个时间步都是相同的。这使得模型高效,因为它不需要为每个输入位置单独设置一组参数。它学习了一种可以重复应用于整个序列的通用变换。
隐状态 ht 充当网络的记忆。它捕获来自所有先前时间步 (x0,x1,...,xt−1) 的信息,并将其与当前输入 xt 结合,以影响当前输出 yt 和随后的隐状态 ht+1。这种简单结构使得 RNN 能够建模序列内部的依赖关系,支撑着序列数据的处理。然而,正如我们接下来将看到的,这种基本架构在处理长序列时会遇到某些困难。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造