之前程序辨识手写阿拉伯数字,是使用像素(Pixel)作为特征,与人类辨识图形的方式有所差异,我们通常不会逐点辨识图形内的数字,以像素辨识图形有以下缺点。
(1)手写阿拉伯数字,通常都会将字写在中央,所以中央的像素重要性应远大于周边的像素。
(2)像素之间有所关联,而非互相独立,比如1,为一垂直线。
(3)人类辨识数字应该是观察线条或轮廓,而非逐个像素检视。
因此,卷积神经网络(Convolutional Neural Network, CNN)引进了卷积层(Convolution Layer),先进行特征提取(Feature Extraction),将像素转换为各种线条特征,再交给完全连接层(Linear)辨识,也就是图1.7机器学习流程的第3步骤—特征工程(Feature Engineering)。
卷积(Convolution)简单说就是将图形抽样化(Abstraction),把不必要的信息删除,例如色彩、背景等,图6.1经过三层卷积后,有些图依稀可辨识出人脸的轮廓了,因此,模型即可依据这些线条辨识出是人、车或其他动物。
图6.1 卷积神经网络(Convolutional Neural Network, CNN)的特征提取
卷积神经网络(Convolutional Neural Network),以下简称CNN,它的模型结构如图6.2所示。
图6.2 卷积神经网络(Convolutional Neural Network, CNN)的模型结构
(1)先输入一张图像,可以是彩色的,每个色彩通道(Channel)分别卷积再合并。
(2)图像经过卷积层(Convolution Layer)运算,变成特征图(Feature Map),卷积可以指定很多个,卷积矩阵内容不是预定的,而是在训练过程中由反向传导推估出来的,这与传统的图像处理不同,另外,卷积层后面通常会附加ReLU Activation Function。
(3)卷积层后面还会接一个池化层(Pooling),作下采样(Down Sampling),以降低模型的参数个数,避免模型过于庞大。
(4)最后把特征图(Feature Map)压扁(Flatten)成一维,交给完全连接层辨识。