码迷,mamicode.com
首页 > 其他好文 > 详细

[NN] 对于BackPropagation(BP, 误差反向传播)的一些理解

时间:2014-12-15 11:57:25      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:style   io   ar   使用   sp   on   art   bs   line   

本文大量参照 David E. Rumelhart, Geoffrey E. Hinton and Ronald J. Williams, Learning representation by back-propagating errors, Nature, 323(9): p533-536, 1986.

在现代神经网络中, 使用最多的算法当是反向传播(BP). 虽然BP有着收敛慢, 容易陷入局部最小等缺陷, 但其易用性, 准确度却是其他算法无可比拟的.

在本文中, $w_{ji}$为连接前一层$unit_{i}$和后一层$unit_{j}$的权值.

在MLP中, 对于后一层神经元$unit_{j}$, 它的输入$x_{j}$按下式进行计算(忽略偏置):

$x_{j} = \sum_{i} y_{i} w_{ji}$

可以看到它的输入等于前一层所有神经元的输出$y_{i}$和对应连接的加权和.

而$unit_{j}$的输出按下式计算:

$y_{j} = \frac{1}{1+e^{-x_{j}}}$.

对于有监督训练, 有期望输出$d$和实际输出$y$, 可以定义误差为:

$E=\frac{1}{2}\sum_{c} \sum_{j}(y_{j,c}-d_{j,c})^2$

为求出$\partial E/\partial w_{ji}$, 我们先求$\partial E/\partial y_{j}$(之后就知道为何如此):

$\partial E/\partial y_{j} = y_{j} - d_{j}$

由链式法则:

$\partial E/\partial x_{j} = \partial E/\partial y_{j} * d y_{j}/d x_{j}$, 及上面的输入输出的关系式

$d y_{j}/d x_{j} = (\frac{1}{1+e^{-x_{j}}})‘ = \frac{e^{-x_{j}}}{(1+e^{-x_{j}})^{2}} = y_{j} * (1-y_{j})$可得:

$\partial E/\partial x_{j} = \partial E/\partial y_{j} * y_{j} * (1-y_{j})$

至此, 我们得到了$Layer_{j}$的误差$E$对于输入$x_{j}$的偏导, 但网络训练的是权值(偏置), 所以我们必须知道$E$对于$w_{ji}$的偏导表达式.

同样由链式法则:

$\partial E/\partial w_{ji} = \partial E/\partial x_{j} * \partial x_{j}/\partial w_{ji}$, 及本层输入和权值的关系式:

$x_{j} = \sum_{i} y_{i} w_{ji}$, 可得 $\partial x_{j}/\partial w_{ji} = y_{i}$, 即:

$\partial E/\partial w_{ji} = \partial E/\partial x_{j} * y_{i}$, 整理一下,

$\partial E/\partial w_{ji} = (y_{j} - d_{j}) * y_{j} * (1-y_{j}) * y_{i}$

其中$y_{i}$为$unit_{i}$的输出(经过了非线性变换), $y_{j}$为$Layer_{j}$的输出.

同样是按照链式法则, 对于第i个神经元, 我们可以求得误差对其输出的梯度:

$\partial E/\partial y_{i} = \partial E/\partial x_{j} * \partial x_{j}/\partial y_{i} = \partial E/\partial x_{j} * w_{ji}$, 考虑到第

 

到此为止, 使用上式, 只要知道已知的期望输出$d_{j}$和每层的输出$y_{i}$, 我们就可以倒推出误差相对于每层的权值的梯度, 从而对权值进行调整, 调整的公式如下:

$\delta w = -\epsilon \partial E/\partial w$

[NN] 对于BackPropagation(BP, 误差反向传播)的一些理解

标签:style   io   ar   使用   sp   on   art   bs   line   

原文地址:http://www.cnblogs.com/lancelod/p/4164231.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!