AI 入门 101

什么是CNN(卷积神经网络)?

mm

也许你曾经想知道Facebook或Instagram如何能够自动识别图像中的面部,或者Google如何允许你通过上传自己的照片来搜索网络上的类似照片。这些功能都是计算机视觉的例子,它们都是由卷积神经网络(CNN)驱动的。那么,什么是卷积神经网络?让我们深入了解CNN的架构,并了解它们如何工作。

什么是神经网络?

在我们开始讨论卷积神经网络之前,让我们先定义一下普通的神经网络。有另一篇文章讨论了神经网络的主题,所以我们不会在这里深入探讨。然而,简要来说,神经网络是受人类大脑启发的计算模型。神经网络通过调整“权重”来操作输入数据,这些权重是关于输入特征之间的关系以及对象类别的假设。随着网络的训练,权重的值会被调整,希望它们能够收敛到准确捕捉特征之间关系的权重。

这就是前馈神经网络的工作原理,CNN由两部分组成:前馈神经网络和一组卷积层。

什么是卷积神经网络(CNN)?

卷积神经网络中的“卷积”是什么?卷积是一种数学运算,它创建了一组权重,基本上是创建图像的某个部分的表示。这种权重集被称为核或滤波器。滤波器比整个输入图像小,仅覆盖图像的一个子区域。滤波器的值与图像的值相乘。然后,滤波器移动到图像的新区域,重复该过程,直到整个图像都被覆盖。

另一种思考方式是想象一面砖墙,砖块代表输入图像的像素。一个“窗口”正在沿着墙壁滑动,这就是滤波器。通过窗口可见的砖块是其值被滤波器值乘以的像素。因此,这种使用滤波器创建权重的方法通常被称为“滑动窗口”技术。

滤波器在整个输入图像上移动的输出是一个代表整个图像的二维数组。这个数组被称为“特征图”。

为什么卷积是必不可少的

创建卷积的目的是什么?卷积是必要的,因为神经网络必须能够将图像中的像素解释为数字值。卷积层的功能是将图像转换为神经网络可以解释的数字值,然后从中提取相关模式。卷积网络中的滤波器的任务是创建一个可以传递到神经网络后面的层的二维值数组,这些层将学习图像中的模式。

滤波器和通道

图片来源:cecebur via Wikimedia Commons,CC BY SA 4.0(https://commons.wikimedia.org/wiki/File:Convolutional_Neural_Network_NeuralNetworkFeatureLayers.gif)

CNN不仅使用一个滤波器来学习输入图像的模式。使用多个滤波器,因为不同滤波器创建的不同数组会导致对输入图像的更复杂、更丰富的表示。CNN中常见的滤波器数量是32、64、128和512。滤波器越多,CNN就有更多机会来检查输入数据并从中学习。

CNN通过分析像素值之间的差异来确定对象的边界。在灰度图像中,CNN只会考虑黑白、亮暗的差异。当图像是彩色图像时,CNN不仅要考虑亮暗,还要考虑三个不同的颜色通道:红、绿和蓝。在这种情况下,滤波器具有3个通道,就像图像本身一样。滤波器的通道数被称为其深度,滤波器的通道数必须与图像的通道数相匹配。

卷积神经网络(CNN)架构

让我们来看看卷积神经网络的完整架构。每个卷积网络的开始都有一个卷积层,因为它是必要的,可以将图像数据转换为数字数组。然而,卷积层也可以在其他卷积层之后,这意味着这些层可以堆叠在彼此之上。具有多个卷积层意味着一个层的输出可以经过进一步的卷积,并以相关模式组合在一起。实际上,这意味着当图像数据通过卷积层时,网络开始“识别”图像的更复杂的特征。

ConvNet的早期层负责提取低级特征,例如组成简单线条的像素。ConvNet的后期层将这些线条连接成形状。从表面分析到深度分析的过程继续,直到ConvNet能够识别复杂的形状,如动物、人脸和汽车。

数据经过所有卷积层后,进入CNN的密集连接部分。密集连接层类似于传统的前馈神经网络,节点排列成层并相互连接。数据通过这些密集连接层,学习卷积层提取的模式,并且网络能够识别对象。

博客作者和程序员,专攻 Machine Learning Deep Learning 领域。Daniel 希望帮助他人利用 AI 的力量为社会做好事。