在序列到序列的学习中,当我们预测超过一步时,我们应该在每个输出之后优化神经网络还是应该一起优化每个序列的输出?
就像我为每个序列预测 10 个步骤一样,我应该针对这 10 个步骤中的每一个进行优化还是一起优化所有步骤?
澄清一下:在下图中,“I”是进入下一个级别的预测。但是,在训练的同时,我们不应该为下一个时间步提供基本事实而不是预测吗?
在序列到序列的学习中,当我们预测超过一步时,我们应该在每个输出之后优化神经网络还是应该一起优化每个序列的输出?
就像我为每个序列预测 10 个步骤一样,我应该针对这 10 个步骤中的每一个进行优化还是一起优化所有步骤?
澄清一下:在下图中,“I”是进入下一个级别的预测。但是,在训练的同时,我们不应该为下一个时间步提供基本事实而不是预测吗?
不,序列到序列的关键在于您在序列结束时进行评估。该序列被认为是不可分割的。
因此,如果您要预测 10 个序列,您只需对所有十个步骤一起评估(例如计算损失)。
假设您的序列长度为 10。
那么你的输入和预测是:
input sample 0-9 -> predict 10-19 -> calculate loss
input sample 10-19 (ground truth) -> predict 20-29 -> calculate loss
如果您的数据允许,您可以实现滚动窗口。
input sample 0-9 -> predict 10-19 -> calculate loss,
input sample 1-10 -> predict 11-20 -> calculate loss,
input sample 2-11 -> predict 12-21 -> calculate loss,
问题是如果您的序列长度为 10,但由于某种原因,您只需要来自一个数据点(一个 10 的序列)的 30 个预测(3 个序列)。
那么你唯一的选择是
输入 0-9 -> 预测 10-19 -> 再次输入此预测 -> 预测 20-29 -> 再次输入预测 -> 预测 30-39。
但最后一种情况仅适用于您只有一个数据点(一个 10 个序列)并且需要长预测的情况。
另请注意,这样做会导致相当大的错误,因为错误会随着时间的推移不断累积。