首页 > 编程知识 正文

卷积神经网络原理,cnn卷积神经网络三大特点

时间:2023-05-03 22:59:29 阅读:29484 作者:3619

CNN卷积神经网络原理详解(上)前言阐明卷积神经网络生物背景的计算机做什么? 卷积网络第一层全连接层训练

前言

卷积网络(convolutional network )也称为卷积神经网络(convolutional neural network,CNN ),专门用于处理类似网格结构的数据卷积网络在很多应用领域都很优秀。 “卷积神经网络”一词表示使用的是“卷积”数学运算。 卷积神经网络的工作模式如下图所示。

上图是卷积神经网络的基本结构,卷积层和池化层可以根据情况任意增加。 卷积神经网络目前具有非常广泛的应用场合,如图像识别、自然语言处理、灾难性气候预测、围棋人工智能等,但最主要的应用领域是图像识别领域。

那为什么要用卷积神经网络做这件事呢?

卷积神经网络的生物背景

如上图所示,人看到的图像,经过大脑的处理,最后出现在我们身上的就是这个图像本身,而计算机看到的图像,实际上是像素很多点的集合。 面对这堆像素,电脑不知道这是什么。 那么电脑需要做什么? 当然,就是让计算机识别这个像素堆表示的图像。 我该怎么办? 伟大的科学家们在这里借鉴了神经网络的概念关于猫观察事物时大脑皮质的工作原理。

关于这个实验,在网络和参考书中有详细的介绍,这里总结的是,根据大脑皮质的部位不同,外界对刺激的灵敏度、反应度也不同。 这很好地启发了神经网络计算的核心,不断寻找特征点,最终得到输入的到底是什么图像的问题。

让计算机做什么? 以图像为例,假设计算机看到图像时,实际上可以看到一组像素值。 假设您正在根据图像的分辨率和大小查看32x32x3的数组。 这里的3表示RGB的彩色图像。 每个数字的值在0到255之间,表示像素值的强弱。 这些数字在我们对图像进行分类时没有意义。 这是计算机唯一可以使用的输入。 这个想法是输入到名为计算机的数组中,最终输出数字,描述图像为类的概率(0.85为猫,0.1为狗,0.05为鸟等)。

现在,我们知道这个问题、输入和输出,让我们来想想如何解决这个问题。 我们希望计算机能区分所有的图像,找到让狗成为狗和猫成为猫的独特功能。 这也是一个有意识地在我们脑海中延续的过程。 我们在看狗的照片时,如果照片有指甲、四条腿等可识别的特征,可以将其分类。 同样地,计算机通过发现诸如边缘和曲线之类的低级特征来执行图像分类,并且可以由一系列卷积层构建更抽象的概念。 这是CNN的一般概述。 详细说明一下吧。

回到具体细节。 更详细地描述CNN是将图像传递到一系列卷积、非线性、收敛(缩减像素采样)和完全连接的层以获得输出。 如上所述,输出可以是类或最能够描述图像的类的概率。 那么,所有层的计算机都在做什么呢?

卷积网络第一层这一层的理论意义

卷积网络的第一层一定是卷积层,在研究卷积层在做什么之前,首先要弄清楚该层的输入是上述图像的像素数值组。 现在回到我们的问题,卷积层在做什么? 卷积层是从该像素的数值组中提取最基本的特征。 怎么提取? 假设输入图像是32x32x3的数组,5x5x3(最后乘以3是为了与输入图像深度匹配。 不那样的话,就不能用数学计算。 ) ) )的模板,将网格沿图像的左上角一次从左上角移动到右下角。 输入的图像数组称为接收域,使用的模板称为过滤器(也称为卷积内核)。 过滤器也由数组组成,每个数字都称为权重。 的阵列经过该卷积输出的阵列大小为28x28(32-51 ),并且深度由卷积核心的数目决定。 该过程如下图所示。

这一层的实际意义

但是,让我们高级别谈谈这个卷积实际上在做什么。 这些过滤器都可以被认为是功能标识符。 当我谈论功能的时候,我在谈论直线的边缘,简单的颜色和曲线。 想想所有图像的共同点,最简单的特征。 假设第一个过滤器是5 x 5 x 3,它是曲线检测器。 在本节中,为了简单起见,我们忽略滤镜的深度为3个单位,而只考虑滤镜和图像顶部的深度切片。 作为曲线检测器,过滤器具有像素结构,沿曲线形状的区域具有更高的值(请参见)。

称为全连接层的层基本上需要输入量,无论输出是之前的conv、ReLU还是pool层,都将输出n维向量。 其中n是程序必须选择的类的数量。 例如,如果你想要一个数字分类程序,n有10个数字,所以是10。 此n维向量中的每个数字表示一个类别的概率。 例如,如果用于数字分类的程序的结果向量为[0.1.175 0 0 0 0 0 .05],则这表示10%的概率。 也就是说,图像有1,10 %的概率,图像为2,图像为3的概率为75%,图像为9的概率为5%。 (请记住,要完全连接层,必须显示上一层的输出,并表示高级特征的活动图。 它还确定哪些特征与特定类最相关。 例如,如果程序预测特定图像是狗,则激活地图具有指甲、四条腿等高级特征。 相似的

地,如果程序预测某图像是鸟,它将在激活地图中具有很高的价值,代表像翅膀或喙等高级特征。基本上,FC层看着什么高级特征与特定类最强关联,并具有特定的权重,以便当你计算权重与上一层之间的乘积。

训练

在我们搭建完毕神经网络的结构之后,我们需要对这个网络进行训练。训练的过程就是给这个网络模型不断的提供任务,让模型在执行任务的过程中积累经验,最终对类似的事件可以做出正确的判断。通俗的解释就是,假设我们教导一个小孩子认识狗,我们会给他看各种各样的狗,并告诉他,这是狗时间长了之后,当小孩见到狗这个物种的时候,就自然而然的知道是狗了。当然有时候也会有例外。比如来了一只狼,也许就会被误认为也是狗(狼狗)。造成这个误差的原因也许是我们给小孩看的狗的样本还不够多(可以理解为数据量不够,欠拟合),也有可能是我们教的方式不是最好的(选用的模型不是最优的)

现在回到我们的网络模型问题上,第一个conv层中的过滤器如何知道要查找边和曲线?完全连接的图层如何知道要查看的激活图?每层中的过滤器如何知道有什么值?计算机能够调整其过滤值(或权重)的方式是通过称为反向传播的训练过程。
在我们进入反向传播之前,我们必须先退后一步,讨论神经网络的工作需求。现在我们都出生了,我们的思想是新鲜的(神经网络搭建好了,但是还未训练)。我们不知道什么是猫,狗或鸟。以类似的方式,在CNN开始之前,权重或筛选值是随机的。过滤器不知道寻找边缘和曲线。在更高层的过滤器不知道寻找爪子和喙。然而,随着年龄的增长,rxdc和老师向我们展示了不同的图片和图片,并给了我们相应的标签。被赋予形象和标签的想法是CNN经历的培训过程。在深入研究之前,我们假设我们有一套训练集,其中包含成千上万的狗,猫和鸟的图像,每个图像都有一个这个图像是什么动物的标签。

反向传播可以分为4个不同的部分,正向传递,丢失函数,反向传递和权重更新。在正向传球过程中,您将会看到一张训练图像,我们记得这是一个32 x 32 x 3的数字数组,并将其传递给整个网络。在我们的第一个训练样例中,由于所有的权值或过滤值都是随机初始化的,因此输出结果可能类似[.1.1.1.1.1.1.1.1.1.1],基本上是输出不了任何准确数字。网络以其当前的权重无法查找这些低级特征,因此无法就分类的可能性作出任何合理的结论。这转到损失功能反向传播的一部分。请记住,我们现在使用的是训练数据。这个数据有一个图像和一个标签。例如,假设输入的第一个训练图像是3,图像的标签是[0 0 0 1 0 0 0 0 0 0]。损失函数可以用许多不同的方式来定义,但常见的是MSE(均方误差)。

假设变量L等于该值。正如你可以想象的那样,第一对训练图像的损失将非常高。现在,让我们直观地思考这个问题。我们希望达到预测的标签(ConvNet的输出)与训练标签相同的点(这意味着我们的网络得到了预测权)。为了达到这个目的,我们希望最小化损失量我们有。将这看作是微积分中的一个优化问题,我们想要找出哪些输入(权重在我们的情况下)是最直接导致网络损失(或错误)的因素。

tips
关于卷积神经网络的数学含义,我会在CNN卷积神经网络原理详解(下)里面详细解释。
传送门:
CNN卷积神经网络原理详解(中)
CNN卷积神经网络原理详解(下)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。