卷积神经网络的核心当然是卷积。
在 CNN 的卷积层中,存在着一个个填充着数字的正方形小格子,它们被称为卷积核(Kernel)。原始图片经过输入层后会变为灰度或是 RGB 数值填充的矩阵,将卷积核与图片矩阵对齐,对应格子中的数字相乘后再相加,再将得到的数字填入新矩阵,这就是卷积。
卷积核以一定的距离在图像上移动运算,这被称为步长(Stride),得到的新矩阵能反映图像的部分特征,因此被称为特征图(Feature Map)。它们既是这一层的输出,也是下一层的输入。
设定不同的卷积核,我们就能找到各种各样特征。要如何设计它们?
还记得训练吗?对于 CNN 来说,训练就是让网络根据已有的数据和它们的标签,自动确定卷积核中的数字。以拥有 5 个卷积层的 AlexNet 为例,边缘、纹理、组成……以人眼的角度观察,越靠后的卷积层提取出的特征越抽象。
除了卷积层, CNN 还有另外两个重要配件:池化层(Pooling)和全连接层。
池化层能选取图像的主要特征。常用的 Maxpooling 是保留窗口覆盖区域的最大数值,矩阵被池化后,参数会大量减少。
全连接层通常在网络的最后,能将提取到的特征集合在一起,给出图片可能是某种事物的概率。
CNN 非常擅长处理图像,正是它在各类比赛中的优异表现引领了深度学习潮流。不仅如此,将声音当作图谱处理可以完成语音识别,将词语作为向量处理可以完成机器翻译。
总而言之,CNN 是个不可多得的好工具。