CNN及常用框架

来源:互联网 发布:淘宝宁美国度装机怎样 编辑:程序博客网 时间:2024/05/16 15:48

一、神经网络:

增加少量隐层(浅层神经网络),增加中间层(深度神经网络,DNN)。神经网络应用在分类问题中效果好,LR或Linear SVM,线性分割都可用于分类。

二、卷积神经网络(CNN):

卷积神经网络依旧保存了层级结构,但层的功能和形式发生了变化。

分别有:数据输入层、卷积计算层、激励层、池化层、全连接层

1、数据输入层(Input layer)

(1)去均值:把输入数据各个维度都中心化到0(只计算训练集上的均值)(对应下图2的平移)

(2)归一化:幅度归一化到同样的范围(RGB的范围本身是在一定的范围 里0~255,所以一般不需要归一化)(对应于下图3)

(3)PCA/白化:用PCA降维;白化是对数据每个特征轴上的幅度归一化

下图是进行去相关和白化的操作


2卷积计算层(CONV layer)

a.局部关联。每个神经元看做一个filter,通过窗口(receptive field)滑动,filter对局部数据计算。有多少个filter,depth就是多少。

b.固定每个神经元连接权重,可以看做一个模板,每个神经元只关注一个特性

c.需要估计权重个数减少:AlexNet  1亿=>3.5w

d.一组固定的权重和不同窗口内数据做内积:卷积

详细可参考此论文:http://blog.csdn.net/v_july_v/article/details/51812459

(3)激励层(ReLU)

把卷积层输出结果做非线性映射(Sigmoid、Tanh、ReLU、Leaky ReLU、ELU、Maxout)

现在主要用的是ReLU(The Rectified Linear Unit,修正线性单元):收敛快,求梯度简单,较脆弱,所以要小心使用(比如在中间打印一下梯度,是不是变为0了,以防止饱和)。以下是它的函数曲线

ReLU优化有一个缺点,就是一旦进入到左边的区域,就会挂掉,下面对ReLU做了一点小的修改。

一般首选ReLU,如果ReLU失效,则会使用Leaky ReLU或Maxout;不用Sigmoid,某些情况下tanh倒是有不错的结果,但是很少。


4池化层(Pooling Layer):Max pooling和average pooling

夹在连续的卷积层中间,用于压缩数据和参数的量,减少过拟合


5全连接层(FC layer)

两层之间所有的神经元都有权重连接,通常全连接在卷积神经网络尾部。尽量使用最后全连接层的学习去还原原来的信息


(6)输出层

总结:

一般CNN结构依次为:

  1. INPUT
  2. [[CONV -> RELU]* -> POOL?] *M
  3. [FC -> RELU] *K
  4. FC

卷积神经网络的优缺点:

优点:

共享卷积核,对高维数据处理无压力;

无需手动选取特征,训练好权重,即得特征

分类效果好

缺点:

需要调参,需要大样本量,训练最好要GPU

物理含义不明确


典型的CNN:LeNet、AlexNet、ZF Net、Google Net、VGGNet(速度没有Google Net快,但是图像转化学习效果很好)、ResNet


CNN常用框架:Caffe、Torch、TensorFlow

原创粉丝点击