深度学习——卷积神经网络原理解析(Convolution layer)
简介
- 卷积主要应用于计算机视觉领域,经常用于特征的提取、目标检测、人脸检测与识别等任务。卷积是同于一系列加乘法运算完成,核心是卷积核(filter),还有一些参数:strid(s)、pad、weights。下面介绍卷积层的前向传播和反先传播过程。
前向传播(fowardpropagation)
- 前向传播比较容易理解,就是卷积核和对应输入数据的区域先进行点积运算,再把一个矩阵里面数据求和得到一个数。
- lll:代表第lll层(conv layer)
- f(l)f^{(l)}f(l):卷积核的尺寸( filter size)
- plp^{{l}}pl:pad的大小
- s(l)s^{(l)}s(l): stride的大小
- ncln^{l}_{c}ncl: 卷积核个数
- 每个卷积&的尺寸 f=fl∗fl∗ncl−1f = f^{l}*f^{l}*n_c^{l-1}f=fl∗fl∗ncl−1
- 卷积完输出的尺寸: al=nHl∗nWl∗ncla^{l} = n_H^{l}*n_W^{l}*n_c^{l}al=nHl∗nWl∗ncl
- nH=⌊nHl−1+2p(l)−flsl⌋+1,nW=⌊nWl−1+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+1nH=⌊slnHl−1+2p(l)−fl⌋+1,nW=⌊slnWl−1+2p(l)−fl⌋+1
- z(nh,nw,c)l=np.sum(Wc∗aslice+bc)z^l_{(nh,nw,c)}=np.sum(W_c*aslice+b_c)z(nh,nw,c)l=np.sum(Wc∗aslice+bc)
- 一个卷积层参数个数: numbers= (f∗f∗nCl−1∗+1)∗nCl,1代表参数b(f*f*n_C^{l-1}*+1)*n_C^{l},1代表参数b(f∗f∗nCl−1∗+1)∗nCl,1代表参数b
比如输入数据data 维度3∗3∗33*3*33∗3∗3,filter大小为3,nCl=20n_C^{l}=20nCl=20,参数总个数为:(3∗3∗3+1)∗20=560(3*3*3+1)*20=560(3∗3∗3+1)∗20=560
反向传播(backpropagation)
dAl−1+=∑c=1nC∑i=1nH∑j=1nWWcl∗dZ(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)dAl−1+=c=1∑nCi=1∑nHj=1∑nWWcl∗dZ(i,j,c)l(1)
dWcl=∑i=1nH∑j=1nWal−1∗dZ(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)dWcl=i=1∑nHj=1∑nWal−1∗dZ(i,j)l(2)
dbl=∑i=1nH∑j=1nWdZ(i,j)l(3)db^l = \sum_{i=1}^{n_H}\sum_{j=1}^{n_W}dZ_{(i,j)} ^l\qquad(3)dbl=i=1∑nHj=1∑nWdZ(i,j)l(3)