[深度学习] 网络正则化

网络正则化

机器学习的核心问题是如何使学习算法不仅在训练样本上表现良好,而且在新数据上或测试集上同时奏效,学习算法在新数据上的这样一种表现我们称之为模型的泛化能力。如果一个学习算法在训练集表现优异,同时在测试集依然工作良好,可以说该学习算法有较强的泛化能力。若某算法在训练集表现优异,但是测试集却非常糟糕,我们说这样的学习并没有泛化能力,这种现象也叫做过拟合(overfitting)。

如何避免过拟合?我们可以使用正则化的技术来防止过拟合的情况。正则化是机器学习中通过显示的控制模型复杂度来避免模型过拟合,确保泛化能力的一种有效方式。

许多浅层学习器(如支持向量机等)为了提高泛化能力往往都需要依赖模型的正则化,深度学习也应如此。深度网络模型相比浅层学习器巨大的多的模型复杂度时把更锋利的双刃剑:保证模型更强大的同时也蕴含着过拟合的风险。深度模型的正则化可以说是整个深度模型搭建的最后一步,更是不可或缺的一步。下面将介绍五种实践中常用的卷积神经网络的正则化方法。

正则化原理

对于目标函数:

[深度学习] 网络正则化

L2正则化

L2 正则化与 L1 正则化都是机器学习中常见的模型正则化方式。深度模型中也常用两者对操作层(如卷积层,分类层)进行正则化,约束模型复杂度。假设待正则化的网络层参数为 w, l2正则项形式为:

[深度学习] 网络正则化

其中,λ控制正则项的大小, 较大的λ取值将较大程度约束模型复杂度。在实际中,一般将正则项加入损失函数,通过整体目标的误差反向传播,从而达到正则影响和指导网络训练的目的。

L1正则化

l1 正则化为

[深度学习] 网络正则化

注意:l1正则化除了同L2正则化一样能约束参数数量级之外,L1正则化还能起到使参数更稀疏的作用。稀疏化的结果使优化后的参数一部分是0,另一部分为非零值。非零值那部分可以起到选择重要参数或特征维度的作用,同时可以起到去除噪声的效果。此外,L1, L2正则化可以联合使用:

[深度学习] 网络正则化

最大范数约束

最大范数约束(max norm constraints)是通过向参数级的范数设置上线对网络进行正则化的手段,形如:

[深度学习] 网络正则化

其中,c多取10^3 或者10^4数量级数值。

随机失活(dropout)

dropout是目前几乎配备全连接层的深度卷积神经网络都在使用的网络正则化方法。dropout在约束网络复杂度的同时,还是一种针对深度模型的高效集成学习方法。

在传统神经网路中,由于神经元之间的相连,对于某个神经元来说,其反向传播来的梯度信息同时也受其它神经元的影响,这就是所谓的“复杂协同适应”效应。随机失活的提出,在一定程度上缓解了神经元之间的复杂的协同适应。降低了神经元的依赖,避免了网络过拟合发生。

原理:对于某层神经元,在训练阶段均以概率p随机将该神经元权重设置为0,在测试阶段所有神经元均呈激活状态,但其权重需要乘(1 - p)以保证训练和测试阶段各自权重拥有相同的期望。
如图:

[深度学习] 网络正则化

由于失活的神经元无法参与到网络的训练,因此每次训练(前向操作和反向操作时相当于面对一个全新的网络)。举例:以两层网络,各层有三个神经元的简单神经网络为例,若每层随机失活一个神经元,该网络共可产生9种子网络。测试阶段则相当于9个子网络的平均集成。

[深度学习] 网络正则化

注意:随机失活操作在工程实现上并没有完全遵照其原理,而是在训练阶段直接将随机失活后的网络响应乘以 1 / (1 - p),这样测试阶段便不需做任何量级调整。这样的随机失活被称为“倒置随机失活”。

验证集的使用

通常,在模型训练前可从训练集数据随机划分除一个子集称验证集,用以在训练阶段评测模型预测能力。一般在每一轮或每一个批处理训练后在该训练集和验证集上分别作网络前向运算,预测训练集和验证集样本标记。
以模型的准确率为例子,若模型在训练集和验证集上学习率如下图a:验证集准确率一直低于训练集上的准确率,但无明显下降趋势,这说明模型复杂度欠缺,模型表示能力有限—属于欠拟合状态。对此,可通过增加层数,调整激活函数增加网络非线性,减少模型正则化等措施增大网络复杂度。相反,若验证集曲线不仅低于训练集,且随着训练轮数增长有明显下降趋势。说明已经过拟合,此时应该增大模型正则化削弱网络复杂度。

[深度学习] 网络正则化

总结

网络正则化是深度网络模型搭建的关键一步,可有效防止网络过拟合,提升其泛化能力

l2正则化 和 l1正则化是卷积网络中较简单常用的正则化方法。一般而言l2正则化效果优于l1正则化。l1正则化可求得稀疏解,另外,二者可联合使用。

最大范数约束是通过约束参数范数对网络施加正则化,它有一个非常吸引人的优势在于,由于最大范数约束对参数范数约定了上线,即使网络学习率太大也不至于导致梯度爆炸。

在网络训练时可通过验证集上的学习曲线评估模型的训练效果,对网路训练及时停止,也是一种有效防止网络过拟合的方法。

增加训练数据,使用更多的数据扩充方式也是防止网络过拟合的有效方式,此外也可以在网络分类层中加入随机噪声,从而隐式的增加对模型的约束,提高模型泛化能力。

本文转自:CSDN - 四月晴,转载此文目的在于传递更多信息,版权归原作者所有。
原文链接:https://blog.csdn.net/siyue0211/article/details/80278883