深度学习之过拟合问题(一)

 

一般可以通过增加神经元数目、加深网络层次来提升神经网络的学习能力,使其学到的模型更加符合实际数据的分布情况。但要注意神经网络模型不能过于复杂,要注意避免训练效率下降以及过拟合等问题。产生过拟合的根本原因在于:

(1)观测值与真实值之间的误差:

    训练样本=真实值+随机误差,学习时尽可能地拟合了训练样本,而不是真实值,即学到了真实规律以外的随机误差。

(2)数据太少,无法反映真实分布;

(3)数据含有噪声,模型覆盖了噪音点;

(4)模型训练过度,非常复杂。

 

解决方法如下:

(1)获取更多数据:从数据源获得更多数据,或数据增强;

(2)数据预处理:清洗数据、减少特征维度、类别平衡;

(3)增加噪声:输入时+权重上(高斯初始化);

(4)正则化:限制权重过大、网络层数过多,避免模型过于复杂;

(5)多种模型结合:集成学习的思想;

(6)Dropout:随机从网络中去掉一部分隐神经元;

(7)限制训练时间、次数,及早停止。

 

一、获取更多数据&数据增强

训练样本的获取是一种抽样行为,即由有限的样本恢复其内部蕴含的规律,这是一个反问题,且往往是不适定的(ill-posed),因为反问题通常:

        不满足存在性:某些输入没有确定的输出对应;

        不满足唯一性:样本提供的信息不足以唯一确定模型;

        不满足连续性:由于存在噪声干扰,相近的输入可能对应于差距很大的输出。

求解反问题时必须附加先验(专业或经验)知识等条件,因为任何数学手段都不能弥补信息缺失的问题。

避免过拟合的基本方法之一是从数据源获得更多数据,当训练数据有限时,可以通过数据增强(data augmentation)变换原有的数据生成新的数据来扩大训练集。即使拥有大量数据,进行数据增强也是有必要的,因为可以防止神经网络学习到不相干的模式,从根本上提升整体性能。还要注意在使用增强技术的同时,必须确保不增加无关(无意义)的数据。数据增强的主要方法有:

1、翻转flip

        将图片水平或垂直翻转。

       

        原始图像、水平翻转图像、垂直翻转图像

       

 

2、旋转rotate

        旋转后图像维度可能不会被保留,如果是正方形图像,旋转90度后图像的尺寸会被保存;

        如果图像是长方形,旋转180度后图像的尺寸也会被保存;

        但用更小的角度旋转图像将会改变最终图像的尺寸。

       

        原始正方形图像每次顺时针旋转90度

       

 

3、缩放re-scale

        图像可以被放大或缩小,放大时大多数图像处理框架会按原始尺寸对放大后的图像进行裁剪;缩小时由于图像尺寸比原来的尺寸小,不得不对图像边界之外的内容做出假设。先考虑放大的情况:

       

        原始图像、图像放大10%、图像放大20%

       

 

4、裁剪crop

        随机从原始图像中采样一部分,然后将这部分图像调整为原始图像大小。注意裁剪和缩放的区别。

       

        原始图像、从左上角/右下角裁剪出一个正方形的部分并调整大小

       

 

5、平移pad

        将图像沿X或Y轴或同时沿2个方向移动,这一数据增强方法非常有用,因为大多数对象有可能分布在图像的任意位置,这迫使CNN网络需要看到所有的地方。

       

        原始图像、图像向右侧平移、图像向上方平移

       

 

6、插值interpolation

        当旋转、平移或者缩小一个没有纯色背景的图片,且又需要保持原始图片的大小时,需要对边界之外没有任何信息的区域做出假设。最简单的假设是令边界外的部分每一个像素点的值都是常数0(RGB值=0为黑色),这样在对图像进行变换后,在图像没有覆盖的地方会得到一块黑色的区域。

       

        逆时针旋转45度的图像、向右侧平移的图像、缩小的图像

        大多数情况下最简单假设的效果不好,可以采用以下方式填充未知的空间:

       

        常数填充、边缘填充、反射填充、对称填充、包裹模式填充

        (1)常量填充:适用于在单色背景下拍摄的图像;

        (2)边缘扩展:用图像边缘的值填充边界以外,适用于轻微平移的图像;

        (3)反射:图像像素值沿图像边界进行反射,适用于包含连续或自然背景的图像;

        (4)对称:类似反射,除了在反射边界上进行边缘像素copy。通常反射和对称可以交替使用,但在处理非常小的图像时,差异将是可见的;

        (5)包裹:在边界以外重复填充图像,相当于平铺图像,这种方法不像其他方法那样普遍被使用,因为它对很多场景都没有意义。

        还可以自定义方法处理未知区域(如近大远小等),但通常以上方法对大多数分类问题都有很好的效果。

 

7、高斯噪声Gaussian noise

        过拟合经常会发生在神经网络试图学习高频特征(即频繁出现的无意义的模式)时,而学习这些高频特征对模型提升并没有什么帮助。采用具有零均值特性的高斯噪声,在所有频率上都能产生数据点,可以有效的使高频特征失真,减弱其对模型的影响。但这也意味着低频成分(通常是关心的特征)同时会受到影响,由于能够通过学习来忽略影响,添加适量的噪声能够有效提升神经网络的学习能力。

        一个弱化的版本是椒盐噪声,以随机的白色和黑色像素点呈现并铺满整个图片。这种方式对图像产生的作用和添加高斯噪声产生的作用是一样的,只是效果相对较差。

       

        原始图像、增加了高斯噪声的图像、增加了椒盐噪声的图像

       

 

8、对比度变换contrast

        在图像的HSV(Hue,Saturation,Value)颜色空间,改变饱和度S和亮度V分量,保持色调H不变,对每个像素的S和V分量进行指数运算(指数因子在0.25到4之间),增加光照变化。

 

9、Fancy PCA(PCA Jittering)

        改变训练图像中RGB通道的强度,对所有RGB像素值执行PCA,得到3*3的协方差矩阵;对特征值进行波动,乘以一个服从均值为0、标准差为0.1高斯分布的随机变量,得到一个新的协方差矩阵,从而实现一种滤镜的效果。对于每个RGB图像像素 I_{xy}=[I_{xy}^{R},I_{xy}^{G},I_{xy}^{B}]^{T} 进行以下变化:

        I_{xy}=[p_{1},p_{2},p_{3}][\alpha _{1}\lambda _{1},\alpha _{2}\lambda _{2},\alpha _{3}\lambda _{3}]^{T}

        其中:p_{i} 为特征向量,\lambda _{i} 为特征值,\alpha _{i} 为0均值、标准差0.1的高斯分布的随机变量。

 

10、高级增强技术

        条件型生成对抗网络(conditional GANs)能将图片从一个领域转换到另一个领域中,这种方法虽然Robust但是计算密集类型。

       

        一个更廉价的选择是风格迁移(Neural Style Transfer),抓住一个图像的风格(纹理/气氛/外观)并将其与其他内容混合在一起,产生的效果类似GANs的效果。

       

 

二、数据预处理

1、清洗数据:纠正错误的label,或者删除错误数据

2、使用PCA减少特征维度

3、类别平衡

        对于训练样本不均衡的情况,即有的类别样本数量很多,有的类别样本很少,可以采取Label Shuffling策略:

        (1)首先对原始的图像列表按照类别label顺序进行排序;

        (2)计算每个类别的样本数量;

        (3)使用样本最多的类别的样本数,分别对应每个类随机产生一个列表;

        (4)用各个列表中的每个数字对各类别样本总数取余,得到各类别的id填入列表中;

        (5)根据id生成各类图像的上采样随机列表;

        (6)把所有的列表concat在一起进行random shuffling,得到最终的训练集。

        这个方法的优点在于只需要原始图像列表,所有操作都是在内存中在线完成,非常易于实现。

       

 

4、Label Smoothing

        由于标签模糊性会带来跨标签相似性问题,可以对混淆矩阵进行排序,得到跟每个标签最相近的4个标签,用它们来定义标签的先验分布,将传统的one-hot标签变为一个平滑过的soft标签,可以从某种程度上降低过拟合问题。

       

 

5、训练和测试要协调harmony

        通常只在训练时进行数据增强,在测试时很少进行数据增强,这样训练和测试之间就会不协调。

        (1)实现发现,如果在训练的最后几个epoch移除数据增强,然后跟传统一样测试,可以提升一点性能。

        (2)如果在训练和测试时都进行数据增强,也可以提升性能。

        (3)进行多尺度的训练,多尺度的测试。

        (4)使用训练过程的中间结果,加入做测试,可以一定程度上降低过拟合。

       

 

参考资料

http://baijiahao.baidu.com/s?id=1599775088482026500&wfr=spider&for=pc

https://zhuanlan.zhihu.com/p/23249000

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值