专栏名称: FlyAI
目录
相关文章推荐
51好读  ›  专栏  ›  FlyAI

深度学习初学者了解CNN卷积神经网络的黄金指南

FlyAI  · 掘金  ·  · 2018-03-29 05:41

正文

深度学习初学者了解CNN卷积神经网络的黄金指南

介绍

卷积神经网络。这听起来像是一个奇怪的生物学和数学的结合,但是这些网络已经成为计算机视觉领域最具影响力的创新之一。2012年是神奇网络成长的第一年,Alex Krizhevsky用它们赢得了当年的ImageNet竞赛(基本上是计算机视觉年度奥运会),把分类错误记录从26%降到了15%,这个惊人的提高从那以后,许多公司一直在以服务为核心进行深度学习。Facebook使用自动标记算法的神经网络,谷歌的照片搜索,亚马逊的产品推荐,Pinterest的家庭饲料个性化和Instagram的搜索基础设施。

然而,经典的,可以说是最流行的,这些网络的用例是用于图像处理。在图像处理中,让我们来看看如何使用这些CNN进行图像分类。

问题空间

图像分类是获取输入图像和输出类(猫,狗等)或类的概率最好描述图像的任务。对于人类来说,承认这项任务是我们从出生那一刻起学到的第一个技能之一,并且是成年人自然而不费吹灰之力的人。即使没有两次思考,我们也能够快速无缝地识别我们所处的环境以及周围的物体。当我们看到一张图像或者只是看着周围的世界时,大部分时间我们都能够立刻刻画这个场景,给每个对象一个标签,所有这些都没有自觉地注意到。这些能够快速识别模式的技能,从先前的知识概括,

投入和产出

当一台电脑看到一个图像(以图像作为输入)时,它会看到一个像素值的数组。根据图像的分辨率和大小,它将看到一个32×32×3的数字数组(3指的是RGB值)。为了说明这一点,假设我们有一个JPG格式的彩色图像,它的大小是480 x 480.代表性的数组将是480 x 480 x 3.这些数字中的每一个都有一个从0到255的值,它描述该点的像素强度。这些数字对于我们进行图像分类时毫无意义,这是计算机唯一可用的输入。这个想法是,你给计算机这个数组的数组,它会输出的数字,描述了图像是一个类的概率(.80为猫,.15为狗,0.05为鸟等)。

我们想要计算机做什么

现在我们知道这个问题以及输入和输出了,我们来思考如何解决这个问题。我们希望计算机做的是能够区分所有的图像,并找出使狗成为狗或使猫成为猫的独特功能。这也是下意识地在我们的脑海中继续的过程。当我们看一张狗的照片时,如果照片具有可识别的特征,例如爪子或四条腿,我们可以将其分类。以类似的方式,计算机能够通过查找诸如边缘和曲线等低级特征来执行图像分类,然后通过一系列卷积层来构建更抽象的概念。这是一个CNN的一般概述。我们来详细说明一下。

生物连接

但首先,有一点背景。当你第一次听说卷积神经网络这个术语的时候,你可能已经想到了一些与神经科学或生物学有关的东西,你会是对的。有点。CNNs确实从视觉皮层中获得了生物启发。视觉皮层具有对视野特定区域敏感的细胞区域。这个想法是由1962年在一个迷人的实验由胡贝尔和威塞尔(在扩展视频)在那里他们表明,大脑中的一些个体神经元细胞只有在某个方位的边缘存在的情况下才会响应(或发射)。例如,一些神经元在暴露于垂直边缘时发射,而另一些在显示水平或对角边缘时发射。Hubel和Wiesel发现,所有这些神经元都是以柱状结构组织的,并且能够产生视觉感知。在具有特定任务的系统内部(视觉皮层中寻找特定特征的神经元细胞)内部的专门组件的想法也是机器使用的,并且是CNN背后的基础。

结构体

回到具体细节。有关CNN做的更详细的概述是,您将图像传递给一系列卷积,非线性,汇聚(下采样)和完全连接的图层,并获得输出。正如我们前面所说的那样,输出可以是一个类或者一个最能描述图像的类的概率。现在,困难的部分是了解每个层次都做了什么。所以让我们进入最重要的一个。

第一层 - 数学部分

CNN中的第一层始终是一个卷积层。首先要确保你记得这个转换(我将使用这个缩写很多)的输入是什么。就像我们之前提到的那样,输入是一个32*32*3的像素值数组。现在,解释一个conv层的最好方法就是想象一个闪烁在图像左上角的手电筒。假设这个手电筒照射的光线覆盖了5*5的区域。现在,让我们想象这个手电筒滑过输入图像的所有区域。在机器学习方面,这种手电筒被称为滤波器(有时也称为神经元或内核),而它所照射的区域称为接受场。现在这个过滤器也是一个数组数组(数字称为权重或参数)。一个非常重要的注意事项是,这个过滤器的深度必须和输入的深度相同(这可以确保数学运算出来),所以这个过滤器的尺寸是5 x 5 x 3。现在,我们来看看例如过滤器的第一个位置。这将是左上角。当滤波器在输入图像周围滑动或卷积时,它将滤波器中的值与图像的原始像素值相乘(也称为计算元素智能乘法)。所有这些乘法都被总结出来(从数学上讲,这将是总共75次乘法)。所以,现在你有一个单一的数字。记住,这个数字只是过滤器位于图像左上角的代表。现在,我们对输入音量上的每个位置重复这个过程。(下一步将过滤器向右移动1个单位,然后再向右移动1,依此类推)。输入卷上的每个唯一位置都会生成一个数字。将过滤器滑过所有位置后,您将发现所剩下的是一个28 x 28 x 1的数字数组,我们称之为激活图或功能图。你得到一个28*28阵列的原因是有一个5*5的滤波器可以放在一个32*32输入图像上的784个不同的位置。这784个数字被映射到一个28*28数组。

(快速注意:我使用的一些图像,包括上面的图像,来自Michael Nielsen的"Neural Networks and Deep Learning",强烈推荐)。

假设我们现在使用两个5 x 5 x 3滤镜而不是一个。那么我们的输出量将是28 x 28 x 2.通过使用更多的过滤器,我们能够更好地保留空间尺寸。在数学上,这是卷积层中发生的事情。

第一层 - 高层次的视角

但是,让我们从高层次谈论这个卷积实际上在做什么。每个这些过滤器都可以被认为是功能标识符。当我说功能时,我正在谈论的是直线边缘,简单的颜色和曲线。想想所有图像的共同点,最简单的特点。假设我们的第一个过滤器是7 x 7 x 3并且将成为曲线检测器。(在本节中,为了简单起见,让我们忽略过滤器深度为3单位的事实,并且只考虑过滤器和图像的顶部深度切片)。作为曲线检测器,过滤器将具有像素结构,沿曲线形状的区域是更高的数值(请记住,我们正在讨论的这些滤波器只是数字!)。







请到「今天看啥」查看全文