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

神经网络反向传播公式的推导

2015-12-26 23:22 706 查看
最近在学习http://neuralnetworksanddeeplearning.com,一本详细介绍了neural networks and deep learning的书,作者写得深入浅出,全面透彻,是自学神经网络和深度学习的绝佳读物。

通过学习这本书,把之前从Stanford University公开课Machine Learning课程中学到的知识又巩固了一遍,以前一知半解的知识点,现在脑袋中又清晰了很多。

借这次学习机会,又自己详细推导了一遍神经网络的反向传播公式,以加强印象。

特别注意:以下推导过程中,sigma函数泛指神经元的激励函数,它可以是任意形式的激励函数。

且输入参数是l层时表示l层激励函数,输入参数是l+1层时则表示l+1层激励函数。

也就是说,不同层的sigma有可能表示不同的激励函数。尤其是输出层和隐藏层的激励函数,很有可能不同。

首先,定义第l层和第l+1层,各有K和J个神经元,每个神经元的activation function的输出用a表示,输入用z表示(z=w*x+b)

下图中最下面两个公式,分别表示第l层和第l+1层的输出。



然后,我们证明以下四个公式,这四个公式是反向传播算法的基础,证明过程如下面四幅图所示。其中,delta是为了证明和计算反向传播而抽象出的一个变量,在神经网络中并无实际意义,只是对于反向传播的计算帮助很大。有些资料中把delta叫做误差(error),知道即可,不用太纠结其“误差”含义。
















最后,有了以上四个公式,我们就可以设计出反向传播的算法了。其中:

公式2是算法的核心,体现了“反向”二字;

公式3和公式4则是算法的输出,因为反向传播算法的目标就是要计算出损失函数相对于参数w和b的偏导数,以便于迭代更新它们;

公式1就是算法的基础了,公式2、3、4的推导都离不开它,且最后一层的delta是由公式1计算的,然后由公式2反向传递。

综上,反向传播算法流程如下:




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: