反向传导算法 (back propagation)

反向传导算法 (Back Propagation) 最早出现在70年代,但直到1986年由David Rumelhart,Geoffrey Hinton和Ronald Williams发表的论文“Learning representations by back-propagating errors”,其重要性才得到普遍关注。这篇重要论文描述了利用BP算法实现神经网络,比早前的学习方法更快,从而可以使用神经网络解决一些之前无法解决的问题。今天,BP算法成为神经网络和深度学习的入门基础。

对于如下的网络结构,首先定义符号描述:

network$i$:神经网络第$i$层的某个神经元;

$j$: 第$i+1$层的某个神经元;

$y_{i}$: 神经元$i$的输出,同时也是神经元$j$的输入之一;

$y_{j}$: 神经元$j$的输出;

$t_{j}$: 神经元$j$的输出期望值;

$w_{ij}$: 神经元$i$到神经元$j$的权值;

$z_{j}=\sum_{k \in layer_{i}}{w_{jk}y_{k}}$

$\frac{\partial z_{j}}{\partial y_{i}}=w_{ji}$

$y=\frac{1}{1+e^{-z}}$

$\frac{dy}{dz}=y(1-y)$

下面描述具体算法

  1. 输入:训练集 $T=\{(x_{1},y_{1}),(x_{2},y_{2}),\cdots,(x_{N},y_{N})\}$
  2. 输出:神经网络每层之间的权重$W$
  3. 最优化问题:

$\begin{aligned} & \underset{W}{\text{min}} \ E \ & \text{s.t.} & & E=\frac{1}{2}\sum_{j \in output.layer}(t_{j}-y_{j})^{2} \end{aligned}$

用梯度下降法求解

$\frac{\partial E}{\partial w_{ji}}=\frac{\partial E}{\partial y_{j}}\frac{\partial y_{j}}{\partial z_{j}}\frac{\partial z_{j}}{\partial w_{ji}}$

而 $\frac{\partial z_{j}}{\partial w_{ji}}=y_{j}$

再令 $\delta_{j}=\frac{\partial E}{\partial y_{j}}\frac{\partial y_{j}}{\partial z_{j}}$

则 $\frac{\partial E}{\partial w_{ji}}=\delta_{j}y_{i}$

下面计算 $\delta_{j}$:

若 $j$ 为输出层

$\frac{\partial E}{\partial y_{j}}=y_{j}-t_{j}$

若 $j$ 为隐藏层 $i$

$\frac{\partial E}{\partial y_{i}}=\sum_{j}\frac{\partial E}{\partial y_{j}}\frac{\partial y_{j}}{\partial z_{j}}\frac{\partial z_{j}}{\partial y_{i}}=\sum_{j}\delta_{j}w_{ji}$

所以:

\delta_{j}=\frac{\partial E}{\partial y_{j}}\frac{\partial y_{j}}{\partial z_{j}}=\begin{Bmatrix}(y_{j}-t_{j})\frac{\partial y_{j}}{\partial z_{j}}, j \in output layer \ \sum_{l \in j+1}w_{lj}\delta_{l}\frac{\partial y_{j}}{\partial z_{j}}, j \in hidden layer \end{matrix}

 

最终:\frac{\partial E}{\partial w_{ji}}=\delta_{j}y_{i}=\frac{\partial E}{\partial y_{j}}\frac{\partial y_{j}}{\partial z_{j}}=\begin{Bmatrix}(y_{j}-t_{j})\frac{\partial y_{j}}{\partial z_{j}}y_{i}, j \in output layer \ \sum_{l \in j+1}w_{lj}\delta_{l}\frac{\partial y_{j}}{\partial z_{j}}y_{i}, j \in hidden layer \end{matrix}

algorithm_bp

本文内容源于:https://medium.com/@jackzhai/back-propagation-da4b219cd460

发表评论

电子邮件地址不会被公开。 必填项已用*标注