在机器视觉和其他很多问题上,卷积神经网络(Convolutional Neural Network,CNN)取得了当前最好的效果,被广泛用于各个领域,在很多问题上都取得了当前最好的性能。
卷积神经网络原理
卷积神经网络发展历史中的第一个里程碑事件是20世纪60年代的科学家提出了感受野(Receptive Field)。当时科学家通过对猫的视觉皮层细胞研究发现,每一个视觉神经元只会处理一小块区域的视觉图像,即感受野。
深度学习的许多研究成果都离不开对大脑认知原理的研究,尤其是对视觉原理的研究。1981年的诺贝尔医学奖颁发给了 David Hubel(出生于加拿大的美国神经生物学家)、TorstenWiesel和Roger Sperry。前两位的主要贡献是发现了视觉系统的信息处理,可视皮层是分级的。
人类的视觉原理如下:从原始信号摄入开始(瞳孔摄入像素(Pixels)),接着进行初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(例如大脑判定眼前物体的形状,是圆形的),接着进一步抽象(例如大脑进一步判定该物体是只气球)。对于不同的物体,人类视觉也是通过这样逐层分级来进行认知的:可以看到,最底层特征基本上是类似的,就是各种边缘,越往上越能提取出此类物体的一些特征(轮子、眼睛、躯干等),到最上层,不同的高级特征最终组合成相应的图像,从而能够让人类准确地区分不同的物体。
我们可以很自然地想到:是否可以模仿人类大脑的这个特点构造多层神经网络,较底层的识别初级的图像特征,若干底层特征组成更上一层特征,最终通过多个层级的组合在顶层做出分类呢?答案是肯定的,这也是卷积神经网络的灵感来源。
1980年前后,日本科学家福岛邦彦(Kunihiko Fukushima)在Hubel和Wiesel工作的基础上,模拟生物视觉系统并提出了一种层级化的多层人工神经网络,即"神经认知"(Neurocognitron),以进行手写字符识别和其他模式识别任务。神经认知模型在后来也被认为是现今卷积神经网络的前身。在福岛邦彦的神经认知模型中,两种最重要的组成单元是"S型细胞"(S-Cells)和"C型细胞"(C-Cells),这两类细胞交替堆叠在一起构成了神经认知网络。其中,S型细胞用于抽取局部特征(Local Features),C型细胞则用于抽象和容错,这与现今卷积神经网络中的卷积层(Convolution Layer)和池化层(Pooling Layer)可一一对应,卷积层完成的操作可以认为是受局部感受野概念的启发,而池化层,主要是为了降低数据维度。
卷积神经网络定义
卷积神经网络是一种多层神经网络,擅长处理图像特别是大图像的机器学习相关问题。
卷积网络通过一系列方法成功将数据量庞大的图像识别问题不断降维,最终使其能够被训练。综上所述,卷积神经网络通过卷积来模拟特征区分,并且通过卷积的权值共享及池化来降低网络参数的数量级,最后通过传统神经网络完成分类等任务。
由上文我们知道,卷积神经网络是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(Deep Learning)的代表算法之一。卷积神经网络核心网络层是卷积层,其使用了卷积(Convolution)这种数学运算,卷积是一种特殊的线性运算。
典型的卷积神经网络由卷积(Convolutional)层、池化(Pooling)层、全连接(Fully-connected)层组成。其中卷积层与池化层配合组成多个卷积组,逐层提取特征,最终通过若干全连接层完成分类,如图4-10所示。
本文节选自《PyTorch深度学习与企业级项目实战》,获出版社和作者授权发布。