[success]
这一节是反向传播算法在MLP上的具体应用。
只是主要流程。具体的计算过程涉及到一些数学基础。
算法6.3首先给出了前向传播,它将参数映射到与单个训练样本(输入,目标)$(x,y)$相关联的监督损失函数$L(\hat{y}, y)$,其中$\hat{y}$是当$x$提供输入时神经网络的输出。
[success]
算法6.3通过正向传播计算每一层的unit的加权输入z和激活输出h。
h_0 = x
for l = 1,...,L do:
z_k = b_k + W_k.dot(h_(k-1))
h_k = f(z_k)
end for
y_hat = h_L
J = L(y_hat, y) + lambda * omega(theta)
ghLgzL∇WLJ∇bLJ======∂hL∂L(y^,y)=∇y^L(y^,y)∂zL∂L(y^,y)=∂hL∂L(y^,y)∂zL∂hL=ghL⨀f′(zL)∂WL∂L(y^,y)+∂WL∂λΩ(θ)=∂zL∂L(y^,y)∂WL∂zL+∂WL∂λΩ(θ)gzL(xL)T+λ∇WLΩ(θ)=gzL(hL−1)T+λ∇WLΩ(θ)∂bL∂L(y^,y)+∂bL∂λΩ(θ)=∂zL∂L(y^,y)∂bL∂zL+∂bL∂λΩ(θ)gzL+λ∇bLΩ(θ) 根据定义计算第l层的情况 for l = L-1, ..., 1 do:
ghlgzl∇WlJ∇blJ=====∂hl∂L(y^,y)=i∑∂zil+1∂L(y^,y)∂hl∂zil+1=i∑∂zil+1∂L(y^,y)∂xl+1∂zil+1(Wl+1)Tgzl+1∂zl∂L(y^,y)=∂hil∂L(y^,y)∂zl∂hl=ghl⨀f′(zl)gzl(hl−1)T+λ∇WlΩ(θ)gzl+λ∇blΩ(θ) 公式中的f'(z^l)是主要的计算量。
计算出来的是一个矩阵,称为Jacobian矩阵。