文章目录
排版可能更好一点的永久原文链接:深度学习的数学-卷积神经网络的误差反向传播
前言
本篇博客主要记录反向传播法在卷积神经网络中的应用,如何像全连接的隐藏层那样,通过输出层的神经单元误差反向推算出所有层的神经单元误差,最终得到梯度。
正文
博主在看完卷积神经网络的正向运作流程后,其实是有一点懵圈的,于是我冷静了一天再继续看卷积神经网络的反向传递;正向运作流程中的 『池化』、『特征映射』应该怎么样用式子表示?经过了池化(最大/平均/L2)的神经单元输入,又怎样体现在神经单元误差的计算上?可以带着这些问题继续往下看。
卷积神经网络中的关系式
在进行推算之前,首先确定好每个层神经单元之间的关系式
卷积层
卷积层中每个神经单元的输入可以理解为过滤器的加权输出,卷积层神经单元的输出套上激活函数就可以了。
所以关系式是下面这个样子的:
池化层
池化层的输入等于输出,如果是最大池化,则使用Max求一定范围内的极值就可以了(当前例子是将 4 * 4 的卷积最大池化为 2 * 2 的池化层)
输出层
而输出层和池化层的神经单元是全连接的,所以就是熟悉的 权重 * 池化输出求和 公式
平方误差(损失函数)
梯度下降法
梯度下降如果有些忘了的话,链接在此:深度学习的数学-梯度下降
梯度就可以看作是代价函数的导数整体下降速度最快的分量,每个变量只需要顺着梯度做减法,即可以最快速度达到整体极值点的位置
各个神经单元的的权重、偏置都是变量,为方便理解书中也把每个变量代表的含义标了一下,如下图所示:
卷积层和输出层的神经单元误差(重点)
在全连接隐藏层反向递推的过程中,有一个神经单元误差的概念,忘了的可以看一下之前记录的博客:深度学习的数学-神经单元误差和反向传播
简单来说就是损失函数对神经单元的综合输入求偏导数,这个偏导数衡量这个神经单元与理想状态(理想是达到0)的差距
而卷积神经网络中,有卷积层和输出层两种类型的神经元,分别定义如下
PS:池化层输入等于输出是没有额外变量的,过滤器的偏置和权重都体现在了卷积层的综合输入 z 上
这两个神经单元误差影响整体平方误差画一个图就像下面这样:
输出层的神经单元误差计算
在看神经单元误差对权重偏置的影响之前,先看一下怎么计算输出层的神经单元误差,其定义如下:
由平方误差的定义式可以知道 C 对 a n o a_n^o ano 的偏导数
PS:乘 1/2 就是为了不让偏导数前面带常数 2