• CNN结构


    神经网络

    卷积神经网络依旧是层级网络,只是层的功能和形式做了变化,可以说是传统神经网络的一个改进。多了许多传统神经网络没有的层次。

    卷积神经网络的层级结构

    • 数据输入层/Input Layer
    • 卷积计算层/Conv Layer
    • 激励层/ReLU Layer
    • 池化层/Pooling Layer
    • 全连接层/FC Layer

    1.数据输入层

    该层要做的处理主要是对原始图像数据进行预处理,其中包括:

    • 去均值:把输入数据各个维度都中心化为0
    • 归一化:幅度归一化到同样的范围
    • PCA/白化:用PCA降维;白化是对数据哥哥特征轴上的幅度归一化

    去均值归一化的效果图:

    去相关与白化效果图:

    2.卷积计算层

    在卷积层,有两个关键操作:

    • 局部关联。每个神经元看做一个滤波器(filter)
    • 窗口(receptive field)滑动,filter对局部数据进行计算

    卷积层遇到的几个名词:

    • 深度/depth
    • 步长/stride(窗口一次滑动的长度)
    • 填充值/zero-padding

    填充值是什么呢?比如一个5*5的图片(一个格子一个像素),我们滑动窗口取2*2,步长取2,那么我们发现还剩下1个像素无法滑完,那怎么办?

    在原先的矩阵加了一层填充值,使得变成6*6的矩阵,那么窗口就可以刚好把所有像素遍历完。这就是填充值的作用。

    卷积计算过程:

     

    参数共享机制

    • 在卷积层中每个神经元连接数据窗的权重是固定的,每个神经元只关注一个特性
    • 需要估算的权重个数减少
    • 一组固定的权重和不同窗口内数据做内积:卷积

    3.激励层

    把卷积层输出结果做非线性映射。CNN采用的激励函数一般为ReLU(The Rectified Linear Unit/修正线性单元),它的特点是收敛快,求梯度简单,但较脆弱,图像如下:

    激励层的实践经验:

    • 不要用sigmoid
    • 首先试ReLU,因为收敛速度快,但要小心
    • 如果不能使用ReLU,试用Leaky ReLU或者Maxout
    • 某些情况下tanh倒是不错的结果,但是很少

    4.池化层

    池化层夹在连续的卷积层中间,用于压缩数据和参数的量,减少过拟合。简而言之,如果输入是图像的话,那么池化层的作用就是压缩图像。

    池化层用的方法有Max pooling和average pooling,而实际用的较多的是Max pooling。

    5.全连接层

    跟传统的神经网络的连接方式一样。

    卷积神经网络的精华:三概念两核心

    两个核心:卷积和池化

    • 卷积:主要起到作用的是抽取特征,是网络具有一定转移不变性,也有一定的降维作用。概述:设定一个n行m列的卷积窗口,采用的ReLU作为激励函数,对于输入X进行卷积操作。注意:1,卷积可能是单通道或者多通道卷积;2,卷积操作分为padding和非padding两种方式,padding也分为很多方式,比如zero-padding,mean-padding等。3,对同一个输入可以设置不同大小卷积和,或从不同的位置,或不同的卷积步长多次进行卷积,目的就是为了尽可能多的抽取特征。
    • 池化:主要起到降维的作用。概述:设置一个n行m列的池化窗口,对输入X进行池化操作,采用Relu作为激活函数,也可以采用sigmoid或tans型激活函数,但注意函数的饱和死区特性导致的反向传播时的梯度消失问题,可以配合Batch Normalization使用。池化也有多种方式,比如max pooling,average polling

    三概念:局部感受野,权值共享和下采样/降采样

    • 局部感受野:卷积操作时卷积窗口与输入X重合的部分。
    • 权值共享:卷积操作或池化操作时,卷积窗口或池化窗口的权值不发生变化。
    • 下采样/降采样:直观感觉就是池化操作。

    卷积神经网络的训练

    • 同一般机器学习算法,先定义Loss function,衡量和实际结果之间的差距。
    • 找到最小化损失函数的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具体做法:

    • 复用相同层的权重,新定义层取随机权重初始值
    • 调大新定义层的学习率,调小复用层学习率

    边缘过渡不平滑

    • 解决办法:采样窗口彼此重叠

    总结

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

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

    卷积神经网络CNN主要用来识别位移,缩放及其他形式扭曲不变性的二维图形,由于CNN的特征检测层通过训练数据进行学习,所以在使用CNN时,避免了显式的特征抽取,而隐式地从训练数据中进行学习;再者由于同一特征映射面上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。

  • 相关阅读:
    【原】webpack--loaders,主要解释为什么需要loaders和注意事项
    【原】通过npm script运行webpack的原理
    原生js深拷贝函数
    git add 添加错文件的撤销方法
    item2 快捷键
    sudo su 和sudo -s的区别
    nvm常用命令
    【雅思】【口语】Describe a product you bought and felt happy
    【雅思】【口语】Help others
    【雅思】【口语】
  • 原文地址:https://www.cnblogs.com/fangpengchengbupter/p/7677155.html
Copyright © 2020-2023  润新知