如何提高深度学习的泛化能力?
Posted 有理想、有本领、有担当的有志青年
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何提高深度学习的泛化能力?相关的知识,希望对你有一定的参考价值。
数据增强
在样本有限的情况下,采用数据增强的方法对原有样本进行变换:
-
平移、旋转、镜像翻转
-
几何变换、对比度变换、颜色变换、添加随机噪声、图像模糊
-
弹性变换算法:双线性插值、双三次插值
预处理
- 均值减法:每个图像,减去所有图像的均值,使整个训练样本均值为0
- 均一化:对样本图像进行均值减法后,再除以标准差,使整个训练样本均值为0,方差为1
- 白化(ZCA):用到奇异值分解,使图像中物体的边缘更加清晰
Dropout
在网络的训练过程中,按照预先设定的概率将一部分中间层的单元暂时从网络中丢弃,通过把该单元的输出设置为0使其不工作,来避免过拟合。但是对被舍弃单元进行误差反向传播计算时,仍使用被舍弃之前的原始输出值
可用于训练包含全连接层的神经网络
训练完后,在识别时使用全部单元。对经过Dropout处理过的层要多乘一次训练时设定的概率(因为训练时舍弃了一部分,这时候识别要用全部的,多了)
DropConnect
与Dropout相似,DropCnooect是按照概率将一部分权重设置为0。相比之下,DropConnect更不容易发生过拟合
但是,没有免费的午餐,DropConnect训练难度更大,对随机数的依赖更高,所以Dropout使用更普遍
以上是关于如何提高深度学习的泛化能力?的主要内容,如果未能解决你的问题,请参考以下文章
[人工智能-深度学习-19]:神经网络基础 - 模型训练 - 泛化过拟合欠拟合以及常见的解决办法
深度学习为何泛化好?CMU博士论文《解释深度学习中的泛化性》