这里主要牵扯的问题是如何利用Cost Function来更新所有参数权值的问题。
误差反向传播算法利用高等数学里面的复合函数求导的思想,可以分别把每一层的线性项作为一组自变量,则前一层的误差敏感项(Cost Function对于这个线性项的偏导)就可以是由所有与其有连接的下一层的误差传播项乘以他们之间的权值,再乘上激励函数的导数。具体推导过程就不放了(我才不会说是因为我还没学Latex)。
以上所说的是对于所有神经网络通用的BP算法的说明,此处因为个人学习方向,针对CNN中的卷积层和池化层的传播进行说明。
CNN卷积神经网络推导和实现
CNN的反向求导及练习
大致意思有三个方面。
首先是池化层的误差传递,如果是max pooling则误差全部传递到取到最大值的那个输入;如果是average pooling则平均传递给所有输入。
其次是如何从后一层的误差敏感项得到前一层的。假设l层的一幅图像由两个卷积核得到两个l+1层的输出,那么,l层的误差敏感值应该分别由那两个输出的误差敏感值传递过来相加。将l+1层的误差敏感矩阵进行适当的padding(填0),然后用旋转过180度的卷积核进行卷积,得到和输入尺寸一样的矩阵,即为输入层的误差敏感值。
至于对于卷积层的权值的偏导,则将输入矩阵用输出误差敏感值进行卷积即可得到,然后便可像之前所说一样进行更新。
然而具体的推导嘛。。。我回头再试试,坑不保证填上。
CNN的介绍如果不出意外在下一篇博客中就会出现,挖坑。。。