2.1 全连接神经网络的局限性

传统的全连接神经网络在20世纪80年代左右流行,但很快因为SVM等核方法的诞生而黯然失色。这是因为传统的全连接神经网络有几个重大的缺陷,下面从原理、结构等维度进行解读。

2.1.1 学习原理的缺陷

传统的全连接神经网络是一种有监督的机器学习算法,与同时期的其他机器学习算法相比,它们都需要手动提取特征作为机器学习算法的输入,主要区别仅在于学习特征映射的方法不同。

传统机器学习算法解决问题的思路如图2.1所示。

图2.1 传统机器学习算法解决问题的思路

可以看到,除了输入图和输出结果,整个流程还包括特征提取、分类器两个步骤。

首先需要对输入图进行特征提取,这些特征都是研究人员经过较长时间研究设计出来的特征描述算子。在图像处理领域,常见的特征包括颜色直方图、SIFT特征、Haar特征等。在语音识别领域,常见的特征包括频谱图、MFCC特征等。

由于以上这些特征都是研究人员依靠自身的经验总结的,必然有很多局限性。以图像处理领域为例,研究人员不可能观察待解决问题的所有相关图像样本,也无法对很高维的数据进行理解,且对非常低级的图像像素等特征的理解层次往往也不够,导致设计出来的特征不能表达非常复杂的映射。

在特征本身并没有足够的表征能力时,再强大的分类器也解决不了非常复杂的问题。

以人脸检测为例,人脸包含不同的姿态、光照、遮挡,没有一个特征能够很好地对其进行通用表征,这导致传统的人脸检测和识别算法始终无法突破商业应用的临界点,直到有了深度学习,才有了如今广泛使用的刷脸考勤、支付等应用。

基于研究人员经验,其设计的不够鲁棒的特征,从原理上限制了传统全连接神经网络的表达能力,使其只能解决比较简单的问题。

2.1.2 全连接神经网络的结构缺陷

全连接神经网络相邻层的神经元之间全部存在连接,如图2.2所示为一个BP神经网络。

图2.2 BP神经网络

下一层的所有网络节点与前一层的所有网络节点存在连接,这会导致以下几个问题。

1.巨大的计算量

全连接神经网络始于BP算法的提出,发展于20世纪90年代,那时候的计算机内存容量有限,无法存储神经网络中的大量参数。

如果一个隐藏层特征图大小为100×100,输入层的特征图大小为100×100,这意味着学习这一层需要100×100×100×100=108个参数。这些参数如果以32位的浮点数进行存储,就需要4×108字节的存储量,约等于400MB的参数量。仅仅这样的一个网络层,其模型参数量已经超过了AlexNet网络的参数量,而100×100的特征图的分辨率已经低于很多任务能够成功解决的下限。

除了需要存储海量参数,在计算过程中还需要海量的计算,这些都超过了当时硬件的能力,因此大大限制了全连接神经网络的大小,尤其是对于一些大的图像。

2.结构信息的缺失

全连接神经网络的输入没有考虑图像中的结构信息,从而丢失了平移等操作的不变性。为了学习如偏移等微小的变化,需要有足够多的参数和足够丰富的样本,最终学习到的权重,很可能在不同的位置还会有非常相似的权重。

由于以上两个缺陷,传统的全连接神经网络不可能解决大量的实际应用问题。

2.1.3 高性能的传统机器学习算法

除了全连接神经网络自身的缺陷,以SVM等为代表的核方法的成功,也阻止了神经网络方法的发展,很多原来研究神经网络的学者都转向了研究核方法。

1.Adaboost

OpenCV开源库中使用的人脸检测框架是Paul Viola和Michael J.Jones[2]提出的人脸检测经典算法(简称V-J框架),它使用的正是Adaboost分类器。在很多情况下,一个弱分类器的精度并不高,Adaboost算法的核心思想是在很多弱分类器中自适应地挑选其中分类精度更高的弱分类器,并将这些弱分类器组合起来实现一个更强的分类器。

举一个最浅显的例子,假如我们要检测一个纯红色的物体,它的颜色为(255,0,0),但现在只有3个灰度级别的分类器,各自对应着R、G、B这3种颜色。我们知道,要检测到该物体必须满足3个条件:R通道的灰度值为255,G、B通道的灰度值为0。此时如果使用任何一个灰度级别的分类器,都无法完成这个任务,会出现很多的误检。例如,红色分类器,它可以学习到R通道的灰度值必须为255,但学习不到G、B通道的信息,所以它会检测到1×255×255种颜色,其中255×254种为误检,检测精度为1/(255×255),约等于0.0000154。

但是,当我们组合3种分类器,并使其各自达到最好的学习状态时,就可以完全学习到R=255、G=0、B=0这样的特征。我们在实际使用这3个分类器的时候,可以使用串联的方法,让图片依次经过3个分类器以进行分类过滤。

虽然每个弱分类器的检测精度不到万分之一,但最终的检测精度可以达到100%,这就是Adaboost算法的核心思想。

Adaboost算法通过弱弱联合实现了强分类器,在使用的时候通常采用顺序级联的方案。在级联分类器的前端,是速度较快、性能较弱的分类器,它们可过滤大部分负样本;在级联分类器的后端,是速度较慢、性能较强的分类器,它们实现计算量更大、精度更高的检测。

2.SVM

SVM是传统分类器中非常优秀的分类器,它通过最大化分类间隔得到分类平面的支持向量,在线性可分的小数据集上有不错的分类精度。SVM可以通过引入核函数将低维映射到高维,从而将很多线性不可分的问题转换为线性可分的问题,在图像分类领域的应用非常广泛。以SVM为分类器和以HOG为特征的行人检测算法,是非常经典的算法。

因为以上种种原因,神经网络没有得到快速发展,停滞了20多年。