上面是一组序列变量,即四个变量
z1,z2,z3,z4
中的任一
zi
的值均依赖于它前面的变量
z1,z2,..,zi−1
,且有
z2=2∗z1
z3=3∗z2+z1
z4=4∗z3+2∗z2+z1
E=4∗z4+2∗z2
现在我们定义:
∂E∂zi
: 目标函数
E
对变量
∂+Edzi
: 目标函数
E
对变量
∂+E∂z4=∂E∂z4=4
∂+E∂z3=∂E∂z3+∂+E∂z4⋅∂z4∂z3=16
∂+E∂z2=∂E∂z2+∂+E∂z4⋅∂z4∂z2+∂+E∂z3⋅∂z3∂z2=58
∂+E∂z1=∂E∂z1+∂+E∂z4⋅∂z4∂z1+∂+E∂z3⋅∂z3∂z1+∂+E∂z2⋅∂z2∂z1=136
综上,我们有如下的链式法则[1]
traditional recurrent neural network
下图是一个基础的循环神经网络示意图
Fig. 1: 循环神经网络示意图
其中x_t, h_t, y_t
分别代表 t
时刻网络的输入向量
,隐藏层向量
, 输出向量
, w_ih, w_ho
均为 权重矩阵
,具体的计算公式如下:
xct=[xt,ht−1]
ht=ϕ(zht)=tanh(wih⊙xct+bih)
yt=σ(zot)=softmax(who⊙ht+bho)
成本函数采用信息熵形式
k
表示输出层节点个数,
y^
表示真实的目标输出。
我们的目标是计算
和
即在给定 x1,x2,...xT 作为输入序列, y^1,y^2,...,y^T 作为目标输出序列的前提下,计算成本函数 C 对权重矩阵
根据 Fig. 1, 我们看出绿色模块之间有如下的依赖关系
那么
zhi
仅仅依赖于
zhi−1
,根据链式方程 Eq. 1:
并且,
因为 Fig. 1 中黄色模块之间的相互依赖关系是通过绿色模块产生的,它们之间并没有直接的依赖关系,所以有
由上面的三个公式,可进而依次求出 t=T−1,T−2,...,2,1 时刻时的 ∂+C∂zht 值。
最终有:
[1] Backpropagation through time: what it does and how to do it (web)