神经网络初探:反向传播公式的简易证明

神经网络初探:反向传播公式的简易证明

​ 我们已经知道反向传播算法的核心在于求解代价函数对各个参数的偏导,由此我们需要四个公式,前两个公式让我们能够求解每一层的误差 δ (errors),后两个公式给出偏导数与误差 δ 之间的关系,具体如下:

δLδlCbCw1jk=(aLy)σ(ZL)=((wl+1)Tδl+1)σ(Zl)=δ=al1kδlj(BP1)(BP2)(BP3)(BP4)

​ 我们来逐个地对这四个公式进行证明,只要使用链式法则就可以完成证明,只有(BP2)稍微复杂一点,另外三个公式只要使用一次链式法则的变量替换就可以轻易得到结果。

(BP1)的证明

过程如下:

δLj===CZLjiCaLiaLiZLjCaLjσ(ZLj)

(BP2)的证明

这个过程跟上一个相比稍微有点麻烦,也是这四个公式当中最麻烦的一个。这是个递推公式,公式左边是第l层的误差,公式右边是第(l+1)层的误差。也就是我们知道了当前层的误差,通过这个公式可以算出前一层的误差,这是反向传播这个名字的来历,表示误差的反向递推计算。过程如下:

δljZl+1j======CZljiCZl+1iZl+1iZljiδl+1iwl+1ijσ(ZLj)(i(wl+1)Tjiδl+1i)σ(ZLj)kwl+1jkalk+bljkwl+1jkσ(Zlk)+blj

(BP3)的证明

​ 通过前面两个公式,我们通过正向传播算出各层的激活函数值,通过反向传播算出各层的误差值,接下来这个公式给出代价函数对各个节点阈值的偏导,过程如下:

Cblj==iCZliZlibljδlj

(BP4)的证明

这是最后一个公式,跟上一个一样,将代价函数对权重的偏导用相应的变量Z做扩展,最终得到偏导和激活函数值以及误差的关系,过程如下:

Cw1jk==iCZliZliw1jkal1kδlj

以上就是BP算法公式的证明,事实上十分简单,但是前辈们整理清楚这个公式花了二三十年时间,又花了二三十年时间去探索神经网络应用的可能。如今,这个算法已经成为神经网络工程技术的基础之一,每天都有大量的人工智能应用在运行着这个算法。

备注: 本文主要参考自Michael Nielsen的博客(http://michaelnielsen.org/)

你可能感兴趣的:(神经网络,神经网络,数学证明,反向传播算法)