原因
过拟合是训练中常见的一种现象,模型权重过于贴合训练集而在测试集上表现不好,模型泛化能力差,可能是网络过深或者训练时间过多,与之相对的是欠拟合,可能是网络过浅或者训练时间过少。
欠拟合原因:
训练样本数量少
模型复杂度过低
参数还未收敛就停止循环
欠拟合的解决办法:
增加样本数量
增加模型参数,提高模型复杂度
增加循环次数
查看是否是学习率过高导致模型无法收敛
过拟合原因:
数据噪声太大
特征太多
模型太复杂
过拟合的解决办法:
清洗数据
减少模型参数,降低模型复杂度
增加惩罚因子(正则化),保留所有的特征,但是减少参数的大小(magnitude)。
预处理
对数据进行一定的预处理可以有效提高模型泛化能力,防止过拟合,
在CNN中常见的图像数据预处理包括旋转剪裁,镜像处理,缩放,模糊等
正则化(标准化)
正则化通过限制参数值域空间,显式地控制了模型复杂度,从而避免了过拟合。
常见的正则化有L1,L2正则化
L1,L2正则化指L1,L2范数的变形,
如L2范数,也就是平方和的平方根
L
2
=
(
∑
x
2
)
1
/
2
L2=(\sum{x^2})^{1/2}
L2=(∑x2)1/2
L2正则化,即权重衰减 (weight decay),岭回归 (ridge regression)
L 2 = 1 2 λ ( ∑ x 2 ) L2=\frac{1}{2}\lambda(\sum{x^2}) L2=21λ(∑x2)
dropout
dropout即随机失活,是Alexnet中使用的一种方法,让神经元输出结果随机为0,减少神经元之间的依赖,提高模型泛化能力。