过拟合和欠拟合
机器学习的根本问题是优化和泛化之间的对立。优化是指调节模型获得最佳性能的过程,泛化则是训练好的模型在未知数据上的性能好坏。机器学习的目的在于获得更好的泛化,但是泛化又无法控制,只能通过优化来实现。
模型在训练数据上的损失越小,在测试数据上的损失也越小,则模型是欠拟合的,依旧存在改进空间。这时的模型还没有对训练数据中的所有模式完成建模。当迭代一定次数之后,泛化不会再提高,验证指标由不变到变差,就说明模型开始进入过拟合。在过拟合的情况下,模型仅会学习和训练数据有关的模式,对验证数据和未知数据是没有意义的。
最好的解决过拟合的方法是使用更多的训练数据。训练数据越多,泛化能力越好。如果不能获取足够多的数据,那么就需要调节模型允许存储的信息量,迫使模型集中学习最重要的模式。通过限制模型存储的信息量的方式进行降过拟合的方法,称为正则化。下面就针对常用的正则化方法进行一些介绍。
减小网络大小
防止过拟合的最简单方法是减小模型中可学习参数的个数(层数和每层的单元个数)。模型中可学习参数的个数通常称为模型的容量,参数多的模型拥有更大的记忆容量。
大规模的记忆容量可以在训练样本和目标之间轻松完成字典式映射,但对于泛化能力没有任何贡献。因为深度学习模型都擅长拟合训练数据而不是泛化。
当网络的记忆容量有限时,网络就必须开始学会对目标进行预测,这才是我们所需要的神经网络的能力。所以在设计模型时,必须在容量过大(过拟合)和容量不足(欠拟合)之间找到折中方案。寻找折中方案最佳的工作流程是在开始选择较少的层和参数,然后逐渐增加层和参数,直到层和参数的增加对验证的损失影响变得很小未知。
添加权重正则化
神经网络的模型也复合奥卡姆剃刀原理:简单模型比复杂模型更不容易过拟合。简单模型的参数值分布的熵更小,所以强制让模型权重只能取更小的值来限制模型复杂度,使权重值的分布更加规则也是降低过拟合的有效方法。
这个方法一般称为权重正则化,一般通过向网络损失函数中添加与较大权重值有关的成本来实现。这个成本有以下两种方式。
- L1正则化,添加的成本与权重系数的绝对值成正比。
- L2正则化,添加的成本与权重系数的平方成正比。L2正则化也称为权重衰减。
添加dropout正则化
对神经网络的某一层使用dropout,可以在训练过程中随机将这一层的一些输出特征丢弃。dropout比率是被丢弃的特征所占的比例,通常在\(0.2 \sim 0.5\)的范围内。
dropout的核心思想是在层的输出中引入噪声,打破不显著的偶然模式,如果没有噪声,网络会记住这些偶然。