机器学习中使用的神经网络第五讲:CNN
Geoffery Hinton教授的Neuron Networks for Machine Learning的第五讲主要介绍物体识别问题的难点及克服这些难点的方法,重点介绍了数字识别和物体识别中使用的卷积网络。
Why object recognition is difficult
我们知道识别真实场景中的物体是很困难的,这一小节我们来介绍造成这些困难的一些东西。
- Segmentation: 在一个图像中,我们很难将其中的一个物体与其他的物体分隔开。在现实生活中,我们人类有两只眼睛且我们身体可以移动,这样在视觉上可以很容易做到分辨物体。而图像是静态的,且一个物体很可能被另一个物体遮住一部分,这就造成了信息的缺失。
- Lighting: 像素点的密度/亮度(intensity)是由物体的亮度决定的,我们从不同亮度的图像中得到的信息是不同的。
- Deformation: 非仿射方式的变形也使得识别变得困难
- Affordances: 这里还涉及到功能可见性(affordance)的问题,有很多物体是从用途角度去定义的,而非从视觉角度,例如椅子有着各种各样的物理性状。
- Viewpoint: 视角的变化会造成图像的变化,而标准的学习方法是无法应付的。
Achieving viewpoint invariance
这一小节我们来讨论视觉不变性(viewpoint invariance)。我们在看到一个物体时通常会有不同的观察角度,因此得到的物体在每个像素上都会有偏差。这些使得物体识别非常不同于其他的机器学习任务,我们在这里讨论几种尝试解决这一问题的方法。
我们人类是如此的擅长视角不变性(viewpoint invariance),以至于我们都不能领会它到底有多难。这是计算机感知领域的主要难题之一,无论是在工程领域还是在学术领域(这里用的词汇是psychology,但我觉得翻译为“学术”较恰当)都还没有通用的可接受的解决方案。下面列出了几种方法:
- Use redundant invariant features.
- Put a box around the object and use normalized pixels.
- Lecture 5c: Use replicated features with pooling. This is called “convolutional neural nets”
- Lecture 5e: Use a hierarchy of parts that have explicit poses relative to the camera.
第一种方法是不变性特征方法(invariant feature approach),告诉我们要提取大量冗余特征,且这些特征在经过旋转缩放等转换时是不变的。当有了足够的不变性特征时,这里仅仅有一种方法来将这些特征组合成一个物体。(我们不需要清楚得了解特征之间的关系,因为这些关系已经包含在一些特征之中)但对于识别来讲,我们必须避免提取来自不同物体的部分的特征。
第二种方法我们称之为the judicious normalization approach。用一个盒子来圈住物体,并用它来作为标准像素集合的坐标框架。这可以解决dimension-hopping问题,如果选择的盒子正确,那我们就可以让物体的同意部分始终对应图像的同一块标准像素。另外盒子对于许多不同的自由度还可以提供不变性:translation、rotation、scale、shear、stretch等等。但是选取盒子是非常困难的,这是因为可能存在分割错误、遮盖、奇异的视角等问题。
下图给出了蛮力一般化的方法(the brute force normalization approach)。
第三种和第四种方法我们会在下面的小节中介绍。
Convolutional nets for digit recognition
这一小节介绍数字识别中使用卷积网络,深度卷积网络在手写数字辨识上取得了很高的精度,并应用于实践。
卷积神经网络基于复制特征(replicated features)的思想,如果特征探测器(feature detector)在图像的某个部分是有效的(useful),那么该探测器在图像的其他部分也很可能是有效的。所以,卷及神经网络的思想是在图像的所有不同位置上建立统一特征探测器的不同复制。下图右侧给出了一个实例,图中三个探测器处理图像的不同部分,每个探测器有对应九个像素点的权重参数,而三个探测器的参数则是一样的。我们可以尝试跨规模和方向的复制,但费力不讨好;跨位置的复制已经大大减少了要学习的自由参数(free parameters)的数量(例如下图中三个探测器对应的27个像素点只产生9个参数)。我们可以使用多种映射,每种映射都有相同特征的复制,而在不同位置的特征又是相同的。
下图讲反向传播来是实现权重的线性限制。
探测器到底实现(achieve)了怎样的复制特征,是很令人困惑的。很多人认为是平移不变性(translation invariance),但实际的复制特征是equivariance而不是invariance。下图给出了一个来说明equivariant activities。具有不变性的是knowledge:如果你知道怎样在图像的一个部分探寻特征,那你也就知道如何在其他部分探寻同样的特征。这就是说,在行为(activities)上我们实现的是equivariance,而在权重(weights)上我们实现的是invariance。
如果我们想在行为上实现invariance,那我们要做的就时池化(pooling)。池化可以减少下一层的输入,大大减少待求的参数数量。但经过多次池化,我们会丢失一些信息。例如在一个图像中通过池化我们大致的探测到了眼睛、鼻子、嘴巴,那我们就可以确定图像中包含一张脸。但如果我们想确定这张照片是谁的,那我们就需要得到眼睛、鼻子、嘴巴之间的位置相关信息等,而这些信息在做池化时可能就丢失了。
下面介绍了由Yann LeCun和他的团队提出的Le Net,这是一个在向前反馈网络中使用了反向传播的手写数字识别系统。
下图是LeNet5的一个结构图。输入时一张$32\times32$的图像,C1层是从输入层得到的是6张不同的$28\times28$的原图像的局部映射,S2层又从C1层得到6张不同的$14\times14$的映射,如此进行下去,直至得到输出。
在100000个测试用例中,LeNet5只犯了82次错,下图列出了这82组数据,可以看到这样的数据我们用人眼去识别都不一定正确。
下图是对先验知识的处理。
错误率降低了是不是说明模型的性能提升了呢,答案是否定的。这要取决于模型所犯错误的类型,下图给出了一个例子。我们只看表格中的红色数字,左下表格中相同的训练时间下模型1正确而模型2犯错的测试数据只有1组,而模型1犯错模型2正确的测试数据有11组,明显可以看出模型2要优于模型1。右下表格,模型1与模型2的训练时间分别为40hours和30hours,而二者的犯错比为25:15,这说明模型2训练的时间短犯错少,其要优于模型1。
Convolutional nets for object recognition
这一小节我们使用卷积神经网络来实现物体识别。上一小节的手写数字本来就是2-D的,而现实中3-D的物体在转换成2-D的图像时会丢失很多信息,这就增加了很大的难度,下图列出了从2—D手写数字到3-D物体增加的一些东西。
这里提到了ImageNet上的竞赛,该竞赛提供了1,200,000张高分辨率图像。分类的目标是给定一张图像,模型最终给出的5中可能的标记中包含正确的标记(1000选5)。定位的目标是模型给出的物体定位于物体的实际位置要有至少50%的重叠。
这里列出了ImageNet中CNN的一个例子,如下图所示。
下图列出了提高泛化能力的两个技巧。
最后还提到了硬件。
最后还提到了在高分辨率图像中辨识道路的一个问题。