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

在这个问题中,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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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