趋近智
循环神经网络 (neural network)(RNN)一步步处理序列,并使用其隐藏状态传递信息。那么网络是怎样学习的呢?就像前馈网络一样,RNN通过根据其产生的误差调整权重 (weight)来进行学习。对此的标准算法是反向传播 (backpropagation)。然而,RNN中的循环连接和共享权重需要进行修改:沿时间的反向传播(BPTT)。
设想您向RNN输入一个长度为的序列。如前所述,网络在每一步执行相同的计算,使用相同的权重集合()。为训练网络,我们首先需要计算一个损失,它衡量网络预测值()与该序列真实目标值之间的距离。此损失通常在整个序列上计算,常为每个时间步损失的总和或平均值。
BPTT的主要思路是应用微积分的链式法则,与标准反向传播一样,但要跨时间操作序列进行。为形象地说明这一点,可以想象将RNN针对特定输入序列进行“展开”。这会形成一个大型的、类似前馈的网络,其中每个时间步对应一个层。重要的一点是,权重在这些“层”之间是共享的。
让我们考虑梯度计算。最终时间步的误差直接取决于隐藏状态以及权重和。时间步的误差取决于,并可能通过循环连接(取决于)影响时间步的误差。BPTT通过计算总损失相对于每个时间步的输出和隐藏状态的梯度来运行,从最后一步开始,并向后移动到第一步。
损失相对于时间隐藏状态的梯度,表示为,依赖于两点:
第二点是“沿时间”的部分。梯度信号通过循环权重矩阵从向后流向。在数学上,这涉及到如下项:
这种传播一步步向后进行。
BPTT的反向传播过程。梯度(虚线红色)从每个时间步的损失流回,通过网络输出()和隐藏状态()。重要的是,梯度也通过循环连接(通过)向后流动,影响早期时间步的梯度计算。相对于共享权重(紫色线)的梯度在所有时间步累积。
BPTT的一个重要方面源于共享权重。由于在每个时间步都使用相同的权重矩阵()和偏置 (bias)向量 (vector)(),因此为特定权重计算的梯度需要考虑其在整个序列中的作用。因此,共享参数 (parameter)(例如)的最终梯度是相对于其在每个时间步的使用所计算的梯度之和。
、、和的计算方式类似。一旦这些总梯度计算完毕,就会执行标准的梯度下降 (gradient descent)更新(或其变体之一,如Adam或RMSprop)来调整网络参数。
这里代表任何共享参数,而是学习率。
尽管BPTT允许我们训练RNN,但这种在可能很长的序列上传播梯度的过程并非没有困难。随着梯度信号在许多时间步中向后传播,它可能呈指数级缩小至零(梯度消失)或呈指数级增大(梯度爆炸)。我们将在第4章检验这些训练上的难题及其影响。目前,主要观点是BPTT扩展了反向传播,以处理循环架构中固有的时间依赖性和共享参数。下一节将更仔细地讨论展开网络以促进此过程的实际方法。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•