本篇罗列了back propagation的general functions。

在神经网络中,更新权重经常用batch gradient descent或者stochastic gradient descent。后者是对单个的数据点更新权重,即$E=frac{1}{2}||z-t||_2^2$;前者是批量地处理数据,即$E=frac{1}{2}sum_{iin Batch}||z_i-t_i||_2^2$,其中,$t$是ground truth。这里就举例stochastic的方法,batch的方法类似。

为了减少误差函数,我们应该按照loss function梯度的逆方向来改变权重,即$w=w-alpha_wfrac{partial E}{partial w}$,其中,$alpha_w$是learning rate。假设神经网络有$L$层,$x_0$是输入向量,$x_L$为输出向量,$t$为truth vector,weight matrices为$W_1, W_2, .., W_L$,activation functions为$f_1, f_2, …, f_L$。

Forward Pass:
$$
x_i = f_i(W_ix_{i-1}) \
E= ||x_L - t||_2^2
$$

Backward Pass:
$$
delta_L = (x_L-t)circ f_L^{prime}(W_Lx_{L-1}) \
delta_i = W_{t+1}^Tdelta_{i+1}circ f_i^{prime}(W_ix_{i-1})
$$

Weight Update:
$$
frac{partial E}{partial W_i} = delta_ix_{i-1}^T \
W_i = W_i - alpha W_i circfrac{partial E}{partial W_i}
$$

用矩阵表示变量,可以方便代码实现,并利用GPU来加速。

Reference

[1] 大专栏  A Derivation of Backpropagation in Matrix Formrget="_blank" rel="external noopener noreferrer">A Derivation of Backpropagation in Matrix Form。原文有更详细的过程。

Permalink: http://cuiyungao.github.io/2016/08/21/backpro/