其实直到现在,我对BPTT算法的理解都不太顺畅,暂时把目前的想法记录下来,之后自己实现一遍来加深理解。如果您看出了问题希望能提出来,感激不尽。
循环神经网络因为不仅有空间上的层间关系,还有时序上的联系,导致在求梯度时和之前的反向传播算法有点不同。什么意思呢?在BP算法中,通过链式法则和全导数公式就可以求得损失函数关于某一个变量的梯度,但是在循环神经网络中,比如下图中,求E3关于U的偏导,不仅t=3这一时刻U对E产生了影响,之前每一时刻U都影响了对应时刻的状态S从而影响到t=3时刻的S3,最后对E3产生了影响,在求导时就需要将所有时刻的情况纳入计算,这时候光靠链式法则和全概率公式就没办法解决了,所以有了backpropagation through time(BPTT)算法。