《深度学习之图像识别核心技术与案例实战》—2.2.5 正则化方法
2.2.5 正则化方法
在深度学习模型中,模型参数量巨大导致容易产生过拟合。理想情况下模型的设计不仅要在训练数据上表现好,并且希望能在新输入的数据上能有较好的泛化效果,因此需要引入正则化策略。
正则化是深度学习中非常重要并且能有效减少泛化误差的技术,它以增大训练误差为代价来减少测试误差。如果在训练误差上很小,可能出现过拟合的情况,一个能够最小化泛化误差的模型都需要一定程度的正则化。
研究者提出了很多有效的方法防止过拟合,比较常用的方法包括以下几种,下面具体介绍。
1.参数惩罚
通过对模型参数添加惩罚参数来限制模型能力,常用的就是在损失函数基础上添加范数约束:
(2.28)
通常情况下,深度学习中只对权重参数ω添加约束,对偏置项不加约束,主要原因是偏置项一般需要较少的数据就能精确地拟合,如果添加约束,常常会导致欠拟合。
L2范数惩罚是常用的方法,即我们熟知的权重衰减:
(2.29)
通过最优化技术,如梯度相关方法可以很快推导出参数优化公式:
(2.30)
其中,?为学习率,相对于普通梯度优化公式,相当于对参数乘一个缩减因子。
L1范数惩罚也是常用的方法:
(2.31)
通过梯度方法进行求解时,参数梯度为:
(2.32)
L1约束相对于L2约束能够产生更加稀疏的模型,在参数w比较小的情况下会直接缩减至0,可以起到特征选择的作用,也称之为LASSO问题。如果从概率角度进行分析,范数约束相当于对参数添加先验分布,其中L2范数相当于假定参数服从高斯先验分布,L1范数相当于假定参数服从拉普拉斯分布。
2.Dropout与Drop Connect
Dropout是一类通用并且计算简洁的正则化方法,在2014年被提出后广泛使用。
在传统的机器学习领域,集成学习(Ensemble Methods),是非常重要的一类方法,它包括Boosting、Bagging和Stacking方法,被用于降低模型的泛化误差,通过合并多个模型的结果得到更好的性能。主要的做法是分别训练几个不同的模型,然后让所有模型表决测试样例的输出。
Dropout则可以被认为是集成了大量深层神经网络的Bagging方法,提供了一种廉价的Bagging集成近似方法。简单地说,Dropout在训练过程中,随机地丢弃一部分输入,此时丢弃部分对应的参数不会更新。这相当于是一个集成方法,将所有子网络结果进行合并,通过随机丢弃输入可以得到各种子网络。显著降低了过拟合,同时减少训练节点提高了算法的学习速度。
Drop Connect可视为Dropout的一般化形式。在Drop Connect的过程中,我们将网络架构权重的一个随机选择子集设置为0,取代了在Dropout中对每个层随机选择激活函数的子集设置为0的做法。由于每个单元接收来自过去层单元的随机子集的输入,Drop Connect和Dropout都可以获得有限的泛化性能。Drop Connect和Dropout相似的地方在于涉及的模型里均引入了稀疏性,但不同之处在于Drop Connect引入的是权重的稀疏而不是层的输出向量的稀疏。
3.提前停止(Early Stopping)
在模型训练过程中经常出现随着不断迭代,训练误差不断减少的情况,但是验证误差减少后开始增长。提前停止是在验证误差不再提升后,提前结束训练,而不是一直等待验证误差到最小值。该方法不需要改变原有损失函数,简单而且执行效率高,但是需要一个额外的空间来备份一份参数。
确定训练迭代次数后,有两种策略可以充分利用训练数据,一是将全量训练数据一起训练一定的迭代次数;二是迭代训练流程直到训练误差小于提前停止策略的验证误差。对于二次优化目标和线性模型,提前停止策略相当于L2正则化。
4.训练样本扩充
以上的3种方法都是显式的规整化方法,而实际上防止过拟合最有效的方法是增加训练样本,这是隐式的规整化方法,训练集合越大过拟合概率越小。数据集合扩充是一个省时有效的方法,在不同领域具体方法不同。
在图像领域,常用的方法是将图片进行旋转、缩放等,后面会详细介绍。语音识别中则是对输入数据添加随机噪声,自然语言处理中的常用思路则是进行近义词替换。
本章从深度学习优化框架和深度学习模型优化中的激活函数、正则化、优化方法等方面,介绍了如何优化一个深度学习系统的基础部分,后面的章节将会针对深度学习图像处理领域的各个方面,理论结合实例进行详细讲解。
- 点赞
- 收藏
- 关注作者
评论(0)