深度学习笔记整理(五)——提高泛化能力的方法

1.训练样本

数据增强

  • 方法:通过对样本图像平移、旋转或镜像翻转,增加样本数量;
  • 优点:使有限的数据得到最大程度的有效利用。

使用大规模数据集

  • ImageNet:基于WorldNet,按层级图像分类,动物植物食物等,末梢节点包含多张对应图像;
  • Place:在SVNDatabase基础上的扩展,包括多种场景,室内、室外、交通工具、建筑物等。

其它

  • 设置图像中间区域为感兴趣区域,可以防止变换后的样本偏离图像区域;
  • 对样本会产生形状变化的情况,如手写字符识别,先变形再数据增强,可以使用弹性变换算法,包括双线性插值或双三次插值等插值法。

2.预处理

原因:当样本类别内差异较大时,为了减少样本差异,会进行预处理。

方法:均值减法、归一化、白化。

均值减法

  • 大规模的物体识别预处理的方式;
  • eg:图像识别中,训练样本-均值图像=输入数据(差分图像),经过处理后,数据平均值会变为0,图像整体亮度变化可以得到抑制。

归一化

  • 为样本的均值和方差添加约束的一种预处理方法。
  • 首先计算各数据标准差\sigma _{i}=\sqrt{\frac{1}{N}\sum_{n=1}^{N}(x_{ni}-\overline{x_{i}})},然后对样本图像进行均值减法,再除以标准差x_{ni}=\frac{\widetilde{x_{ni}}}{\sigma _{i}}
  • 可以得到均值为0,方差为1的标准化数据,可以得到高度差异更小的图像样本。

白化

  • 消除数据间的相关性,增强图像边缘。
  • 首先使用均值减法使数据均值为0,得到\widetilde{x};然后进行白化处理,Y=WX,W=W^{T}=(PD^{-\frac{1}{2}}P^{T}),PD分别为奇异值分解后的正交矩阵和对角矩阵;
  • 该方法可以消除相关性较高的信息,保留边缘等相关性较低的信息,可以提高图像的识别性能。

3.激活函数

maxout:从k个单元输出值中取最大值作为单元的最终输出。

  • 卷积层使用:在多个特征图的相同位置选取最大值,用来减少特征图的个数;
  • 池化层使用:最大池化,用来缩小特征图。

ReLU函数的衍生函数

  • 其中,R ReLU性能最优,但是差异不大。

深度学习笔记整理(五)——提高泛化能力的方法_第1张图片

4.DropOut

原理:在网络训练的过程中,按照一定的概率将一部分中间层单元暂时从网络中丢弃,把该单元的输出设置为0,使其不工作来避免过拟合。

  • 丢弃概率通常是50%,可以在不同层设置不同的DropOut概率。

注意:

  • 对被舍弃的单元进行误差反向传播计算时,使用被丢弃之前的原始输出值;
  • 用训练好的网络进行识别时,经过进行过DropOut处理的层时,输出值要在原始输出的基础上乘以训练时DropOut的概率。

5.DropConnect

原理:将一部分连接权重设置为0,达到舍弃一部分单元,防止过拟合的目的。

与DropOut比较:

  • 性能更好,被丢弃的单元数更多;
  • 训练难度更高,需要随机选择设置为0的连接权重,对随机数依赖性比较高。

你可能感兴趣的:(算法,机器学习)