从RNN的模型可以看出,在反向传播时,在在某一序列位置t的梯度损失由当前位置的输出对应的梯度损失和序列索引位置t+1时的梯度损失两部分共同决定。
BP算法:定义误差函数 E ,通过链式法则自顶向下求得 E 对网络权重的偏导。沿梯度的反方向更新权重的值,直到 E 收 敛。
BPTT:与BP类似,加上时序演化。
输出的激活函数:双曲正切,通过softmax,损失交叉熵。
举一个例子:求E3对V的梯度
y是输出值,z是输入激活函数的值,z=V*S3.最后求和可得E对V的梯度!!(梯度下降)
E对W梯度
W是相同的,所有求对W的梯度需要求所有的。s2并不是一个常数项,s2依赖s1,s1依赖s0。所以要用链式法则传递下去。
这里刚开始看有点异或,当K=3的时候,粗浅以为左右式子对等,其实不然,是表达符号简略的问题!
RNN梯度消失的原因:
正是上面的BPTT和tanh激活函数。