CNN卷积神经网络知识点总结

卷积神经网络知识点

层级结构

Input layer :

目的:对原始图像数据进行预处理
(https://blog.csdn.net/maqunfi/article/details/82252480)
1.去均值:把输入数据各个维度都中心化为0 其目的是把样本的中心拉回远点,是的输入数据各个维度都中心化。如果不去均值的话,容易发生过拟合。当其中某一个特征比较大的时候,容易在BP的时候发生梯度消失或梯度弥散。
2.归一化 [0~1]或[-1`1] 适用于本来就分布在有限范围内的数据。或者是均值方差归一化。 把均值归成0 方差归成1.适用于于分布没有明显边界的情况
目的是把各个特征的尺度控制在在相同的范围内,便于找到最优解,来提高效率。
3.PCA 抛弃携带信息量较少的维度,保留主要特征信息,对数据进行降维。来加速机器学习进程。 PCA可用于特征提取、数据压缩、去噪声、降维等
4.白化 去掉数据之间的相关联性 和 方差均一化(特征具有相同的方差 协方差阵为1)以达到去除冗余输入的作用,来提升训练速度

Conv layer :

两个关键操作:局部关联(filter)、窗口滑动(filter对局部数据的计算)
1.深度(depth) 有多少个神经元
2.步长(stride)
3.填充值(padding) 填充方式
4.卷积核:https://blog.csdn.net/qq_40962368/article/details/82864606
5. 1*1卷积(network in network)的作用: 升维或者降维 (不全)

Pooling layer

池化的作用:压缩数据和参数的量,减小过拟合
具体作用与性质:
1.特征不变性 压缩无关紧要的信息,合并在卷积时候所有局部特征的共有特征
2.特征降维 删除信息量
3. 一定程度防止过拟合
两种方式:Max pooling 和 avg pooling 一般选用max pooling

FC layer :

两层之间所有神经元都有权重的连接
作用:在整个卷积神经网络中起到“分类器”的作用。将学到的特征表示映射到样本的标记空间.

激活函数

目的:增加真个网络的表达能力即非线性.
几种常见的激活函数的区别:

sigmoid

1.函数表达
σ = 1 1 + e x p ( − x ) \sigma=\frac{1}{1+exp(-x)} σ=1+exp(x)1
2.函数图像
sigmoid 函数
经过sigmoid型函数作用后,输出响应的阈值被压缩到[0,1]之间.但这样会带来梯度的"饱和效应".导致在误差反向传播的过程中,倒数处于该区域的误差很难或甚至无法被传递至前层,导致整个网络无法被训练. Sigmoid的值域的均值并非为0,而是全为整.这样的结果不符合我们对神经网络内数值的期望应为0的假设.

tanh(x)

1.函数表达
σ = 1 1 + e x p ( − x ) − 0.5 \sigma=\frac{1}{1+exp(-x)}-0.5 σ=1+exp(x)10.5
tanh(x)为sigmoid型函数"下移"0.5个单位的来的.因此可以保证tanh(x)的输出响应均值为0.淡tanh(x)型函数仍会发生"梯度饱和"现象.

ReLU

  1. 函数表达
    ReLU(x)=max{0,x}
    2.函数图像
    ReLu
    可以消除sigmoid的梯度饱和效应.在计算复杂度上更简单.同时可以帮助随机梯度下降方法收敛.收敛速度约快6倍.但是ReLu对于小于0的这部分卷积无法影响网络训练,被成为"死区"

Leaky ReLU

Leaky ReLU
超参数设定敏感,实际中性能不稳定.

参数化ReLU

参数化ReLU是将a作为一个参数放入到模型中作为一个参数训练。但是这样做的结果是很容易发生模型过拟合的情况。

随机化ReLu

另一种解决超参数a的设定的方式是将其随机化。

ELU

几种优化方式:

SGD(随机梯度下降)

在每次批处理训练时计算网络误差并进行无法的反响传播,之后根据一阶梯度信息对参数进行更新
收敛效果稳定,但速度慢

momentum(基于动量的SGD)

目的:改善SGD更新时候可能产生的振荡现象,通过积累前几轮的“动量”信息辅助参数更新。还可以在网络训练中后期,网络参数趋于收敛、处在局部最小值附近来回震荡时帮助其跳出局部限制,找到更优的网络参数。
动量的理解:使用指数加权平均之后梯度代替原梯度进行参数更新。因为每个指数加权平均后的梯度含有之前梯度的信息,动量梯度下降法因此得名

Nesterov型动量随即梯度下降法

在momentum的基础上在更新梯度的时候加入对当前梯度的校正。对于凸函数在收敛性证明上有更强的理论保证。
但没有将lr的自适应性考虑进去

Adagrad

根据训练轮数不同,对lr进行了动态调整
仍然存在的问题:仍需要人为指定一个全局lr。同时网络训练到一定轮数后,会使得lr为0而导致训练过早结束

Adadelta

在Adagrad的基础上引入衰减因子,消除Adagrad对于全局lr的依赖。

Adam

利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的lr。优点主要在经过偏置校正后,每一次迭代lr都有一个确定的范围,这样可以使得参数的更新比较平稳。但是Adam仍需要指定基本lr

Batch Normalization

结果:加快收敛速度,一定程度上缓解梯度弥散。
操作:
在模型每次进行随机梯度下降的时候,通过mini-batch来相对应的activation做规范化操作。使输出信号各个维度的均值为0方差为1
步骤:
1.计算批处理的数据均值
2.计算批处理的数据方差
3.根据所计算的均值和方差对该批处理做规范化
4.进行尺度变化和偏移(目的:能够在增加BN之后有可能还原最初的输入,从而保证整个网络的容量)
原理:
机器学习的假设:source domain 和 target domain的distribution是一致的。如果不一致,则会发生一些问题,其中包括covariate shift,即源空间和目标空间的条件概率一致但边缘概率不同。通过BN来规范层的输入。消除internal covariance shift

Dropout

Dropout 层一般加在全连接层 防止过拟合 提升模型泛化能力。而很少见到卷积层后接Drop out (原因主要是 卷积参数少,不易过拟合

目标函数

一些概念

损失函数(Loss Function) 直接作用于单个样本,用来表达样本的误差

代价函数(Cost Function)作用于整个训练集,是整个样本集的平均误差,对所有损失函数值的平均

目标函数(Object Function)是我们最终要优化的函数,也就是代价函数+正则化函数(经验风险+结构风险)

几种常见的目标函数

https://blog.csdn.net/haoji007/article/details/89015675

神经网络缺点

需要调参及大量样本 物理含义不明确即不知道每个卷积层提取到的特征是什么样的

一些训练技巧

shuffle

采用随即批处理(mini-batch)的训练机制,在对模型每个epoch训练前将数据机随机shuffle
效果:提高模型收敛速率,同时相比以固定次序训练的模型会略微提升在测试集上的预测结果。

learning rate

1.初始学习率设置不应该过大0.01~0.001
2. lr在学习过程中随轮数增加而减缓。(可以借助learning curve来判定lr的设置是否合适)
a)轮数减缓(step decay)
b)指数减缓(exponential decay)
c)分数减缓(1/t decay)
3. Batch Normalization:加快收敛速度,一定程度上缓解梯度弥散。

数据重采样

  1. 上采样 采取数据扩充的方式直至与样本最多的类别的样本数一致
  2. 下采样 以2分类为例子:即在每次批处理训练正负样本的时候只从证样本中随机挑选与负样本一样的样本数,使得每次批处理中的正负比例均衡

算法层面处理样本不均

1.代价敏感(增加小样本错分的“惩罚代价”,直接体现在目标函数中)
两种:a.基于代价敏感矩阵 b.基于代价敏感向量
2. 权重指定

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值