美文网首页
典型的深度学习算法(一):卷积神经网络(CNN)

典型的深度学习算法(一):卷积神经网络(CNN)

作者: 企通查 | 来源:发表于2020-08-11 17:33 被阅读0次

    通过上一篇文章,相信大家对深度学习的概念、原理已经有了大致了解,近期企通查将会对深度学习中的几种典型算法进行介绍。

    在深度学习领域中,已经验证的典型成熟算法有卷积神经网络(CNN)、循环神经网络(RNN)、生成对抗网络(GANs)、深度强化学习(RL)等,下面企通查将带领大家对典型的深度学习算法之一——卷积神经网络(CNN)一探究竟。

    卷积神经网络(CNN)解决了什么问题?

    卷积神经网络(CNN),是近年发展起来的,并引起广泛重视的一种高效识别方法,可以说是深度学习算法应用最成功的领域之一,其价值在于能够将大数据量的图片有效地降维成小数据量且不影响结果,同时与人类视觉原理类似,CNN能够较完整地保留图片的特征。

    卷积神经网络包括一维卷积神经网络,二维卷积神经网络以及三维卷积神经网络。一维卷积神经网络主要用于序列类的数据处理,二维卷积神经网络常应用于图像类文本的识别,三维卷积神经网络主要应用于医学图像以及视频类数据识别。

    在 CNN 出现之前,图像对于人工智能来说一直是一个难题,问题的主要原因有2个:

    1.需要处理的数据量太大

    图像是由每个带有颜色的像素构成的,且每个像素都有RGB(可简单理解为光学三原色:红、绿、蓝)3个参数来表示颜色信息。

    假如现在需要处理一张1000*1000像素的图片,就需要处理1000*1000*3=3,000,000个参数!如此大量的数据处理起来是非常消耗资源的,而且这还只是一张不算太大的图片。

    2.保留图像特征

    假如将一张图片划分为四个区域,其中一个区域中有圆形表示为数字1,没有圆形则表示为0,那么圆形的位置不同就会产生完全不同的数据表达,上述的这个过程就相当于是传统的图片数字化过程简化版。

    图:图片数字化的简化过程图示,来源于网络

    当我们移动图像中的圆形时,从视觉角度来看,图像的内容本质并没有发生变化,只是位置变化了而已,然而通过用传统方式得出的参数结果差异却会很大,显然图像的简单数据化无法保留图像特征,这是不符合图像处理要求的。

    对于上述两个问题,CNN通过将复杂问题简化和保留图像特征就较为完美地解决了,那么,CNN是如何进行实现的呢?

    卷积神经网络(CNN)的基本原理

    典型的CNN由两部分组成,一部分是特征提取(卷积、激活函数、池化),另一部分是分类识别(全连接层),其中卷积层、池化层和全连接层属于较为关键的部分。简单描述各个层级的作用的话:卷积层的主要作用是提取保留图像中的特征;池化层则是用来大幅降低参数量级(即降维)从而有效地避免过拟合;而全连接层则类似传统神经网络的部分,根据不同的任务输出想要的结果。

    下面让我们以图像识别为例,来了解卷积神经网络的原理。

    假设需要给定一张图(可能是字母X或者字母O),通过CNN即可识别出是X还是O,那么CNN是怎么做到的呢?

    图:来源于网络

    1.图像输入

    人类对外界的认知模式一般是从局部到全局,在图像中的空间联系也是类似,局部范围内的像素之间联系较为紧密,而距离较远的像素则相关性较弱。因而,每个神经元其实没有必要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息。这种模式就是卷积神经网络中降低参数数目的重要神器:局部感受野。

    图:局部感受野示例,来源于网络

    2.特征提取

    由于在现实生活中,字体都有着各个形态上的变化(例如手写体),例如平移、缩放、旋转、微变形等,目标是对于各种形态变化的X和O,都能通过CNN准确地识别出来,这就涉及到应该如何有效地提取特征。

    结合图像输入中的“局部感受野”思想,对CNN来说,它是一小块一小块地来进行比对,在两幅图像中大致相同的位置找到一些粗糙的特征(小块图像)进行匹配。

    图:CNN图片对比示例,来源于网络

    以字母X为例,可以提取出三个重要特征(两个交叉线、一个对角线),假如以像素值"1"代表白色,像素值"-1"代表黑色,则字母X的重要特征可表示如下:

    图:来源于网络

    3.卷积

    当给定一张新图时,CNN并不能准确地知道这些特征到底要匹配原图的哪些部分,所以它会在原图中把每一个可能的位置都进行尝试,相当于把这个feature(特征)变成了一个过滤器,这个用来匹配的过程就被称为卷积操作。

    要计算一个feature(特征)和其在原图上对应的某一小块的结果,只需将两个小块内对应位置的像素值进行乘法运算,然后将整个小块内乘法运算的结果累加起来,最后再除以小块内像素点总个数即可(注:也可不除以总个数的)。

    如果两个像素点都是白色(值均为1),那么1*1 = 1,如果均为黑色,那么(-1)*(-1) = 1,也就是说,每一对能够匹配上的像素,其相乘结果为1。类似地,任何不匹配的像素相乘结果为-1。

    图:卷积计算后得到的结果,来源于网络

    4.池化

    为了有效地减少计算量,CNN使用的另一个有效的工具被称为“池化(Pooling)”。池化就是将输入图像进行缩小,减少像素信息,只保留重要信息。

    池化的操作也很简单,通常情况下,池化区域是2*2大小,然后按一定规则转换成相应的值,例如取这个池化区域内的最大值(max-pooling)、平均值(mean-pooling)等,以这个值作为结果的像素值。

    图:池化后简化的数据,来源于网络

    5.激活函数

    激活函数的作用是用来加入非线性因素,把卷积层输出结果做非线性映射。在卷积神经网络中,激活函数一般使用ReLU(The Rectified Linear Unit,修正线性单元),它的特点是收敛快,求梯度简单。计算公式也很简单,max(0,T),即对于输入的负值,输出全为0,对于正值,则原样输出。

    图:对所有池化后的数据进行激活函数操作,来源于网络

    6.深度神经网络

    通过将上面所提到的卷积、激活函数、池化过程组合在一起,并加大网络的深度,增加更多的层,就得到了深度神经网络,如下图:

    图:深度神经网络,来源于网络

    7.全连接层

    全连接层在整个卷积神经网络中起到“分类器”的作用,即通过卷积、激活函数、池化等深度网络后,再经过全连接层对结果进行识别分类。

    由于神经网络是属于监督学习,在模型训练时,根据训练样本对模型进行训练,从而得到全连接层的权重,在利用该模型进行结果识别时,根据刚才提到的模型训练得出来的权重,以及经过前面的卷积、激活函数、池化等深度网络计算出来的结果,进行加权求和,得到各个结果的预测值,然后取值最大的作为识别的结果(如下图,最后计算出来字母X的识别值为0.92,字母O的识别值为0.51,则结果判定为X)。

    图:根据权重判定得出结果,来源于网络

    将以上所有结果串起来后,就形成了一个“卷积神经网络”(CNN)结构。

    卷积网络在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间的精确的数学表达式,只要用已知的模式对卷积网络加以训练,网络就具有输入输出对之间的映射能力。

    参考文献:

    https://easyai.tech/ai-definition/cnn/

    https://www.cnblogs.com/wj-1314/p/9754072.html

    相关文章

      网友评论

          本文标题:典型的深度学习算法(一):卷积神经网络(CNN)

          本文链接:https://www.haomeiwen.com/subject/pgzedktx.html