RNN是一个深度神经网络(DNN),其中每一层都可以接受新的输入,但具有相同的参数。在这样的网络上,BPT是反向传播的奇特词,它本身也是梯度下降的奇特词。
说,RNN输出ÿ吨中的每个步骤和
ë [R [R ö ř 吨 = (ý 吨- Ÿ吨)2y^t
errort=(yt−y^t)2
为了学习权重,我们需要函数梯度以回答以下问题:“参数变化对损失函数有多大影响?” 并按以下给定的方向移动参数:
∇errort=−2(yt−y^t)∇y^t
也就是说,我们有一个DNN,可以在其中获得有关每个层的预测效果如何的反馈。由于参数的变化将改变DNN中的每一层(时间步长),并且每一层都为即将到来的输出做出贡献,因此需要对此加以考虑。
采取一个简单的单神经元一层网络来半透明地看到这一点:
y^t+1=∂∂ay^t+1=∂∂by^t+1=∂∂cy^t+1=⟺∇y^t+1=f(a+bxt+cy^t)f′(a+bxt+cy^t)⋅c⋅∂∂ay^tf′(a+bxt+cy^t)⋅(xt+c⋅∂∂by^t)f′(a+bxt+cy^t)⋅(y^t+c⋅∂∂cy^t)f′(a+bxt+cy^t)⋅⎛⎝⎜⎡⎣⎢0xty^t⎤⎦⎥+c∇y^t⎞⎠⎟
与学习率一个训练步骤则是:
[ 〜一〜b 〜c ^ ] ← [ 一个b Ç ] + δ (ý 吨- Ÿ吨)∇ ÿ吨δ
⎡⎣⎢a~b~c~⎤⎦⎥←⎡⎣⎢abc⎤⎦⎥+δ(yt−y^t)∇y^t
∇y^t+1∇y^tt而不进一步递归。我认为你的损失大概是
error=∑t(yt−y^t)2
也许每个步骤都会为总体提供足够的方向?这可以解释您的结果,但是我真的很想了解更多有关您的方法/损失函数的信息!也将有兴趣与两个时间步窗式ANN进行比较。
edit4:阅读评论后,看来您的体系结构不是RNN。
ht
您的模型:无状态-在每个步骤中都将重建隐藏状态
edit2:向DNN添加更多引用edit3:修复了gradstep和一些表示法edit5:修复了您的回答/澄清后对模型的解释。