zoukankan      html  css  js  c++  java
  • 卷积神经网络(CNN)

    卷积神经网络的结构由输入层、卷积神经层(Convolutional Layer)、下采样层(Pooling Layer)、全连接层(Fully Connected Network)及输出层构成[20]。其中卷积神经网络层、下采样层、全连接被合称为隐含层。
    在卷积神经网络中,卷积神经层与下采样层的连接方式是局部连接的形式,即每层的神经元只连接输入层中的跟它相近的几个节点。而全连接层中采用的是全连接的方式,即每一个神经元与输入层中的所有节点连接。
     
    1 卷积神经层(Convolutional Layer)
    卷积神经层(Convolutional Layer)由多个特征面(Feature Map)构成,每一个特征面则是由很多个神经元构成的[22]。神经元包含两个计量单位,一个是输入x,一个是权值w。输入数据x与权值w相乘得到其加权和e,然后在通过激活函数f(e)获得该神经元的输出,也就是特征。如下图。
    图1-1神经元
    常见的激活函数有Rectified Linear Unit(ReLU)函数、Sigmoid函数以及Softmax函数。其中ReLU函数是一种常见的激活函数[22]。与传统的激活函数相比,ReLU函数能够在大量的数据的情况下,依然能够保持良好的效果。它的运算速度也比传统函数要快。它利用简单地阈值化就可以达到参数稀疏化的目的。但是,ReLU函数的一个缺点是它的神经元在训练的时候,可能会死亡,导致该单元无法激活数据点。ReLU函数的计算公式如下:ReLU:f(x)=max(0,x) 该公式表示,如果输入的数据大于0,那么就把输入的数据作为输出的数据输出,否则就输出0。通过使用ReLU函数,我们可以保证输出的数据不会因为输入数据的增加而接近饱和。另外一些常用的激活函数有Sigmoid函数、Tanh函数、以及以ReLU为基础改进而来的LRelu函数和Prelu函数。
    在卷积神经网络层中,神经网络通过卷积核来获取提取特征。在每一层中可以使用多个卷积核进行特征提取,每一个卷积核提取一种特征。一般而言,卷积层的层次越高,提取的特征也越接近事物本身的特征。卷积核是一个n×n×r的权值矩阵。其中n为卷积核的大小,而r为卷积核的深度。如图1-2是一个深度为1,大小为2的卷积核,以及深度为2大小为2的卷积核。卷积核的深度与输入数据的深度保持一致。在第一层卷积层中,卷积核的深度应该与输入的图片的深度保持一致,图片如果为黑白的图片,那么他的深度为1,如果图片为彩色图片,深度则为3(RGB三个维度)。而网络中的其他卷积层(既不在输入层之后的卷积层)中卷积核的深度则与上一层卷积核的个数保持一致。
    图1-2 卷积核
    如图3-4,深度为1的卷积核卷积了输入矩阵中的红色得到了a0这一个神经元。而深度为2的卷积核的卷积过程是:由卷积核的灰色矩阵卷积输入层的灰色部分,同时由白色的卷积核卷积的输入层中的白色部分,这两部分的值相加进过激励函数得到输出。
    卷积核,根据网络设置的步长数,对输入的特征图进行卷积操作,图1-3中,卷积核的步长为1,红色部分为一次卷积。图1-3中右边为步长为1的一个卷积过程,而右边是步长为2的一个卷积过程。步长为1的卷积在输入矩阵中每完成一次卷积之后,向右或向下移动一步,卷积下一个局部感受野。卷积核的步长为2时,则移动两步。
    图1-3卷积核的移动过程
    我们注意到,当步长设置为1的时候,输出的特征矩阵为3*3,而当步长设置为2的时候,输出的特征矩阵为2*2。这表明图像大小、步幅和卷积后的特征图的大小是有关系的。他们之间的关系为:
    其中w2为卷积后的特征图的宽度,w1为卷积前的特征图的宽度,F为卷积核的宽度,P为全零填充的数量,全零填充是指在原始图像周围补几圈0,如果P的值是1,那么就在图片四周补1圈0。S为步长。H2是卷积后的特征图的高度。H1是卷积前图像的宽度。
    在神经网络中,上一层网络的输出就是下一层网络的输入。在卷积层中,上下两层的神经元通过卷积核进行连接。在卷积神经网络中,上下两层的神经元的连接方式为局部连接,其连接方式如图1-4所示。在图中,输入的是一个2×2的图片,深度为1,而卷积核的大小为2×2,深度也为1。通过卷积核进行卷积操作,得到的特征图为a0到a8的一个输出矩阵。在图中的右边是根据卷积操作得出的网络的连接方式,蓝色的线表示的是w1,红色的线表示的是w2,绿色的线表示的是w3,而黄色的线表示的是w4。可以看出在卷积层中,下一层的神经元并没有与上一层的节点全部连接,而是与上一层中的部分神经元连接。在网络中一个卷积核连接到的部分被称为局部感受野,局部感受野的大小和卷积核的大小一致,图1-4的局部感受野大小为4。局部感受野的优点是它减少了训练时所需要的参数个数,降低了训练的复杂度。
    图1-4卷积层的连接方式
    神经网络的一个重要的概念就是权值共享,而实现权值共享这一特性,主要是由于卷积核的连接方式。如图1-4,颜色相同的连接线的权值是相同的。共享权值的优点是在图像进行特征提取的过程中,可以忽略局部特征所在的位置。相对于全连接方式,权值共享降低了网络模型参数的数量,减少了算法的复杂度。卷积层中参数的个数=卷积核的个数*卷积核的大小*卷积核的深度+卷积核的个数(偏置量的个数)。
     
    2、下采样层(Pooling Layer)
    下采样层,也可以叫做池化层。下采样层连接在卷积层之后,也是由多个特征面构成。采样层中的神经元连接了卷积神经层的局部感受野。下采样层把卷积神经层的输出数据作为输入的数据,通过去除输入数据中的无用信息,减少需要处理的数据量,从而提高训练的网络速度。这一层的主要功能是通过降低特征图的维度,来减少特征图的个数,达到减少计算的复杂度的目的。
    采样层中,主要操作是池化。池化是一种非线性降采样方法。最大池化(max-pooling)、均值池化(mean pooling)、随机池化(stochastic pooling)等都是常用的池化方法。
    一般我们把卷积神经层和下采样层合称为卷积层。卷积神经网络中的一个卷积过程包括了这两层的运算。在卷积神经网络中包含了多个卷积层。卷积层与采样层的连接,如图1-5所示,输入数据经过卷积层的卷积之后,得到卷积层的输出a0到a8的输出矩阵,然后传入下采样层,下采样层通过池化操作的到v、x、z、d这四个节点。
    图1-5卷积层与下采样层的连接方式
    3 全连接层
    在卷积神经网络网络中,至少是有一个全连接层。全连接层位于所有的卷积层之后,层与层之间的神经元采用全连接的方式进行连接。全连接层是正规的神经网络。全连接层的主要作用是对卷积层提取出来的特征进一步提取出高层次的特征。它通过将卷积层的特征进行合并或者取样,提取出其中的具有区分性的特征,从而达到分类的目的。
    全连接层与卷积层的区别第一个是连接方式的不同。卷积层中采用的是局部连接方式,即一个节点和上一层中的部分节点相连,而全连接层中,该层的每一个神经元与上一层的所有神经进行连接,如图1-6。全连接层中权值是不共享的,每一条线都代表了一个权值。而在左边卷积层的连接方式图中,颜色相同的连接,参数相同。我们可以看出相对于卷积层,全连接层的参数更多,所以其网络的复杂度也更大。
    图1-6 卷积层与全连接层的连接方式
    在全连接层中,常用softmax 逻辑回归来进行分类识别图像。softmax 逻辑回归分类方法主要用于多分类问题。在构建分类器的过程中,一般还采用正则化方法来防止训练过拟合,提高分类的性能。
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    Ubuntu配置sublime text 3的c编译环境
    ORA-01078错误举例:SID的大写和小写错误
    linux下多进程的文件拷贝与进程相关的一些基础知识
    ASM(四) 利用Method 组件动态注入方法逻辑
    基于Redis的三种分布式爬虫策略
    Go语言并发编程总结
    POJ2406 Power Strings 【KMP】
    nyoj 会场安排问题
    Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the timeout in the server editor.
    Java的String、StringBuffer和StringBuilder的区别
  • 原文地址:https://www.cnblogs.com/hesi/p/9013205.html
Copyright © 2011-2022 走看看