卷积神经网络
CNN一般由卷积层、池化层、全连接层三种类型的层构成。
卷积层
一些概念:
- 感受野:即每个神经元与输入数据的局部区域连接的空间大小,其大小为卷积核尺寸(F),深度永远与输入数据的深度相同。
- 步长:卷积核在输入数据上滑动时,每步所移动的像素大小
- 零填充:为了使得输出与输入保持同样的大小而仅仅在深度上不同,需要在输入数据四边进行零填充。
假设输入数据体大小: W 1 × H 1 × D 1 W _ { 1 } \times H _ { 1 } \times D _ { 1 } W1×H1×D1,输出为 W 2 × H 2 × D 2 W _ {2 } \times H _ { 2 } \times D _ { 2 } W2×H2×D2。并规定四个超参数:卷积核尺寸 F F F,卷积核数量 K K K,步长 S S S,零填充数量 P P P。则:
- W 2 = ( W 1 − F + 2 P ) / S + 1 W _ { 2 } = \left( W _ { 1 } - F + 2 P \right) / S + 1 W2=(W1−F+2P)/S+1、 H 2 = ( H 1 − F + 2 P ) / S + 1 H _ { 2 } = \left( H_ { 1 } - F + 2 P \right) / S + 1 H2=(H1−F+2P)/S+1、 D 2 = K D_2=K D2=K
- 该卷积层共有 ( F ⋅ F ⋅ D 1 + 1 ) ⋅ D 2 (F \cdot F \cdot D _ { 1 }+1) \cdot D_2 (F⋅F⋅D1+1)⋅D2个参数
用公式表示为: μ i j = ∑ p = 1 f ∑ q = 1 f x i + p − 1 , j + q − 1 × w p q + b \mu _ { i j } =\sum _ { p = 1 } ^ { f } \sum _ { q = 1 } ^ { f } x _ { i + p - 1 , j + q - 1 } \times w _ { p q } + b μij=∑p=1f∑q=1fxi+p−1,j+q−1×wpq+b,其中 p q pq pq为卷积核的角标。
池化层
池化层的作用时降低数据体的空间大小,从而减小计算参数数量。池化过程仅仅改变数据体的大小,不改变其深度。
假设输入数据体大小: W 1 × H 1 × D 1 W _ { 1 } \times H _ { 1 } \times D _ { 1 } W1×H1×D1,输出为 W 2 × H 2 × D 2 W _ {2 } \times H _ { 2 } \times D _ { 2 } W2×H2×D2。并规定四个超参数:滤波器尺寸 F F F,步长 S S S。则:
- W 2 = ( W 1 − F ) / S + 1 W _ { 2 } = \left( W _ { 1 } - F \right) / S + 1 W2=(W1−F)/S+1、 H 2 = ( H 1 − F ) / S + 1 H _ { 2 } = \left( H _ { 1 } - F \right) / S + 1 H2=(H1−F)/S+1、 D 1 = D 2 D_1=D_2 D1=D2
反向传播
卷积层反向传播
反向传播要计算损失函数对卷积核 ∂ L ∂ W \frac { \partial L } { \partial W } ∂W∂L、偏置 ∂ L ∂ b \frac { \partial L } { \partial b} ∂b∂L以及输入图像的导数 ∂ L ∂ X \frac { \partial L } { \partial X} ∂X∂L。
卷积层正向传播的公式为 μ i j = ∑ p = 1 f ∑ q = 1 f x i + p − 1 , j + q − 1 × w p q + b \mu _ { i j } =\sum _ { p = 1 } ^ { f } \sum _ { q = 1 } ^ { f } x _ { i + p - 1 , j + q - 1 } \times w _ { p q } + b μij=p=1∑fq=1∑fxi+p−1,j+q−1×wpq+b实例如下: [ u 11 u 12 u 21 u 22 ] = [ x 11 x 12 x 13 x 21 x 22 x 23 x 31 x 32 x 33 ] ∗ [ w 11 w 12 w 21 w 22 ] + [ b b b b ] \left[ \begin{array} { l l } { u _ { 11 } } & { u _ { 12 } } \\ { u _ { 21 } } & { u _ { 22 } } \end{array} \right] = \left[ \begin{array} { l l l l } { x _ { 11 } } & { x _ { 12 } } & { x _ { 13 } } \\ { x _ { 21 } } & { x _ { 22 } } & { x _ { 23 } } \\ { x _ { 31 } } & { x _ { 32 } } & { x _ { 33 } } \end{array} \right] * \left[ \begin{array} { l l l } {w_ { 11 } } & { w _ { 12 } }\\ { w_ { 21 } } & { w _ { 22 } } \end{array} \right]+ \left[ \begin{array} { l l } { b } & { b } \\ { b } & { b } \end{array} \right] [u11u21u12u22]=⎣⎡x11x21x31x12x22x32x13x23x33⎦⎤∗[w11w21w12w22]+[bbbb] = [ x 11 w 11 + x 12 w 12 + x 21 w 21 + x 22 w 22 + b x 12 w 11 + x 13 w 12 + x 22 w 21 + x 23 w 22 + b x 21 w 11 + x 22 w 12 + x 31 w 21 + x 32 w 22 + b x 22 w 11 + x 23 w 12 + x 32 w 21 + x 33 w 22 + b ] =\left[ \begin{array} { l l } { x _ { 11 } w _ { 11 } + x _ { 12 } w _ { 12 } + x _ { 21 } w _ { 21 } + x _ { 22 } w _ { 22 } +b} & { x _ { 12 } w _ { 11 } + x _ { 13 } w _ { 12 } + x _ { 22 } w _ { 21 } + x _ { 23 } w _ { 22 }+b } \\ { x _ { 21 } w _ { 11 } + x_ { 22 } w _ { 12 } +x _ { 31 } w _ { 21 } + x_ { 32 } w _ { 22 }+b} & {x _ { 22 } w _ { 11 } + x _ { 23 } w _ { 12 } +x _ { 32 } w _ { 21 } + x _ { 33 } w _ { 22 }+b } \end{array} \right] =[x