您的位置:首页 > 理论基础 > 计算机网络

神经网络中前向传播和反向传播解析

2016-05-15 21:22 344 查看
虽然学深度学习有一段时间了,但是对于一些算法的具体实现还是模糊不清,用了很久也不是很了解,最近在看去年LeCun和Hinton在Nature上发表的deep learning的review,有两张图分别是讲得网络的前向传播和反向传播,下面记录一下。

前向传播



如图所示,这里讲得已经很清楚了,前向传播的思想比较简单。

举个例子,假设上一层结点i,j,k,…等一些结点与本层的结点w有连接,那么结点w的值怎么算呢?就是通过上一层的i,j,k等结点以及对应的连接权值进行加权和运算,最终结果再加上一个偏置项(图中为了简单省略了),最后在通过一个非线性函数(即激活函数),如ReLu,sigmoid等函数,最后得到的结果就是本层结点w的输出。

最终不断的通过这种方法一层层的运算,得到输出层结果。

反向传播

反向传播的方法其实也比较简单,但是因为需要求偏导,而我的数学又不怎么好,所以一直理解上有困难。下面上图:



由于我们前向传播最终得到的结果,以分类为例,最终总是有误差的,那么怎么减少误差呢,当前应用广泛的一个算法就是梯度下降算法,但是求梯度就要求偏导数,下面以图中字母为例讲解一下。

设最终总误差为E,对于输出那么E#对于输出结点yl的偏导数是yl - tl,其中tl是真实值∂yl∂zl是指上面提到的激活函数,zl是上面提到的加权和,那么这一层的E对zl的偏导数为∂E∂zl=∂E∂yl∂yl∂zl。同理,下一层也是这么计算,(只不过∂E∂yk计算方法变了),一直反向传播到输入层,最后有∂E∂xi=∂E∂yj∂yj∂zj 且 ∂zj∂xi=wij

然后调整这些过程中的权值,再不断进行前向传播和反向传播的过程,最终得到一个比较好的结果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: