深度学习二、CNN(卷积神经网络)概念及理论

一、卷积神经网络(CNN)

1、常见的CNN结构有:LeNet-5、AlexNet、ZFNet、VGGNet、ResNet等。目前效率最高的是ResNet。

2、主要的层次:

 数据输入层:Input Layer

 卷积计算层:CONV Layer

 ReLU激励层:ReLU Incentive Layer(功能就是和激活函数一样,具有非线性的能力)

 池化层:Pooling Layer(压缩形式,降低复杂度)

 全联接层: FC Layer 

 备注 :Batch Normalization Layer

3、详解Input Layer

   和传统的神经网络一样,首先需要对输入的数据进行预处理。

(1) 去均值:将输入数据的各个维度中心化到0,例如X1(1,2,5),那么平均值就是(1+2+5)/3 = 8/3,在用每一个元素减去8/3。

(2)归一化:将数据各个维度的幅度归一到同样的范围。(在去均值的基础上,再除以标准差)

(3)PCA/白化:(在cnn处理图片不用这个)

          用PCA降维(去掉特征与特征之间的相关性)

          白化石在PCA的基础上,对转换后的数据每个特征轴上的幅度进行归一化

  例:(去均值和归一化)

    

   例:PCA和白化

    

4、CONV Layer(卷积)

  • 局部关联:每个神经元看做一个filter/kernal
  • 窗口(receptive field)滑动,filter对局部数据进行计算
  • 相关概念(深度:depth,步长:stride,填充值:zero-padding)

 理解这张图

  (1)可以把每一张图片分割成很多个神经元,如图最左边

    (2) 每一个图片可用RGB(红、绿、蓝三个通道的颜色)三个方面来表示。

  (3)filter可以看作是从几个角度来描述这个图片(比如说大小,形状),有几个角度,深度就是多少,那么每一个角度,就对应一组filter。

  (4)如上图:一般的图片为正方形,步长s=2,窗口大小f=3,高度h=5,宽度w=5,填充p=1*2,满足(p+w-f+s)/s 能够被整除,输出为out输出矩阵的大小

 卷积神经网络就是解决了全链接神经网络复杂度,进行局部感知,如 下图:

 

 5、ReLU Layer(激活)

   一班用ReLU,如果效果不好,可用Leak Relu

  

   

6、池化层 Pooling Layer

    在连续的卷积层中间存在的就是池化层,主要功能是:通过逐步减小表征的空间尺寸来减小参数量和网络中的计算;池化层在每个特征图上独立操作。使用池化层可以压缩数据和参数的量,减小过拟合。

 

  

   类似传统神经网络中的结构,FC层中的神经元连接着之前层次的所有激活输出; 换一句话来讲的话,就是两层之间所有神经元都有权重连接;通常情况下,在 CNN中,FC层只会在尾部出现

     一般的CNN结构依次为:

       INPUT
       [[CONV -> RELU] * N -> POOL?]*M [FC -> RELU] * K
       [FC -> RELU] * K

        FC 

7、 初始化参数(在卷积神经网络中,可以看到神经元之间的连接是通过权重w以及偏置b实现的。在具 体的神经网络之前 ,需要初始化参数)

     权重的初始化 :

        一般方式:很小的随机数(对于多层深度神经网络,太小的值会导致回传的梯度非常小),一般随机 数是服从均值为0,方差未知(建议:2/n, n为权重数量,https://arxiv.org/pdf/1502.01852.pdf) 的高斯分布随机数列。 

     偏置项的初始化 :

       一般直接设置为0,在存在ReLU激活函数的网络中,也可以考虑设置为一个很小的数字 

8、卷积神经网络正则化和Dropout

     神经网络的学习能力受神经元数目以及神经网络层次的影响,神经元数目越大, 神经网络层次越高,那么神经网络的学习能力越强,那么就有可能出现过拟合的问题 。

     Regularization:正则化,通过降低模型的复杂度,通过在cost函数上添加 一个正则项的方式来降低overfitting,主要有L1和L2两种方式 

     Dropout:通过随机删除神经网络中的神经元来解决overfitting问题,在每次迭代的时候,只使用部分神经元训练模型获取W和d的值(

每次丢掉一半左右的隐 藏层神经元,相当于在不同的神经网络上进行训练,这样就减少了神经元之间的依 赖性,即每个神经元不能依赖于某几个其它的神经元(指层与层之间相连接的神经 元),使神经网络更加能学习到与其它神经元之间的更加健壮robust(鲁棒性)的 特征。另外Dropout不仅减少overfitting,还能提高准确率 )

9、卷积神经网络训练的方法

   在神经网络中一般采用Mini-batch SGD,主要包括以下四个步骤的循环: 

    (1)采样一个batch的数据

   (2)前向计算损失loss

   (3)反向传播计算梯度(一个batch上所有样本的梯度和) 

   (4)利用梯度更新权重参数 

 

posted @ 2019-04-28 12:43  Allen_GC  阅读(2493)  评论(0编辑  收藏  举报