在bptt中,在每个时间步长中(除了最后一个时间步长之外,这是第一个要处理的步长),我们有两件事希望内存位于最后一个时间步长中: 首先,我们具有网络在该时间步中应该已经输出的输出,其次,我们具有将来的时间步要在此刻存储的内容。所以,我的问题是:如何求平均值?
好吧,简单的方法就是要做类似的事情:
shouldWas = futureWantMeToBe * 0.5 + thisTimeStepWantMeToBe * 0.5;
但是,问题在于,对于足够长的示例系列,“应该”几乎不关心最后一个步骤,这很糟糕。因此,另一种方法是这样做:
shouldWas = futureWantMeToBe * (1 - 1 / i) + thisTimeStepWantMeToBe * (1 / i);
其中i是反向传播步骤的数量(对于最后一个时间步,i = 1,然后是2 ...)。 这样,错误可能消失得更少了,因此更好。但是传统的做法是什么?