原文出处:Convolutional Neural Networks 原作者:Microsoft · 许可证:MIT License 中文译本由诸葛AI学院整理,仅供学习参考,版权归原作者与微软所有。
前面我们说过,神经网络处理图像的能力不错,单层感知机也能以说得过去的准确率识别 MNIST 数据集里的手写数字。但 MNIST 很特殊,每个数字都摆在图像正中间,这让任务简单了不少。
课前测验
现实里我们想认出的物体,位置不固定,不管它出现在画面哪里都得能识别。计算机视觉和一般的分类不同:在图里找某个物体时,我们是在扫描图像,寻找某些特定的模式(pattern)以及模式的组合。比如找猫,可能先看横线,横线能组成胡须,某种胡须的组合又告诉我们这确实是猫的照片。重要的是这些模式的相对位置和存在与否,不是它们在图像上的精确坐标。
提取模式,我们要用到卷积滤波器(convolutional filter)的概念。图像可以表示成一个二维矩阵,带颜色深度时是个三维张量。施加滤波器,就是拿一个较小的滤波器核(filter kernel)矩阵,对原图的每个像素,连同邻近点一起算加权平均。可以把它想象成一扇小窗滑过整张图,按核矩阵里的权重把窗内像素逐一带权平均。
原文此处并排有两张图,分别展示垂直边缘滤波器和水平边缘滤波器的效果(图作者 Dmitry Soshnikov)。
举个例子,把 3×3 的垂直边缘滤波器和水平边缘滤波器用在 MNIST 数字上,原图中存在垂直边缘、水平边缘的地方就会出现高亮(也就是较大的数值)。这两个滤波器就是用来"找"边缘的。同样,我们还能设计别的滤波器去寻找其他低层模式。原文此处有一张图,展示的是一组 Leung-Malik 滤波器(Leung-Malik Filter Bank)。
滤波器可以由我们人工设计去提取模式;也可以设计这样一种网络,让它自己学会模式。这就是卷积神经网络(convolutional neural network,CNN)背后的主要思想之一。
CNN 背后的主要思想
CNN 的工作方式建立在这几条重要想法上:
- 卷积滤波器能提取模式
- 可以设计网络,让滤波器在训练过程中自动学会
- 同样的思路也能用来在高层特征里找模式,不限于原始图像。这样 CNN 的特征提取就形成了一层层的结构:从低层的像素组合,一路到图像部件的高层组合
原文此处有一张图,画的就是这种逐层提取:底层是边缘之类的简单组合,往上逐层拼出更复杂的部件(图出自 Hislop-Lynch 的这篇论文,基于他们的研究)。
练习:卷积神经网络
接着动手,通过配套的 notebook 了解卷积神经网络如何工作、可训练的滤波器怎么做到:
金字塔架构
图像处理常用的 CNN 大多遵循所谓的金字塔架构(pyramid architecture)。作用在原始图像上的第一层卷积层,滤波器数量通常比较少(8 到 16 个),对应不同的像素组合,比如笔画的横线、竖线。到了下一层,网络的空间尺寸缩小,滤波器数量增多,简单特征就能组合出更多可能。越往最后那个分类器走,图像的空间维度越小,滤波器越多。
举个例子,看看 VGG-16 的结构。这个网络在 2014 年的 ImageNet top-5 分类中拿到了 92.7% 的准确率。原文此处有两张图,画的是 VGG-16 从图像到分类器层层收窄、滤波器逐层增多的金字塔结构(图来自 Researchgate)。