Clarifai:卷积神经网络是什么,如何工作
2019年07月08日 由 张江 发表
745037
0
2010年,第一个Imagenet大型视觉识别挑战赛(ILSVRC)举行。这项挑战的目标是让参与者使用算法对图像中的物体进行分类。前5名的错误率为28%,2011年降至26%。然而,在2012年,第一个深度卷积神经网络(CNN)被引入竞争,击败了它的竞争对手,错误率下降到16%。
从那以后,每一个获奖的算法都是CNN,包括2013年,Clarifai获得了所有前五名奖项,那么CNN到底是什么?
CNN是什么
CNNs是一种特殊类型的神经网络,通常是深度神经网络,用于计算机视觉任务。CNN的目的是将原始像素转换成人类(或算法)能够理解的有意义的概念。
虽然这看起来不是一项非常困难的任务,但是请考虑以下来自修改后的国家标准与技术协会(MNIST)数据集中的非常简单的图像,你可能需要眯着眼睛才能看到。
它是4,很多人很容易就能看出来。但是对于一台机器来说它是什么样子的呢?值在0到255之间。作为一个28x28灰度像素的图像,784个值中的每一个都可以取0到255之间的值。如果只给你一个784个数的列表,并告诉你这是什么数?这可能会花费你大量的时间来回答。如果我们有一个1080p的全彩图像呢?
如果我们做同样的计算,它相当于超过200万像素,每个像素对于每个颜色通道的值都在0到255之间。作为人类,我们能够只看灰度图像本身,并立即理解我们所看到的。然而,有了CNN,机器现在可以做同样的事情。
这是怎么做到的呢?神经网络的深层结构允许我们首先从图像中识别低层特征,并使用这些低层特征生成越来越高级的特征,这些特征可以编码成人类可以理解的概念,比如猫或狗。
CNN如何工作
让我们想象一个简单的分类网络,该网络训练用来识别0到9之间的10个手写数字。我们将使用Yann Lecun的LeNet架构。我们可以把它想象成8幅不同的图像。当我们浏览网络的每一层时,我们将简要地讨论它们。
1.输入层:这一层宽32像素,高32像素,只有1像素深,因为它是灰度的。
2.C1(卷积1)层:该层宽28像素,高28像素,但深6像素。在输入层和该层之间进行卷积运算在输入像素上执行(其后面的数学超出了本文的范围),但是该过程将1个原始像素通道转换为6个通道的特征。
作为习惯于灰度(1像素深)图像或全彩色(3像素深)图像的人来说,这可能会令人困惑。这里的6像素深度不是指特定颜色,而是指从前一层提取的特征。由于这是第一层,所学习的特征将很简单,如垂直线,水平线,弯曲线等。由于图像边缘周围的填充,高度和宽度略微缩小。
3.S2(子采样2)层:该层宽14像素,高14像素,但仍然是6像素深。功能相同,但它们的大小只有四分之一。子采样(或有时称为最大池)在CNN中有两个用途。
首先,它减少了稍后在网络中使用的特征映射大小。因为内存和速度可能是非常大的CNN的关注点,我们希望它们尽可能小。其次,子采样仅将最突出的特征传递给网络的后续层,同时抑制次要特征。想象一下,你正试图选择晚餐。你想根据一个关键变量(食物有多好)或4个可能并不重要的变量做出决定(食物有多好,餐馆老板喜欢狗或猫,第三个字母是什么?餐厅,司机会使用哪种车辆),子采样层允许我们忽略不相关的功能。
4.C3(卷积3)层:该层宽10像素,高10像素,深16像素。由于卷积填充,它的高度和宽度再次略微缩小,但现在它的特征层数超过两倍。
低级边缘(线条和曲线)的组合现在可以制作更复杂的形状(十字和圆形),我们可以使用这些形状来识别数字。因为这些特征词汇更复杂,我们需要更多层来表达它们。此外,我们知道这些新的更丰富的特征仅仅是第一卷积层的重要特征,因为子采样层。
5.S4(子采样4)层:该层高5像素,宽5像素,深16像素。相同数量的功能,但再次大小的四分之一。这是我们维护图像的二维视图的最后一层。从这里我们取400个神经元(5 x 5 x 16)并将它们变成400 x 1的平面向量。
6.C5(卷积5)层:该层宽120像素,1像素深(它是2维,而不是3维)。该层是前一S4层的特征的组合。通过从三维特征映射下降到一维特征向量,我们表明我们已经从图像中提取了我们需要决定概念的所有特征。现在,我们需要结合这些功能来确定图像的含义。
7.F6(特征6)层:该层宽60像素,深1像素。和之前一样,它是前一个C5层的功能组合。这是我们做出决定之前的最后一层。
8.输出层:该层宽10像素,深1像素。为什么?因为我们有十个可能的标签(数字0到9)。具有F6特征组合中最高编号的输出神经元是网络的输出。此过程即是第一张图像被识别为4的过程。
卷积体系结构,训练实践和图层类型通常比这个简单的示例复杂得多,并且可以采集大量数据进行训练。现代网络有数百层,每层的输入和输出通常是多个先前层的组合。如果与像Clarifai这样的AI供应商合作,我们将负责繁重的工作,设计和计算。无论哪种方式,CNN都是AI中迷人、复杂又实用的算法。