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

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

前向传播

神经网络中前向传播和反向传播解析_第1张图片
如图所示,这里讲得已经很清楚了,前向传播的思想比较简单。
举个例子,假设上一层结点i,j,k,…等一些结点与本层的结点w有连接,那么结点w的值怎么算呢?就是通过上一层的i,j,k等结点以及对应的连接权值进行加权和运算,最终结果再加上一个偏置项(图中为了简单省略了),最后在通过一个非线性函数(即激活函数),如ReLu,sigmoid等函数,最后得到的结果就是本层结点w的输出。
最终不断的通过这种方法一层层的运算,得到输出层结果。

反向传播

反向传播的方法其实也比较简单,但是因为需要求偏导,而我的数学又不怎么好,所以一直理解上有困难。下面上图:
神经网络中前向传播和反向传播解析_第2张图片
由于我们前向传播最终得到的结果,以分类为例,最终总是有误差的,那么怎么减少误差呢,当前应用广泛的一个算法就是梯度下降算法,但是求梯度就要求偏导数,下面以图中字母为例讲解一下。
设最终总误差为 E ,对于输出那么 E #对于输出结点yl的偏导数是yl - tl,其中tl是真实值 ylzl 是指上面提到的激活函数, zl 是上面提到的加权和,那么这一层的 E zl 的偏导数为 Ezl=Eylylzl 。同理,下一层也是这么计算,(只不过 Eyk 计算方法变了),一直反向传播到输入层,最后有 Exi=Eyjyjzj zjxi=wij
然后调整这些过程中的权值,再不断进行前向传播和反向传播的过程,最终得到一个比较好的结果

你可能感兴趣的:(深度学习)