什么是时间反向传播中的误差项,如果我只有一个输出?

在这个问题中,RNN: 当仅在最终时间步获取输出时的时间反向传播,我看到如果我在最终时间步T只有一个输出,即y(T),那么早期时间步的误差是不需要的。

那么,损失函数项E是否应该是E = E(T)的值,而不是E = sum(E(t)),其中T是从开始到最终时间步的时间扫描?


回答:

我将尝试澄清一些混淆。这是标准的展开RNN:

rnn

假设o[t+1]是最后一步。

当网络实际使用所有输出时,误差将通过所有垂直边反向传播:从o[t+1]s[t+1],从o[t]s[t],…,从o[0]s[0]。此外,除了最后一个单元外,所有单元都会从后续单元接收误差:从s[t+1]s[t],从s[t]s[t-1],等等。

很容易注意到所有单元s[0]s[t]接收到两个误差消息,并且它们会被加起来(因此是求和)。

现在,Denny Britz讨论的情况是网络使用o[t+1],而忽略所有其他输出。这相当于从o[t]o[t-1]、…、o[0]流出的梯度为零。技术上,s[i]接收到的总梯度仍然是一个和,但它是一个元素的和(和一个零)。实际上,误差将这样反向传播:

o[t+1] -> s[t+1] -> s[t] -> s[t-1] -> ... -> s[0]

其他几点说明:

那么,损失函数项E是否应该是E = E(T)的值,而不是E = sum(E(t))

在这个例子中,我没有触及损失函数。损失位于上面,它比较输出和标签,并启动第一个反向消息。在两种情况下都是相同的。区别仅在于误差消息是通过所有o[i]流动,还是仅通过o[t+1]流动。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注