【A-1】CNN与常用框架

版权声明:转载请声名出处,谢谢 https://blog.csdn.net/u010591976/article/details/82119481

主要内容:
这里写图片描述

神经网络和卷积神经网络

神经网络:



DNN是深度神经网络,是一种统称
神经网络不需要提取特征,在前向传播当中,学习权重,完成直线之间的且操作和或操作





神经强大的原因在于:不需要你手动提取特征,表征其在样本空间中的分布,神经网络可以自动学习它的空间分布,不管样本分布在那个角落和区域
CNN 卷积神经网络 在图像中特别强大

卷积神经网络之层级结构

  1. 数据输入层/ Input layer
  2. 卷积计算层/ CONV layer
  3. 激励层 / ReLU layer
  4. 池化层 / Pooling layer
  5. 全连接层 / FC layer

卷积神经网络结构

  • 1-数据输入层/ Input layer

RGB在CNN中不需要提取特征,惹事直接输入RGB像素点参数。
归一化的目的是将数据在某一范围内显示,不一定是0——1或者-1—1之间。
归一化在RGB中可以不用归一化,因为RGB输入的数据都遭0~255之间,数据可以先做Resize PCA和白化不常用
取均值:训练集和测试集去均值都是减去训练集的均值,因为测试集的均值是改变,每一次都不相同,因此我们需要减去训练集的均值,进行去均值化

  • 2-卷积计算层/ CONV layer
    两个比较重要的数据库:手写字 mnist cifar10
    三个重要参数:
    1-depth 深度 相当于神经元的个数
    2-stide 步长
    3-zero-padding 填充值 保证在移动的时候,可以整除stride


神经元filter相当于滤波器 经过卷积操作,可以提取出图片中的一些特征,可能是边缘,可能是颜色也可能是其他.
卷积神经层网络有一个重要的特征:参数共享机制。无论怎么滑动滑动,对于同一个神经元,四条边上的权重是一样的,滑动的时候只有数据输入在变化,对于神经元对应一组权重参数固定。固定每个神经元的连接权重,对于一个filter来说,就相当于一个模板,输入给它的data参数在变化。模板对数据的匹配是有一个权重矩阵对数据进行内积操作。一个filter可以看作一个固定的内积权重,也就是说一个filter只关注一个特性。权重的共享特性使得特征参数的个数降低,特征参数可以从2亿降到3.5万。对于权重不变的理解,对于一个filter,权重参数是固定的,但是这个参数在学习的过程中是会改变的

图片数据通过一个filter,留下我们想要的信息,一般对于一个filter,RGB对应三个不同的权重矩阵
权重矩阵的初始化,不是全0,而是接近0的小数,一半在0的左边一半在0的右边

  • 卷积的定义
    不断滑动窗口数据和权重矩阵对应的位置进行内积计算
    ” 一组固定的权重和不同窗口内数据做内积“

output矩阵输出的够毒取决于filter的个数,而不是权重的系数,权重的系数这是其中的一层

3-激励层 / ReLU layer
激励层有时候也成为RELU层,RELU我们常用的激励函数
激层的作用把传过来的信号进行约束,使得传到下一层的信号是一个合理的大小
激励函数介绍
1-Sigmoid函数
2-正切函数
3-RELU函数 修正线性单元
4-指数线性单元ELU
所有的RELU的优点都有,不会挂,均值趋于0,因为其中的参数alph是可以调整的,对称性很好。不会出现网络层次很深,数据偏移0点被一点一点放大

4-池化层 Poiling Layer
夹在连续的卷积层中间,压缩数据和参数的量,减小过拟合

扫描二维码关注公众号,回复: 2976986 查看本文章

Max Pooling
理论依据:一个像素点和周围像素点和周围的像素点大多不会有突变,相近的像素点,在4*4很小的像素点之间找一个最大的,基本上可以表示这个范围的像素点。图像可以用max pooling 文本处理也有用max pooling 做情感分析等

5-全连接层
47
在最后一层增加一个全连接层
业界解释为,前面做信息的共享,进行信息的化简,激励函数简化无关紧要的激励,池化层对数据和参数进行压缩,但是简化的数据会不会全部简化了,不能学习出模型,因此在最后一层增加全连接层,尽可能去补偿前面简化掉的信息。全连接层和前面的权重都有连接,全连接层一般放在卷积神经网络的尾部,因为放在前面的计算量太大了

CNN的结构

卷积神经网络不同是因为N的不同 若干个卷积层和激励层 下采样subsampling(Pooling) 最后全连接
神经网络在gpu和cpu运行时间的比较 GPU 8层 0.16s cpu 5s-6s

层级的理解
每个框框是一个filter, 每个filter关注的点不一样效果好,但是物理意义不好解释,就是不知道每个filter关注的是什么特征,无法从人类的角度在物理上解释。尤其在后面层上的filter不好解释其关注的信息。

训练算法:
先定一个损失函数:互熵损失 衡量和实际结果之间的差距
后面会总结这一块内容

卷积神经网络的优缺点:
优点:
共享卷积核,对高维数据处理无压力。图像就是高维的数据
不需要手动进行提取特征,训练好权重,即得特征
分类效果好
缺点:
需要调参,需要大量的数据,训练最好要GPU
物理含义不明确,每一层的物理意义不清楚

典型的神经网络

LeNet 最早 facebook 89年提出 用于识别手写数字的CNN
AlexNet 2012 imagenet第一名 用做小卷积层叠加替换大卷积层,用小卷积层代替一层大的卷积层,例如用3层代替1层,每一层的神经元少一些,计算上更快,多层迭代,把线性组成为非线性的模式
ZFNet 2013年 imagenet第一名
GoogleNet 人脸识别
VGGNEt 2014 图像转换学习问题上比较好,比上面的机器学习模型都好,框出图中的小猫小狗object detectiion

–Lenet–

–Alexnet–
比Lenet更深,用多层小卷积代替单层大卷积,计算更快

上面图中只有一层全连接层,4096*4096 4096和4096个神经元进行全连接,补偿之前的缺失的信息

计算卷积计算后输出的矩阵:
输入矩阵224*224*3 96个filter 11*11滑动窗口 strde 4
(227-11)/4+1 =55
Covn1 [55*55*96]

计算这一层中参数的个数:
11*11个权重系数
3个颜色通道
96个filter
11*11*3*96

Alexnet神经网络规模

dropout 是防止过拟合 其中的标准化层不太用,很多工业用途和论文认为这一层可以不采用

ZFNet
ZFNet和AlexNet很接近

VGG
层次很深,经常被用来做fine tuning

在计算神经网络规格的时候,我们也需要计算存储的内存,有时候会因为内存不够出现训练报错的问题

GoolgeNet

去掉了所有的全连接层,所有的参数在500万左右

Fine Tuning


例如 kaggle中要求分类猫和狗两类,我们可以基于ALexNet,将最后的全连接层改成2个神经元的全连接,从1000类变成2类
自己从头开始训练神经网络容易出错
注意点:我们将复用层的学习率调低,对其权重参数不需要特别大的改动。我们调大我们自己随机初始化的权重参数,对其权重参数学习得快一些。

卷积神经网络常用的框架:
1-Caffe 用于图像很好 caffe的设置文件
2-Torch 也可用于其他
3-Tensorflow Goolge提出

猜你喜欢

转载自blog.csdn.net/u010591976/article/details/82119481