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

CNN反向传播和普通神经网络的联系和比较

2017-12-26 22:45 555 查看

BP神经网络反向传播

反向传播是BP神经网络的特点,在之前的博客中已经粗略介绍了BP神经元以及反向传播的特点,对反向传播用较为直观图示解释。

本博客将重点介绍其反向传播的传播过程。

首先明确概念,反向传播就是得到整个网络的输出对每个门单元的梯度的过程。

举例说明,f(x1
4000
,x2,x3,x4)=(max(x1,x2)+x3)∗x4f(x1,x2,x3,x4)=(max(x1,x2)+x3)∗x4

那么,dfdx1dfdx1 , dfdx2dfdx2, dfdx3dfdx3, dfdx4dfdx4 如何计算,含义是什么?

1.如果x1>x2x1>x2, 那么 dfdx1=x4dfdx1=x4,反之为0,也就是说如果x1>x2x1>x2,那么x1x1对输出有影响,反之没影响

2.如果x2>x1x2>x1, 那么 dfdx2=x4dfdx2=x4,反之为0,含义与x1x1相同

3.dfdx3=x4dfdx3=x4,这说明x3x3的变化对整个输出的影响与x4x4成正比

4.dfdx4=max(x1,x2)+x3dfdx4=max(x1,x2)+x3,这说明x4x4的变化对整个输出的影响与max(x1,x2)+x3max(x1,x2)+x3成正比

其次,总结加法,乘法,最大值操作对梯度的作用。

1 加法门单元把输出的梯度相等地分发给它所有的输入

2 取最大值门单元对梯度做路由

3 乘法门单元是相互交换输入值

根据以上方法计算梯度,我们就可以知道,应该改变哪几个变量,才能使整个网络的loss function值最小,这也就完成了反向传播的过程

上述计算的梯度,我们可以借助雅可比矩阵(jacobi matrix) 存储,雅可比矩阵的形式如下:

⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢∂y1∂x1∂y2∂x1⋮∂yn∂x1∂y1∂x2∂y2∂x2⋮∂yn∂x2⋯⋯⋱⋯∂y1∂xn∂y2∂xn⋮∂yn∂xn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥[∂y1∂x1∂y1∂x2⋯∂y1∂xn∂y2∂x1∂y2∂x2⋯∂y2∂xn⋮⋮⋱⋮∂yn∂x1∂yn∂x2⋯∂yn∂xn]

举个例子,如果输入xx为4096维向量,f=max(x,0)f=max(x,0)

1.那么雅可比矩阵的尺寸?

4096∗40964096∗4096

2.这个雅可比矩阵是怎样的?

只有对角线上有值,其余为0,并且如果xixi小于0,那么雅可比矩阵第i行i列的值也为0,如果xixi大于0,那么雅可比矩阵第i行i列的值为1

CNN反向传播

有了上面的讨论之后,CNN的反向传播就容易理解了很多,这里我们主要讨论卷积层和pooling层的反向传播。

卷积层

下面的图片引自CNN的反向传播



事实上,卷积层跟普通的全连接层的不同之处就在于参数的共享,也就是说,并不是每一个输入像素所对应的权重都不同,这主要是为了减少在图像领域参数过多导致的过拟合现象。而参数共享之所以可以得到很好的效果,与图像的局部相关性有关,某一个位置的像素可能只与周围一定范围内的像素相关,与距离很远的像素关系不大。

因此基于上述分析以及对于bp链式法则的了解,我们可以定义后一层的误差为lossllossl,其中ll表示层数。从而求前一层的误差lossl−1lossl−1,以及权重的导数dfdwldfdwl,以及偏置的导数dfdbldfdbl。

首先我们来计算误差lossl−1lossl−1:

lossl−1=lossl.∗dzldal−1.∗σ′(zl−1)lossl−1=lossl.∗dzldal−1.∗σ′(zl−1)

其中,zlzl表示第ll层的输入,al−1al−1表示第l−1l−1层输出,那么这个问题就转换为,计算dzldal−1dzldal−1

以上图为例,我们计算左上角位置(0,0)(0,0)的导数,因为这个像素只与粉色权重相乘,所以它的导数就是粉色权重。位置(0,1)(0,1)的导数,在卷积核的滑动过程中会分别与绿色权重和粉色权重相连,因此,它的导数包括了这两部分。如果用公式来表示上述过程:

lossl−1=lossl.∗rot180(Wl).∗σ′(zl−1)lossl−1=lossl.∗rot180(Wl).∗σ′(zl−1)

权重的导数dfdwldfdwl,以及偏置的导数dfdbldfdbl就很容易计算了,分别为al−1∗losslal−1∗lossl以及lossllossl

pooling层

pooling层理解起来就更为简单,将之前卷积层的计算公式照搬下来,dzldal−1dzldal−1理解为对lossllossl上采样之后求导。

lossl−1=lossl.∗dzldal−1.∗σ′(zl−1)lossl−1=lossl.∗dzldal−1.∗σ′(zl−1)

那么这个上采样过程就分为两种,一种是average,一种是max。在average的计算中,将lossllossl平分给每个位置,而max时,只把lossllossl放在最大位置即可,其他与卷积的计算相同
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: