卷积核(kernel)
当我们能够理解卷积的含义之后,那理解卷积核就会简单些了,我们只要理解它是在滑动中去提取特征就可以。
卷积核的表达式为:
f
(
x
)
=
w
x
+
b
f(x)=wx+b
f(x)=wx+b
我们先想象这里有一张图片,图片有5×5一共25个像素点,每个像素点只有1和0两种取值。那么提取这样的一种图的特征,我们可以先随便设计一个卷积核来看看到底会产生什么结果,我们设计一个特别简单的卷积核。
w
=
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
]
,
b
=
[
0
]
w=[1,1,1,1,1,1,1,1,1],b=[0]
w=[1,1,1,1,1,1,1,1,1],b=[0]
w由9个1构成,在这个场景里,我们指图中黄色部分的这个3×3的小方框,从左到右从上到下的这9个点作为x向量,挨个与w相乘完成内积操作,并与b相加。这个过程就是这样了:
f
(
x
)
=
1
×
1
+
1
×
1
+
1
×
1
+
1
×
0
+
1
×
1
+
1
×
1
+
1
×
0
+
1
×
0
+
1
×
1
+
0
=
6
f(x)=1×1+1×1+1×1+1×0+1×1+1×1+1×0+1×0+1×1+0=6
f(x)=1×1+1×1+1×1+1×0+1×1+1×1+1×0+1×0+1×1+0=6
那么左上角的这个黄色小方框就会输出一个6,我们把6单独存在一个存储空间里,这个存储空间就叫做这个卷积层的Feature Map,也就是图中所示的Convoluted Feature这个部分。我们看在这样一个操作下,9个点的信息被压缩成了一个点,当然这肯定是有损压缩了,还原肯定是还原不回去了。不过确实在这个过程中有这样一个信息抽象的过程,这个抽象过程就是特征的提取。
我们把这个小黄方框的操作继续从左到右,从上到下每次移动一个方格,就相当于前面我们说的f(t)和g(x-t)两个函数通过x变化来滑动一样做这样一个卷积操作,那么右侧的Feature Map的每个点的值也都能对应产生结果了。根据我们设计的卷积核的w和b的值,剩下的8个输出值应该分别是:7、6、4、7、7、4、6、6。这样一来25个点的信息量就被压缩成了9个点,完成了特征提取和压缩两个功能。
这就是卷积层工作的大致方式。至于w和b在初始化之后,也是通过一轮一轮的训练,在降低损失函数的目的下不断变化而学习到的,而不是我们指定出来的。
在卷积核的f(x)=wx+b输出后还可能会跟着一个激励函数而且也一般会定义一个激励函数跟随其后,现在的CNN网络中的激励函数一般用ReLU。
卷积层参数
- Padding(填充)
Padding是指用多少个像素单位来填充输入图像(向量)的边界,即在图像函数的周边填充其他的像素元素,一般都是0;
目的1: 保持边界信息。因为如果不加Padding的话,最边缘的像素点信息其实仅仅被卷积核扫描了一遍,而图像中间的像素点信息会被扫描多遍,在一定程度上等于降低了边界上信息的参考程度。Padding后就可以在一定程度上解决这个问题。在实际处理的过程中肯定是卷积了一些0值以后,再从Padding后的新边界开始扫描。
目的2: 如果输入的图片尺寸有差异,可以通过Padding来进行补齐,使得输入的尺寸一致,以免频繁调整卷积核和其他层的工作模式。
- Stride(步长)
Stride就是步长,在卷积层工作的时候,Stride可以理解为每次滑动的单位。在实际工作中Stride=1的使用场景很多,因为它对于采用的细密程度保证得最好。当然Stride也可以取别的值,比如Stride=3,那么在用kernel扫描图像函数的时候就不是每次移动1个像素,而是每次移动3个像素了。这种方式直观上想一想就会觉得比较“粗糙”,因为跳过的像素行列的信息明显扫描的次数降低了。不过优点就是处理的次数变少了,加快了卷积层工作的速度。
池化层
池化层(Pooling Layer,或称池层)是在一些旧有的CNN网络设计的一层处理层。池化层的作用实际上对Feature Map所做的数据处理又进行了一次所谓的池化处理。
常见的池化层处理有两种方式:一种叫Max Pooing,一种叫Mean Pooling(也叫Average Pooling),顾名思义,一个做了最大化,一个做了平均化。除此之外还有Chunk-Max Pooling、Stochastic Pooling等其他一些池化手段。
如图:
Max Pooling就是在前面输出过来的数据上做一个取最大值的处理,比如以Stride=2的2×2为Max Pooling Filter(滤波器,我们就理解为跟卷积类似的特征处理就好了)之后,左上角就出现了这样的变化。临近的4个点取一个最大值成为Max Pooling层中的储存值。
池化层主要有以下功能;
首先,它又进行了一次特征提取,能够减小下一层数据的处理量的。其次由于这个特征的提取,能够有更大的可能性进一步获取更为抽象的信息,从而防止过拟合,得到更好的泛化,再次由于这种抽象性,所以能够对输入的微小变化产生更大的容忍,也就是保持其不变性。这里的容忍包括图形的少量平移、旋转以及缩放等变化。