CH10 卷积神经网络
10.1 卷积神经网络层级结构
左边
- 数据输入层,对数据做一些处理,比如去均值(把输入数据各个维度都中心化为0,避免数据过多偏差,影响训练效果)、归一化(把所有的数据都归一到同样的范围)、PCA/白化等等。
中间
- CONV:卷积计算层,线性乘积 求和
- RELU:激励层(ReLU是激活函数的一种)
- POOL:池化层,简言之,即取区域平均或最大
右边
- FC:全连接层
10.2 卷积操作
组成成分:
- 输入矩阵(Input)
- 核矩阵(Kernel),又称滤波器(Filter)
卷积:卷积核在图片上滑动,计算点积
(28 = 32 - 5 + 1)
3
:一般channel的维度和image保持一致
10.2.1 卷积操作-多通道
输入矩阵,核矩阵可以由多个相同的矩阵叠加在一起
比如图像通常有3个通道(Channel),分别代表红黄蓝
如果输入通道数为c1,输出通道数为c2,则共需要c1*c2个核矩阵
10.2.1 数值计算练习
4
:左上角的九宫格与filter做内积
4 =
3
∗
1
+
1
∗
0
+
2
∗
−
1
+
1
∗
1
+
1
∗
−
1
+
1
∗
3
+
1
∗
0
+
3
∗
1
+
1
∗
−
1
3* 1+1 * 0+2*-1+1 * 1+1 * -1+1 * 3+1 * 0+3 * 1+1 * -1
3∗1+1∗0+2∗−1+1∗1+1∗−1+1∗3+1∗0+3∗1+1∗−1
其他类似,最后结果2*2
输出大小公式:
(
N
−
F
+
2
P
)
/
s
t
r
i
d
e
+
1
(N-F+2P)/stride + 1
(N−F+2P)/stride+1
- N:image宽度
- F:filter宽度
- P:padding,填充,在输入特征图的每一边添加一定数目的行列,使得输出的特征图的长、宽 = 输入的特征图的长、宽
- 目的:希望每个输入方块都能作为卷积窗口的中心
- stride:步幅,卷积核经过输入特征图的采样间隔
- 目的:希望减小输入参数的数目,减少计算量
- 作用:成倍缩小尺寸,比如步幅为2,输出就是输入的1/2(不严谨的1/2)
stride = 1,padding = 0(遍历采样,无填充:padding = ‘valid’)
stride = 1,padding = 1(遍历采样,有填充:padding = ‘same’)
例1:
纯代公式了
例2:
bias:偏置单元,对应的权重都为1
10.3 池化层
降低特征维度,易于计算
常见的池化:最大池化,平均池化
最大池化:
- 可以获取局部信息,更好的保留纹理上的特征
- 如果不用观察物体在图片中的具体位置,只关心其是否出现,则使用最大池化效果比较好
平均池化:
- 保留整体数据的特征,更适用于突出背景信息时使用
- 丢掉了一部分不重要的信息,而保留更重要、更有利于特定任务的信息
- 降维、减少计算复杂度
与卷积的关系:
- 池化操作也可以多通道,定义步幅、填补等参数
- 池化操作直接在单个矩阵上进行操作,而卷积需要核矩阵在输入矩阵上操作
卷积神经网络的训练请参考:手把手搭建一个【卷积神经网络】