中文技术博客上描述的反向传播算法有一些跳跃性非常大对于理解神经网络乃至深度学习的过程非常不利,我在网上找到一篇Backpropagation 的推导过程实例()写得明白透彻,按照最典型的梯度下降算法来进行推导现将学习过程记录如下。
设计loss函数是为了衡量网络输出值和理想值之间的差距尽管网络的直接输絀并不显式的包含权重因子,但是输出是同权重因子直接相关的因此仍然可以将loss函数视作在权重因子空间中的一个函数。
可以将loss 记为E(w)這里为了便于说明,省去了偏值项正则项等等,仅仅将loss认为是w的函数
对网络训练的目标在数学上的显示表现就是使得loss取值最小化,这個问题就变成了在权重空间w中求loss全局极值的一个优化问题对于这种问题,通常的解决方案是对loss求w的偏导
假定如下图示的神经元结构:
很顯然对于E的w偏导数可以利用链式法则得到如下表示:(根据上述引用材料的记载Etotal由out1和out2构成,具体数值由材料所给出)
outo1是由sigmoid激活函数给出因此如下所示:
此时可以得到关于E和w5的偏导公式的各个组元,然后将数据代入可以得到偏导数的值
在往常的一些记载中会使用如下的記法来表示:
所以最终的偏导可以记为:
根据梯度下降算法的思路,为了修正w5认为对w5的更新项,应当如下式表示:
其中偏导前的系数为囚为设置的常数就是常说的学习率,这里设置为0.5这样整个回路就完成了对权重因子w5的更新
有了以上的实例,再看UFDL 的介绍就更加明白了()