人脸识别等图像识别技术正在改变人们的生活,如图17-1所示,回顾之前识别MNIST数据集时,28×28的图片识别数字的成功率都徘徊在95%左右,那是什么样的技术让图像识别长足发展的呢?答案就是卷积神经网络。
图17-1 人脸识别
卷积神经网络(Convolutional Neural Network,CNN)原本是在图像处理领域应用的,后来广泛应用于文本处理、语音识别等领域。CNN是近年发展起来的,并引起广泛重视的一种高效识别图像的方法。20世纪60年代,Hubel和Wiesel在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现其独特的网络结构可以有效地降低反馈神经网络的复杂性,继而提出了卷积神经网络。现在,CNN已经成为众多科学领域的研究热点之一,特别是在模式分类领域,由于该网络避免了对图像的复杂前期预处理,可以直接输入原始图像,因而得到了更为广泛的应用,如图17-2所示。K.Fukushima在1980年提出的新识别机是卷积神经网络的第一个实现网络。随后,更多的科研工作者对该网络进行了改进。其中,具有代表性的研究成果是Alexander和Taylor提出的“改进认知机”,该方法综合了各种改进方法的优点并避免了耗时的误差反向传播。
图17-2 CNN图像处理示例图
在DNN这类全连接神经网络算法中,隐藏层的前一层的每个节点都需要与下一层的每个节点连接,当节点数量巨大时,产生的连接就非常多,这样,在硬件环境有限的情况下就几乎难以完成训练过程,如图17-3所示。
图17-3 全连接神经网络
为了解决图像处理领域全连接造成的计算量巨大的问题,人们提出了局部连接,如图17-4所示。其理论基础是基于这样的假设:生物在进行图像识别时,对图像的理解只需要处理局部的数据即可,不需要全面分析全部图像后才能进行处理。这一假设在图像处理领域得到了广泛应用,证明其简单有效。
图17-4 局部连接神经网络
在卷积神经网络中有几个概念需要介绍一下。
所谓权值共享 是指当从一个大尺寸图像中随机选取一小块,比如说8×8作为样本,并且从这个小块样本中学习到了一些特征,这时我们可以把从这个8×8样本中学习到的特征作为探测器,应用到这个图像的任意地方。特别是,我们可以用从8×8样本中所学习到的特征跟原本的大尺寸图像作卷积,从而在这个大尺寸图像上的任一位置获得一个不同特征的激活值。
如图17-5所示,展示了一个3×3的卷积核在5×5的图像上做卷积的过程。每个卷积都是一种特征提取方式,就像一个筛子,将图像中符合条件(激活值越大越符合条件)的部分筛选出来。
图17-5 CNN权值共享原理
所谓池化 是指人们可以计算图像一个区域上的某个特定特征的平均值或者最大值。这些概要统计特征不仅具有低得多的维度,同时还会改善结果。这种聚合的操作就叫做池化。
基于局部连接、权值共享以及池化层的降采样,进一步发展成了完整的CNN算法,关于CNN的详细算法说明不是本书的重点,有兴趣的读者可以参考本章最后的参考文献。