1、单层卷积神经网络的构成和简单卷积神经网络
\qquad
假定第
l
l
l层卷积神经网络的输入为:
n
H
[
l
−
1
]
×
n
W
[
l
−
1
]
×
n
C
[
l
−
1
]
n_H^{[l-1]}×n_W^{[l-1]}×n_C^{[l-1]}
nH[l−1]×nW[l−1]×nC[l−1],输出为:
n
H
[
l
]
×
n
W
[
l
]
×
n
C
[
l
]
n_H^{[l]}×n_W^{[l]}×n_C^{[l]}
nH[l]×nW[l]×nC[l],令
f
[
l
]
f^{[l]}
f[l]表示第
l
l
l层卷积核的大小,
p
[
l
]
p^{[l]}
p[l]表示第
l
l
l层卷积核padding的数量,
s
[
l
]
s^{[l]}
s[l]表示第
l
l
l层卷积核stride的大小,
n
C
[
l
]
n_C^{[l]}
nC[l]表示第
l
l
l层卷积核的个数,则上述各个参数的维度关系如下所示:
\qquad
首先
n
H
[
l
]
=
⌊
n
H
[
l
−
1
]
+
2
p
[
l
]
−
f
[
l
]
s
[
l
]
+
1
⌋
n_H^{[l]}=\lfloor \frac{n_H^{[l-1]}+2p^{[l]}-f^{[l]}}{s^{[l]}}+1 \rfloor
nH[l]=⌊s[l]nH[l−1]+2p[l]−f[l]+1⌋,
n
W
[
l
]
=
⌊
n
W
[
l
−
1
]
+
2
p
[
l
]
−
f
[
l
]
s
[
l
]
+
1
⌋
n_W^{[l]}=\lfloor \frac{n_W^{[l-1]}+2p^{[l]}-f^{[l]}}{s^{[l]}}+1 \rfloor
nW[l]=⌊s[l]nW[l−1]+2p[l]−f[l]+1⌋;
\qquad
每一个卷积核的维度为
f
[
l
]
×
f
[
l
]
×
n
C
[
l
−
1
]
f^{[l]}×f^{[l]}×n_C^{[l-1]}
f[l]×f[l]×nC[l−1],激活函数的维度为:
a
[
l
]
→
n
H
[
l
]
×
n
W
[
l
]
×
n
C
[
l
]
a^{[l]}→n_H^{[l]}×n_W^{[l]}×n_C^{[l]}
a[l]→nH[l]×nW[l]×nC[l],权重维度(即所有卷积核)为:
f
[
l
]
×
f
[
l
]
×
n
C
[
l
−
1
]
×
n
C
[
l
]
f^{[l]}×f^{[l]}×n_C^{[l-1]}×n_C^{[l]}
f[l]×f[l]×nC[l−1]×nC[l],偏置的维度为:
1
×
1
×
1
×
n
C
[
l
]
1×1×1×n_C^{[l]}
1×1×1×nC[l]。单层卷积神经网络的计算过程如下图所示:
\qquad
一个只使用卷积层(convolutional layer)的简单的卷积神经网络示例如下图所示:
\qquad
卷积神经网络中除了卷积层还包括池化层(pooling layer)和全连接层(full connected layer),将在下述内容中进行讲述。
2、卷积神经网络的池化层
\qquad
应用池化层的目的在于:缩减模型的大小、提高计算速度,同时提高所提取特征的鲁棒性。池化层需要设定两个参数:池化核维度:
f
f
f和步长
s
s
s。在使用Max pooling时,将每个池化核覆盖的输入图像中最大的数字填充到输出图像中,输入图像,输出图像和池化核之间的维度关系和卷积计算时相同,均为
⌊
n
+
2
p
−
f
s
+
1
⌋
\lfloor \frac{n+2p-f}{s}+1 \rfloor
⌊sn+2p−f+1⌋ 。Max pooling的计算示意如下图所示:
\qquad
池化层最经常使用的便是Max pooling,还有一种不经常使用的池化层为Average pooling,顾名思义,试讲每个池化核覆盖的输入图像中的数字的平均值填充到输出图像中。Average pooling的计算示意如下图所示:
\qquad
假设池化层的输入图像尺寸为:
n
H
×
n
W
×
n
C
n_H×n_W×n_C
nH×nW×nC,则经过池化层处理之后的输出图像尺寸为:
⌊
n
H
−
f
s
+
1
⌋
×
⌊
n
W
−
f
s
+
1
⌋
×
n
C
\lfloor \frac{n_H-f}{s}+1 \rfloor ×\lfloor \frac{n_W-f}{s}+1 \rfloor × n_C
⌊snH−f+1⌋×⌊snW−f+1⌋×nC。需要注意的,池化层的超参数:池化核维度:
f
f
f和步长
s
s
s,均是固定的,不需要通过误差反向传播来进行进行调整。
3、一个卷积神经网络的例子
\qquad
下图展示了一个简单卷积神经网络的例子,其中包含两个卷积+池化层,三个全连接层,最终使用softmax函数输出分类结果。
\qquad
随着神经网络层数的增加,初始输入图片的维度(高度和宽度)会减小,但可以采用更多的卷积核和池化核,使得通道数量增加。上图所示卷积神经网络的激活层形状和参数数量如下图所示,参数个数计算参考:CNN卷积各层的参数和链接个数的计算
\qquad
可以发现,卷积神经网络的大多数参数集中在全连接层,卷积层的参数相对较少,池化层没有需要训练的参数;另外,激活层的维度也会随着层数的增加而逐渐减小,但如果维度减小的太快,会影响卷积神经网络的整体性能。
4、使用卷积神经网络的原因
\qquad
相比于全连接神经网络结构,使用卷积神经网络的优点主要体现在以下两个方面:参数共享和稀疏连接。 对于一幅相同的图片,使用卷积神经网络和使用全连接神经网络的参数数量对比如下图所示:
\qquad
卷积神经网络可以大大减少参数数量的原因之一在于参数共享,如一个特征检测器(垂直边缘检测器),检测器在图片的某一个区域是好用的,则这个检测器在图片的另外区域也被视为是有效的;另外一个原因在于稀疏连接,这意味着输出图像中的每个输出值之和输入图像中很少一部分的数据相关联。