深度学习——卷积神经网络原理解析(Convolution layer)

深度学习——卷积神经网络原理解析(Convolution layer)

简介

  • 卷积主要应用于计算机视觉领域,经常用于特征的提取、目标检测、人脸检测与识别等任务。卷积是同于一系列加乘法运算完成,核心是卷积核(filter),还有一些参数:strid(s)、pad、weights。下面介绍卷积层的前向传播和反先传播过程。

前向传播(fowardpropagation)

  • 前向传播比较容易理解,就是卷积核和对应输入数据的区域先进行点积运算,再把一个矩阵里面数据求和得到一个数。
    深度学习——卷积神经网络原理解析(Convolution layer)
  • ll:代表第ll层(conv layer)
  • f(l)f^{(l)}:卷积核的尺寸( filter size)
  • plp^{{l}}:pad的大小
  • s(l)s^{(l)}: stride的大小
  • ncln^{l}_{c}: 卷积核个数
  • 每个卷积&的尺寸 f=flflncl1f = f^{l}*f^{l}*n_c^{l-1}
  • 卷积完输出的尺寸: al=nHlnWlncla^{l} = n_H^{l}*n_W^{l}*n_c^{l}
  • nH=nHl1+2p(l)flsl+1,nW=nWl1+2p(l)flsl+1n_H=\lfloor\frac{n_H^{l-1}+2p^{(l)}-f^{l}}{s^l}\rfloor+1,n_W=\lfloor\frac{n_W^{l-1}+2p^{(l)}-f^{l}}{s^l}\rfloor+1
  • z(nh,nw,c)l=np.sum(Wcaslice+bc)z^l_{(nh,nw,c)}=np.sum(W_c*aslice+b_c)
  • 一个卷积层参数个数: numbers= (ffnCl1+1)nCl1b(f*f*n_C^{l-1}*+1)*n_C^{l},1代表参数b
    比如输入数据data 维度3333*3*3,filter大小为3,nCl=20n_C^{l}=20,参数总个数为:(333+1)20=560(3*3*3+1)*20=560

反向传播(backpropagation)

dAl1+=c=1nCi=1nHj=1nWWcldZ(i,j,c)l(1)dA^{l-1} += \sum_{c=1}^{n_C}\sum_{i=1}^{n_H}\sum_{j=1}^{n_W}W_c^l*dZ^l_{(i,j,c)} \qquad(1)
dWcl=i=1nHj=1nWal1dZ(i,j)l(2) dW_c^l =\sum_{i=1}^{n_H}\sum_{j=1}^{n_W}a^{l-1}*dZ_{(i,j)}^l \qquad(2)
dbl=i=1nHj=1nWdZ(i,j)l(3)db^l = \sum_{i=1}^{n_H}\sum_{j=1}^{n_W}dZ_{(i,j)} ^l\qquad(3)