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

     一:回顾

    1.1 人工全连接神经网络

    (1)每相邻两层之间的每个神经元之间都是有边相连的。
    (2)当输入层的特征维度变得很高时,这时全连接网络需要训练的参数就会增大很多,计算速度就会变得很慢。

    1.2传统神经网络存在的问题:

    (1)权值太多,计算量太大。
    (2)权值太多,需要大量样本进行训练 。

    二:CNN卷积神经网络

    2.1 CNN的主要概述

      卷积层的神经元只与前一层的部分神经元节点相连,即它的神经元间的连接是非全连接的,且同一层中某些神经元之间的连接的权重w和偏置b是共享的(即相同的)大量地减少了需要训练参数的数量。
      CNN主要特点:减少权值,局部连接,权值共享。
      CNN通过感受野和权值共享减少了神经网络需要训练的参数的个数。

    2.2 CNN的一般结构

      输入层:用于数据的输入
      卷积层:使用卷积核进行特征提取和特征映射
      激励层:由于卷积也是一种线性运算,因此需要增加非线性映射
      池化层:压缩数据和参数的量,减小过拟合。
      全连接层:通常在CNN的尾部进行重新拟合,减少特征信息的损失
      输出层:用于输出结果
     
    (1)输入层
      在CNN的输入层中,数据输入的格式与全连接神经网络的输入格式(一维向量)不太一样。CNN的输入层的输入格式保留了图片本身的结构。
        对于黑白的 28×28 的图片,CNN的输入是一个28×28 的的二维神经元;
        对于RGB格式的28×28图片,CNN的输入则是一个 3×28×28 的三维神经元。

      该层要做的处理主要是对原始图像数据进行预处理,其中包括:
        • 去均值:把输入数据各个维度都中心化为0,其目的就是把样本的中心拉回到坐标系原点上。

        •归一化:幅度归一化到同样的范围,减少各维度数据取值范围的差异而带来的干扰,比如,我们有两个维度的特征A和B,A范围是0到10,而B范围是0到10000,如果直接使用这两个特征是有问题的,好的做法就是归一化,即A和B的数据都变为0到1的范围。

        去均值与归一化效果图:
         

        • PCA/白化:用PCA降维;白化是对数据各个特征轴上的幅度归一化

           去相关与白化效果图:

          

    (2)卷积层

     先知:

    感受视野( local receptive fields)
         即感受上一层的部分特征。在卷积神经网络中,隐藏层中的神经元的感受视野比较小,只能看到上一次的部分特征,上一层的其他特征可以通过平移感受视野来得到同一层的其他神经元。
    卷积核
         感受视野中的权重矩阵。
    共享权值(shared weights)
      在卷积层中每个神经元连接数据窗的权重是固定的,每个神经元只关注一个特性。神经元就是图像处理中的滤波器,比如边缘检测专用的Sobel滤波器,即卷积层的每个滤波器都会有自己所关注一个图像特征,比如垂直边缘,水平边缘,颜色,纹理等等,这些所有神经元加起来就好比就是整张图像的特征提取器集合。
          
    步长(stride)
         感受视野对输入的扫描间隔称为步长(stride)。
    边界扩充(pad)
          当步长比较大时(stride>1),为了扫描到边缘的一些特征,感受视野可能会“出界”,这时需要对边界扩充(pad)。
    特征映射图(feature map)
        通过一个带有卷积核的感受视野 扫描生成的下一层神经元矩阵 称为一个特征映射图(feature map)。

    卷积层的计算过程(下面蓝色矩阵周围有一圈灰色的框,那些就是上面所说到的填充值)

         

    (3)激励层

      激励层主要对卷积层的输出进行一个非线性映射,因为卷积层的计算是一种线性计算。使用的激励函数一般为ReLu函数
          卷积层和激励层通常合并在一起称为“卷积层”。

          

       CNN采用的激励函数一般为ReLU(The Rectified Linear Unit/修正线性单元),它的特点是收敛快,求梯度简单,但较脆弱,图像如下:

          

    (4)池化层
      当输入经过卷积层时,若感受视野比较小,步长stride比较小,得到的feature map(特征映射图)还是比较大,可以通过池化层来对每一个feature map进行降维操作,输出的深度还是不变的,依然为feature map的个数。
      池化层也有一个“池化视野(filter)”来对feature map矩阵进行扫描,对“池化视野”中的矩阵值进行计算,一般有两种计算方式:
         (1)Max pooling:取“池化视野”矩阵中的最大值
         (2)Average pooling:取“池化视野”矩阵中的平均值

    池化层的具体作用: 

      1. 特征不变性,也就是我们在图像处理中经常提到的特征的尺度不变性,池化操作就是图像的resize,平时一张狗的图像被缩小了一倍我们还能认出这是一张狗的照片,这说明这张图像中仍保留着狗最重要的特征,我们一看就能判断图像中画的是一只狗,图像压缩时去掉的信息只是一些无关紧要的信息,而留下的信息则是具有尺度不变性的特征,是最能表达图像的特征。

      2. 特征降维,我们知道一幅图像含有的信息是很大的,特征也很多,但是有些信息对于我们做图像任务时没有太多用途或者有重复,我们可以把这类冗余信息去除,把最重要的特征抽取出来,这也是池化操作的一大作用。

      3. 在一定程度上防止过拟合,更方便优化。

    (5)全连接层和输出层
      两层之间所有神经元都有权重连接,通常全连接层在卷积神经网络尾部。也就是跟传统的神经网络神经元的连接方式是一样的:
          
      全连接层主要对特征进行重新拟合,减少特征信息的丢失。

    (6)输出层

      主要准备做好最后目标结果的输出。

    三:相关内容

    卷积神经网络之训练算法
       1. 同一般机器学习算法,先定义Loss function,衡量和实际结果之间差距。
       2. 找到最小化损失函数的W和b, CNN中用的算法是SGD(随机梯度下降)。

    卷积神经网络之优缺点
      优点
        • 共享卷积核,对高维数据处理无压力
        • 无需手动选取特征,训练好权重,即得特征分类效果好
      缺点
        • 需要调参,需要大样本量,训练最好要GPU
        • 物理含义不明确(也就说,我们并不知道没个卷积层到底提取到的是什么特征,而且神经网络本身就是一种难以解释的“黑箱模型”)

    卷积神经网络之典型CNN
        • LeNet,这是最早用于数字识别的CNN
        • AlexNet, 2012 ILSVRC比赛远超第2名的CNN,比
        • LeNet更深,用多层小卷积层叠加替换单大卷积层。
        • ZF Net, 2013 ILSVRC比赛冠军
        • GoogLeNet, 2014 ILSVRC比赛冠军
        • VGGNet, 2014 ILSVRC比赛中的模型,图像识别略差于GoogLeNet,但是在很多图像转化学习问题(比如object detection)上效果奇好

    卷积神经网络之 fine-tuning
      何谓fine-tuning?
        fine-tuning就是使用已用于其他目标、预训练好模型的权重或者部分权重,作为初始值开始训练。那为什么我们不用随机选取选几个数作为权重初始值?原因很简单,第一,自己从头训练卷积神经网络容易出现问题;第二,fine-tuning能很快收敛到一个较理想的状态,省时又省心。

      那fine-tuning的具体做法是?
        • 复用相同层的权重,新定义层取随机权重初始值
        • 调大新定义层的的学习率,调小复用层学习率

    四:总结

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

      CNN一个非常重要的特点就是头重脚轻(越往输入权值越小,越往输出权值越多),呈现出一个倒三角的形态,这就很好地避免了BP神经网络中反向传播的时候梯度损失得太快。

      卷积神经网络CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。由于CNN的特征检测层通过训练数据进行学习,所以在使用CNN时,避免了显式的特征抽取,而隐式地从训练数据中进行学习;再者由于同一特征映射面上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,特别是多维输入向量的图像可以直接输入网络这一特点避免了特征提取和分类过程中数据重建的复杂度。

    因上求缘,果上努力~~~~ 作者:每天卷学习,转载请注明原文链接:https://www.cnblogs.com/BlairGrowing/p/14515580.html

  • 相关阅读:
    Solr部署准备
    linux 安装SVN
    构建高性能web站点--读书大纲
    webapi请求
    搭建git服务器
    git常用知识整理
    Ruby on Rail 开发入门
    Ruby on rail 开发准备
    PHP模拟请求雅虎竞标商品加价
    JAVA httpURLConnection curl
  • 原文地址:https://www.cnblogs.com/BlairGrowing/p/14515580.html
Copyright © 2011-2022 走看看