神经网络:3)不一样的角度<-反向传播算法

来源:互联网 发布:vb工控软件开发 编辑:程序博客网 时间:2024/06/05 16:17

本文只对反向传播算法进行简单的解释,具体的推导可以参考《神经网络与深度学习》,在进入反向传播算法学习之前,先了解下多层感知器,比如下图

在上一博文中,我们介绍了简单的感知器,它只包含输入层和输出层(单神经元构成),而上图在输入层和输出层的基础上追加了1到n个隐藏层(隐藏层,暂时可以把它认为功能强大的黑盒),而且每层的神经元都不止一个,这样的网络称为多层感知器。到前为至,我们讨论的神经网络,都是以上一层的输出作为下一层的输入,这种网络络被称为前馈神经网络。我们可以用下面的公式,表示输入和输出的关系:


 

alj表示第l层第j个神经元的激活值(输入值)blj表示在l层第j个神经元的偏置,这样我们就可以把l层和l-1层的激活值联系在一起了,下面的图可以辅助了解


这里我们重点探讨下权重矩阵W,比如上图我们用sizes=[3,4,2]表示每层神经元的数量,第一层的输入神经元用x11,x12,x13表示即为一个3x1的矩阵记A3x1,第二层输入的神经元x21,x22,x23,x24即4x1的矩阵记A4x1,从而有A4x1=WjkA3x1,根据矩阵乘法原则,这里的k=3,j=4即分别为l层和l-1层神经元的数目,这和上面图解的意思相同。

下面开始进入本文的焦点分析:对于单感知器来说,可以简单地用梯度下降法来确定权重W的值,但是对于多层感知器来说,如何在迭代的过程中,确定不同层与层之间的权重W?换句话来说,我们获得损失函数C对W的偏导呢?  下面就该反向传播算法闪耀登场了!

反向传播算法,最终的目的就是解决了层与层之间损失函数C对权重w或偏置b的偏导问题,然后结合梯度下降法求得目标的w和b值

反向传播其实是对权重和偏置变化影响代价函数过程的理解,首先,我们引入一个中间量δlj,称其为在l层第j个神经元上的误差。定义为


其中z=wx+b,我们通过下面的图来理解,这个调皮鬼在l层的第j个神经元上,当输入进来时,调皮鬼对神经元的操作进行搅局,他会在神经元的带权输入上增加很小的变化△Z,使用输出的神经元输出由σ(Z+△Z)。



如下给出反向传播算法核心的4个公式




这里的 ⊙表示矩阵乘法



下面简单介绍下这几个公式,BP1是从输出层计算获得输出成的误差,BP2是由当前层的误差反推前上一层的误差,BP3是C的偏置的偏导,BP4是C的权重偏导。也就是说利用这4个公式,我们可以从后往前,一层推导出∂c/∂w∂c/∂b !

上面的公式皆由δlj的定义,通过链式求导法则推导得出,这里不详细介绍,具体可以参考证明方法。


参考:

http://neuralnetworksanddeeplearning.com/chap2.html

原创粉丝点击