卷积神经网络(CNN)

 CNN,即卷积神经网络,主要用于图像识别,分类。这篇卷积神经网络是前面介绍的多层神经网络的进一步深入,它将深度学习的思想引入到了神经网络当中,通过卷积运算来由浅入深的提取图像的不同层次的特征,而利用神经网络的训练过程让整个网络自动调节卷积核的参数,从而无监督的产生了最适合的分类特征。

卷积神经网络的网络结构

卷积神经网络主要由这几类层构成:输入层、卷积层,ReLU层、池化(Pooling)层和全连接层(全连接层和常规神经网络中的一样)。通过将这些层叠加起来,就可以构建一个完整的卷积神经网络。         在实际应用中往往将卷积层与ReLU层共同称之为卷积层,所以卷积层经过卷积操作也是要经过激活函数的。具体说来,卷积层和全连接层(CONV/FC)对输入执行变换操作的时候,不仅会用到激活函数,还会用到很多参数,即神经元的权值w和偏差b;而ReLU层和池化层则是进行一个固定不变的函数操作。卷积层和全连接层中的参数会随着梯度下降被训练,这样卷积神经网络计算出的分类评分就能和训练集中的每个图像的标签吻合了。

            

图片

 

    卷积层

    卷积层是构建卷积神经网络的核心层,它产生了网络中大部分的计算量。注意是计算量而不是参数量。         先简单给大家介绍一下什么叫做卷积,那么白话解释一下啥叫卷积,很形象,就是“卷”,你假象一下,你把毛巾卷起来,成为一个圆柱体的卷,就是这个意思,抽象的说,就是将原来的对象变小一些,但又能保证原来图像中的信息尽量多的保留下来,可以看看下面这个卷积过程图。看看这个图,大概理解卷积是一个什么样子的过程就可以了,用映射两个字我认为是比较恰当的。      

    1.卷积过程

    二维卷积:即滤波器的每个格子与滤波器选中数据的格子相乘。

    图片

    三维卷积:三维数据的话,滤波器的也是三维。同时对每个维度进行卷积,最后将每个维度的卷积结果相加,输出二维。

    图片

    2.过滤器

    过滤器的作用是:寻找图片的特征。 这就涉及到CNN要做的工作了。每一个过滤器中的数值,都是算法自己学习来的,不需要我们费心去设置。

    需要我们做的有:

    ① 设置过滤器的大小(用字母“F”表示)

    一般情况下,我们的过滤器大小是3×3,即F=3。

    当然,你还可以设置成5×5,都是可以的。

    只不过,需要注意的是:过滤器的尺寸越大,得到的图像细节就越少,最终得到的特征图的尺寸也更小。

    ② 设置过滤器滑动的步幅数(用字母“S”表示)

    一般情况下,过滤器滑动的步幅是1,即每次过滤器向右或向下滑动1个像素单位。

    当然,你也可以将步幅设置为2或更多,但是通常情况下,我们会使用S=1或S=2。

    ③ 设置过滤器的个数(用字母“K”表示)

    以下,我们分别给大家展示了4种过滤器。所以你可以理解为K=4,如下图:

    图片

    当然,你可以设置任意个数。

    再次强调:不要在意过滤器里面的数值,那是算法自己学习来的,不需要我们操心,我们只要把过滤器的个数设置好,就可以了。

    3.卷积层(Conv Layer)的输出张量(图像)的大小计算

    定义如下:

    O=输出图像的尺寸。

    I=输入图像的尺寸。

    K=卷积层的核尺寸

    N=核数量

    S=移动步长

    P =填充数

    输出图像尺寸的计算公式如下:

    图片

    输出图像的通道数等于核数量N。

    4. 卷积层作用

    1. 滤波器的作用或者说是卷积的作用

      卷积层的参数是有一些可学习的滤波器集合构成的。每个滤波器在空间上(宽度和高度)都比较小,但是深度和输入数据一致(这一点很重要,后面会具体介绍)。直观地来说,网络会让滤波器学习到当它看到某些类型的视觉特征时就激活,具体的视觉特征可能是某些方位上的边界,或者在第一层上某些颜色的斑点,甚至可以是网络更高层上的蜂巢状或者车轮状图案。

    2. 可以被看做是神经元的一个输出

      神经元只观察输入数据中的一小部分,并且和空间上左右两边的所有神经元共享参数(因为这些数字都是使用同一个滤波器得到的结果)。

    3. 降低参数的数量

      这个由于卷积具有“权值共享”这样的特性,可以降低参数数量,达到降低计算开销,防止由于参数过多而造成过拟合。

    池化层

         有时图像太大,即使我们参数不太多,但图像的像素实在太多,导致卷积操作后,我们得到的结果仍然过大。我们需要减少训练参数的数量,它被要求在随后的卷积层之间周期性地引进池化层。池化的一个目的是减少图像的空间大小。池化在每一个纵深维度上独自完成,因此图像的纵深保持不变。

    1.池化过程

    所谓“池化”,就是在保留图片主要信息的前提下,将图片的尺寸缩小。 

    池化的类型有很多种,诸如“最大池化”、“平均池化”、“求和池化”等等,它们的运算原理基本一致。

    因为“最大池化”更为常用,所以我们重点介绍“最大池化”的运算过程。

    假设经过ReLU处理后,我们得到的特征图片,如下图:

    图片

    在对特征图片进行“池化”处理时,与“卷积”类似,需要我们设置2个超参数:

    过滤器大小(F)和 滑动的步幅数(S) 这里,假设我们设置F=2,S=2,那么,“最大池化”为:

    在每2*2(即4个)像素区域内,保留像素值最大的那一个,其余3个像素值抛弃。 如下图:

    图片

    2.池化层(MaxPool Layer)的输出张量(图像)的大小计算

    定义如下:

    O=输出图像的尺寸。 I=输入图像的尺寸。 S=移动步长 PS=池化层尺寸

    输出图像尺寸的计算公式如下

    图片

    不同于卷积层,池化层的输出通道数不改变。

    示例:每1层卷积层后的池化层的池化层尺寸为33,步长为2。根据前面卷积层的输出为555596。池化层的输出图像尺寸如下:

    图片

    输出尺寸为2727*96。

    3.池化的作用和特点:

    1. 降维,减少网络的参数,达到防止过拟合的效果

    2. 可以实现平移、旋转的不变性

    3. 只改变图像尺寸,不改变图像深度

    4. 没有需要训练的参数

    最后

    如果你真的想学习人工智能,请不要去网上找那些零零碎碎的教程,真的很难学懂!你可以根据我这个学习路线和系统资料,制定一套学习计划,只要你肯花时间沉下心去学习,它们一定能帮到你!

    这里也给大家准备了人工智能各个方向的资料,大家可以微信扫码找我领取哈~
    也可以微信搜索gupao66回复32无偿获取哦~ 

     

     

    Logo

    脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

    更多推荐