前言
上一篇简要回顾了深度学习与计算机视觉技术的演变史,其中与计算机视觉关联最紧密的深度学习网络就是卷积神经网络(CNN),而谈CNN的原理,最早可以追溯到动物视觉感知机制的发现。
一、
大脑皮层工作原理
讲到计算机视觉,就不能忽视计算机与大脑之间的区别和联系。人工智能前沿领域的研究者杰夫·霍金斯认为研究智能问题最好的办法,就是利用人脑生物学提供的细节作为约束与指引。2002年8月,他创办 “红杉”神经系统科学研究所,致力于全面研究大脑皮层理论,并在《人工智能的未来》一书中比较清晰直观地阐述了人的大脑是如何工作的,包括与视觉相关的研究理论。
1.1 恒定表征
如图1所示,大脑视觉区域可以抽象为一个双向传递信息的分层结构(当然真实的大脑比这复杂得多),生物学家将它们标记为V1区、V2区、V4区和IT区,从双眼视网膜的视觉输入首先传递到V1区,可以把这些输入看作是由约100万个轴突(视神经)所承载的不断变化的模式,这里的“模式“就是指在任何一个时间点上,一些轴突会触发出称作”动作电位“的电脉冲,而其他的轴突则保持静止不动,这样一束轴突上的集体活动就构造一个”模式“。然后,这些信息就沿着轴突瞬间从一个区域向上逐层传递到另一个区域。
图 1
给人安上一个跟踪记录眼球运动的装置,会发现人眼在看物体时,视觉运动并非连续稳定的,而每次不同的扫视就会得到一个崭新的“模式“。然而,当你每次看同一张脸时,它看上去并没有变形,这正是恒定表征的奥秘。
将一根探针深入到V1区来看单个细胞是如何响应的,会发现任一细胞都只针对视网膜极小一部分的视觉输入做出反应,且异常活跃。而当把探针深入到顶端区域,会发现该区域细胞的感应域覆盖整个视觉空间,例如,当我们看同一张脸时, IT区某个细胞会一直被激烈地触发,一直保持活跃,不再像顶层细胞那样随着扫视不断切换状态。
图 2
如图2所示,研究证明,每个V1区神经元都有一个只针对视网膜一极小部分的感应域,也就是说,V1区细胞似乎并不清楚眼前是什么有意义的物体,仅仅是视觉世界的一个针孔大小的部分。而且,V1区每个细胞也都只响应特定类型的输入模式,例如,在某个细胞的感应域内,只有看到倾斜为30度的直线才活跃,然后,随着每一次新的注视,细胞的感应域换到不同的视觉空间,活跃状态就很容易改变。于是,从视网膜到IT区,细胞从飞速变化、对空间特异性敏感、侧重识别细微特征到状态恒定、对空间特异性不敏感、侧重识别目标改变,从而实现恒定表征。
1.2 整合感觉
再来看从较高区域传递信息到较低区域的反馈连接。一方面,大脑中有个较高层次的脑皮层区,叫联合区,接收诸如触觉、听觉、视觉等输入,并将这些输入进行整合,如图3所示。当某种感觉区域向上传递信息给联合区,联合区将大脑皮层所有感觉区域和运动区连接起来,基于得到的表征生成一个模式向下回流到各个区域,从而产生触觉、听觉、视觉等感觉的预测,或者引发运动区采取动作。此类多感觉的预测随时都在发生,比如当我感觉到并听到鼠标点击页面的声音,通过触觉和听觉的输入你会识别出这是什么操作,于是我会预测看到什么,但如果页面并没有显示预期的内容时,我会感到惊讶,然后调整我的感觉和动作。
图 3
当然所有的感知与预测都是从经验中学习的,我们期待点击鼠标切换页面和接下来就会看到预期内容,这是因为它们过去就是这样的,这得归功于脑皮层有很大的容量可以记住这些模式,即上下层级之间的连接关系。当传入大脑的输入中有与之前学得的相同的模式,脑皮层就会将它们用来预测未来的事件。
二、
从猫视觉皮层研究到CNN
从1958年对猫视觉皮层的研究起,逐渐明确了上述这种动物视觉概念结构。早在1980年,日本NHK技术研究所福島邦彦提出一种NeoCognitron网络,后来杨乐昆深受这种网络的影响,终于提出了CNN网络。
图 4
如图4所示,CNN的基本结构包含卷积层、激活层、池化层。其中,卷积层模拟对特定图案的扫视,通过不同滤波器从不同特征角度扫描图像,然后经过激活层做非线性变换,表现出对不同图案的响应状态,再由池化层模拟感受野实现位移不变性,比如图5所示的2*2最大池化,只要2*2的感受野区域内任何位置出现的最大值都为0.8,那么对应的响应状态不会变。
图 5
2.1 卷积层
具体来讲,卷积层主要有卷积运算、填充、滑动几个操作。
对于卷积运算,一般用更直观的互相关运算替换,其和卷积运算几乎一样但不对核进行翻转。如图6所示,通过将滤波器在输入图像上按从左往右、从上往下的顺序滑动,依次按元素对应相乘再求和,并加上一个偏置来得到特征图对应位置的输出。
图 6
其中每次滑动的行数或列数的间隔称为步幅,比如图7(a)所示,将步幅设为2,则每次隔2个像素滑动一次。在进行卷积之前,有时要向输入数据的周围填入固定的数值,称为填充,是卷积运算中经常会用到的处理。比如图7(b)所示,对大小为4×4的输入数据应用幅度为1 的0填充,变成了6×6的形状,然后,应用大小为3×3的滤波器,生成了大小为4×4的输出数据,保持了原来的空间大小,避免多次卷积后空间缩得很小。
图 7
卷积神经网络有三个特性,第一个是局部连接,与全连接相比,其能有效减少网络中相邻层的连接数,降低模型的计算量。如图8(a)所示,对于4×4的二维输入到3×3的二维输出,全连接有16×9=144个权值,而采用2×2卷积的话,每个输出元素只与前面4个输入元素相连,权值只要4×9=36个,是全连接的1/4。另外,为了进一步减少训练参数,CNN采用权值共享机制,即同一个特征图使用相同的滤波器对输入进行计算,比如这里9个输出元素都由同一个滤波器扫描输入图像得到,就只需4个参数,这是其第二个特性。当然,只使用一个滤波器,提取的特征比较单一,一般会使用多组滤波器,学得更丰富的图像特征,这就对应了CNN的第三个特性,即多通道卷积。无论输入还是输出的特征图,通常都不是单一的二维图,如图8(b)所示,一副彩色图像通常有R、G、B三个通道,于是滤波器也需设计为三通道,与对应的输入图像通道做卷积,然后相加得到输出,同时,设计多组滤波器,可以输出多个特征图,对应图像的不同特征。
图 8
2.2 池化层
图 9
前面提到,池化层,是为了缓解卷积层对位置的过度敏感性,实质是对特征进行降维并保留图像最有效的信息。具体来说,它有三个特征,无需参数学习、通道数不变、对微小的位置变化具有鲁棒性、对微小的位置变化具有鲁棒性,也就是说,输入数据发生微小偏差时,池化仍会返回相同的结果。比如图9所示,这里对输入数据在宽度方向上偏离1 个像素后,最大池化的输出仍为相同的结果。当然还有别的池化方式,比如平均池化,即取对应区域内的平均值。从仿生的角度来理解,通过池化就能逐层扩大感受野,越来越注重目标的识别,达到恒定表征。直观上,就是表现为学习不变性,比如图10所示,这里用三个学得的过滤器和一个最大池化单元可以学得对旋转变换的不变性,这三个过滤器都旨在检测手写的数字5,每个过滤器尝试匹配稍微不同方向的5。当输入中出现5时,相应的过滤器会匹配它并且在探测单元中引起大的激活。然后,无论哪个探测单元被激活,最大池化单元都具有大的激活。
图 10
2.3 分层表达
CNN一般堆叠多层卷积层,随着层数的增加,所提取的特征会变得越来越复杂,这就和前面提到的人的视觉感知很相似。比如图11所示,通过可视化不同卷积层提取的特征,会发现随着层次加深,提取的特征从简单的形状向更高级的信息变化,最后能识别出整体。
图 11
2.4 从LeNet到AlexNet
正如前面“历史篇”所提及的,多年以后AlexNet的发布,才引发出深度学习热潮。其实它的网络结构和最初的CNN鼻祖——LeNet(如图12所示)基本上没有什么特别大的差异,输入经多次连续交替的卷积层和池化层,最后经全连接层输出结果。当时LeNet 能在小数据集上取得好的成绩,但是在更大的数据集上表现并不尽如人意。一方面,因为神经网络计算复杂,当时像GPU这样的加速硬件并不普及,要训练一个多通道、多层、包含大量参数的卷积神经网络在当年很难完成。另一方面,当时对于参数初始化、非凸优化算法等诸多问题的研究也不够深入,要训练好一个复杂的神经网络还是比较困难。
图 12
如图13所示,AlexNet除了加深网络层数,在一些细节部分还是提出了独特的改进,比如:1)激活函数改为更简洁的ReLU激活函数,当模型参数初始化不当的时候,不会再像Sigmoid那样可能在正区间得到几乎为0的梯度,导致梯度消失而无法反向传播更新参数;2)引入局部响应归一化来加快收敛;3)使用Dropout正规化手段来控制全连接层的模型复杂度,提升模型的泛化能力;4)引入了图像增强,例如翻转、裁剪和颜色变化,从而进一步扩大数据集来缓解过拟合。AlexNet还有一个特殊的地方就是采用了卷积分组,主要是因为当时阿力克斯他的显卡不够强大,但他手上有两块GTX580 GPU,于是设计了一种双数据流的方式,让两块GPU并行地分别处理一半模型的参数训练。不过今天GPU内存已经得到长足的发展,一般不再需要这样特别设计了。
图 13
参考文献
[1]Jeff Hawkins, Sandra Blakeslee. 人工智能的未来[M].陕西科学技术出版社, 2006.
[2]Ian Goodfellow, Yoshua Bengio, Aaron Courville. 深度学习[M].人民邮电出版社, 2017.
[3]叶韵. 深度学习与计算机视觉 : 算法原理、框架应用与代码实现[M]. 机械工业出版社, 2018.
[4]Y. Lecun, L. Bottou, Y. Bengio and P. Haffner, “Gradient-based learning applied to document recognition,” in Proceedings of the IEEE, vol. 86, no. 11, pp. 2278-2324, Nov. 1998.
[5]Krizhevsky, Alex, Ilya Sutskever, and Geoffrey E. Hinton. Imagenet classification with deep convolutional neural networks. Advances in neural information processing systems. 2012.
[6]Khan A, Sohail A, Zahoora U, et al. A Survey of the Recent Architectures of Deep Convolutional Neural Networks[J]. arXiv preprint arXiv: 1901.06032, 2019.