库伦旗资讯网

AI入门:卷积神经网络

在人工智能方面,你必须谈论深度学习,但是当谈到深度学习时,你不能谈论卷积神经网络。如果将深度学习比作中国的互联网世界,卷积神经网络和递归神经网络就是腾讯和阿里的地位。今天,我们主要讨论卷积神经网络。卷积神经网络可以解决什么问题?它的结构是什么?你是怎么学习的?您申请的具体产品是什么?本文将逐一回答每个人。

如果您不熟悉深度学习,我建议您查看上一篇文章《深度学习到底有多深?》,并对深度学习有一定的了解。所遵循的讨论可能更容易理解。

以下是本文中讨论的概述:

以下卷积神经网络,我们使用缩写CNN。

01为什么我需要使用CNN?

1.普通神经网络遇到什么问题?

假设我们想要进行图像识别,将图片投入机器,机器可以理解每个像素的值,如下图所示:

在我们构建神经网络模型之后,我们需要做的是使用数据训练。我们需要确定的最后一件事是神经元参数w和b,以便我们确定模型。

假设我们输入了一个50 * 50像素的图像(图像已经非常小),它仍然有2500像素,而我们的生活基本上是RGB彩色图像,有三个通道,那么加起来就是2500 * 3=7500像素。

如果使用普通的完全连接,深度更深,有太多参数需要确认,这对于计算机和训练模型的计算能力来说是困难的。

因此,普通神经网络的问题是有太多的参数需要确认。

CNN如何解决这个问题?请往下看。

2. CNN如何解决这个问题?

第一步:本地监控

假设我们想看看图片中是否有猫的耳朵。也许我们不需要看整个图片,只看一个部分。所以看看它是否是一只猫,只需看看是否有猫尾巴,是否有猫嘴,是否有猫眼,如果有,那么机器预测这张照片是猫。

因为这种方法着眼于图片的局部部分,而不是全部,也就是说,神经元连接到部分特征变量,而不是所有特征变量,因此参数相对较小。 (如果你在这里不理解它并不重要,我们稍后会解释)。

你可能会怀疑当你看到这个,我怎么知道要采取哪个部分,我怎么知道猫的耳朵在图片中的位置?别担心,我稍后再谈。

第2步:采样,缩小图片

假设我们要识别一张50 * 50像素的猫照片。如果我们将图像缩小到25 * 25像素,我们仍然可以看到它是猫照片。

因此,如果图像减少,则相当于特征变量的输入,这也可以减少参数的数量。

卷积神经网络使用上述两个步骤来减少参数。特定CNN的架构是什么?它是如何运行的?我们接下来将详细讨论。

02 CNN架构

CNN的架构流程图:

第一步:卷积,即本地监控。

第二步:特征采样,即缩小图像。

然后重复第一步和第二步(重复多少次,人为决定)。

第三步:完全连接,将第一步和第二步的结果输入完全连接的神经网络,最后输出结果。

1.卷积

首先,将图像转换为机器可识别的图案,并且每个像素的颜色值由矩阵表示。为方便起见,我们将其简化为6 * 6像素并仅采用一层RGB图像。

然后,我们使用一些滤镜与输入图像的矩阵进行卷积。 (如果你不知道卷积是如何工作的,你可以问百度)

什么是过滤器?

过滤器用于检测图片是否具有某个特征。卷积值越大,此功能就越明显。

话虽如此,让我们回顾前面提到的问题:我怎么知道要采取哪个部分,我怎么知道猫的耳朵在图片中的位置?

使用的方法是移动窗口卷积。

相同的滤波器将在原始图像矩阵上连续移动,每次移动时,它都会进行卷积。 (每次移动的距离是人为确定的)

所以在移动之后,它相当于一个过滤器将检测到完整的图片,其中有类似的功能。

卷积和神经元之间有什么关系?

上图中有3点需要解释:

1)每次移动,相当于拾取神经元。

2)对于每个神经元,并非所有输入都连接,只需要部分输出。

说到这一点,你可能会再次怀疑。移动是一个神经元,所以不会有很多神经元?不能有更多的参数?

确实可能存在许多神经元,但是当移动相同的滤波器时,参数与公共参数强制一致。

3)因此可能有很多神经元由相同的滤波器运动产生,但它们的参数是常见的,因此参数不会增加。

使用不同过滤器进行卷积:

同一层可能不仅仅是带滤波器的卷积,它可能不止一个。

不同的滤镜识别不同的特征,因此不同的滤镜具有不同的参但是同样的过滤器,参数是一样的。

因此,卷积的特征是:

本地检测

相同的过滤器,共享参数

3.汇集(最大池)

第一次卷积,重新汇集,流程图:

在用滤波器1卷积之后,获得4×4矩阵。假设我们按每4个元素分组(其中有多少是人为确定的),并且从每个组中选择最大值。为了表示,形成一个新的矩阵,你得到一个2 * 2矩阵。这个过程正在汇集。

因此,在合并之后,特征变量减少,并且还需要确定的参数也减少。

4.完全连接

在多次卷积和合并之后,最终合并的结果被输入到完全连接的神经网络(层的数量可能不需要很深),并且最终可以输出预测结果。

所以在这里,我们已经完成了CNN的工作流程,但每个步骤的具体含义是什么,如何理解?

也许你不太确定,然后我们会用一些视觉方法来帮助你理解。

03 CNN如何学习?

我们以AlexNet为例向您展示CNN的一般可视化过程。

AlexNet是Alex Krizhevsky等人。在2012年ImageNet竞赛中提出了一种新的卷积神经网络,并获得了图像分类问题的最佳分数(Top-5错误率为15.3%)。

AlexNet的网络架构:

实际上,AlexNet的结构非常简单,输入是一个224×224的图像,经过5个卷积层,3个完全连接的层(包括一个分类层),来实现最终的标签空间。

AlexNet学到的功能是什么样的?

第一层:所有都是填充块和边界等功能。

中间层:了解一些纹理特征。

更高层:接近分类器的级别,您可以清楚地看到对象的形状特征。

最后一层:分类层是对象的完全不同的姿势,根据不同的对象呈现不同的姿势特征。

因此,它的学习过程是:边缘→部分→整体。

对于卷积神经网络的可视化,如果您想了解更多,可以参考这篇文章。

04 AlphaGo

之前我们曾提到AlphaGo对CNN很有用。如何具体应用?以下是每个人的简要回答:

我们认为Go是一个19 * 19像素的图像,每个像素的值:有黑点,白色是-1,空是0。

因此,输入板是所有像素的矩阵值,输出是下一滴的位置。

那么这与CNN有什么关系呢?

我们知道CNN擅长的是检测本地功能,这也可以将此技能应用到下一个Go。

例如,上面的功能显示光盘表面是否有这样的功能,如果有,下一步是什么。就像玩石头剪刀和检测另一侧的剪刀一样。机器的应对策略是制作宝石。

可能还有许多不同的功能,因此需要不同的过滤器来检测。

此外,相同的特征可能出现在不同的位置,因此也可以通过滤波器移动的方法来检测。

AlphaGo汇集了吗?

当你谈到它时,你会好奇AlphaGo是否使用了CNN的汇集。因为合并是为了缩小图片,Go是19 * 19分。如果它减少到10 * 10点,它可以工作吗?

实际上,AlphaGo并没有使用这一池化步骤,因此据说CNN不一定要使用池化,或者它需要解决实际问题和灵活应用。

好吧,我在这里完成了CNN,我将写一篇关于深度学习的另一个主要部分的文章:循环神经网络RNN。有兴趣的学生记得要注意。