2.5 防止过拟合
所谓过拟合(over-fitting),其实就是所构建的机器学习模型或者深度学习模型在训练样本中表现得过于优秀,导致模型在验证数据集和测试数据集中表现不佳。在深度神经网络的训练过程中,过拟合的情况时常发生,因此,尽量避免过拟合就成为我们需要解决的问题。
本节将介绍防止过拟合的两种常用技术——dropout和正则化。
2.5.1 dropout
本章所描述的神经网络的训练流程是:先将输入通过网络进行前向传递,再通过对误差进行后向传递来更新参数。dropout针对这一过程,随机将隐藏层的部分神经元置零,再进行上述训练。通过dropout可以有效减少某些特征在其他特征存在时才有效果的情况,从而减轻不同特征的协同效应(这样做可以有效地避免过拟合的发生,增强泛化能力)。
2.5.2 正则化
深度神经网络中的正则化,其实可以参照机器学习中的正则化来理解。它和dropout一样,是用来防止过拟合的方法之一。
减少过拟合出现的思路有两种:一是增加训练样本的数量(但我们都知道,有时样本的数量是有限的,不能轻易地增加或减少);二是降低训练模型的复杂度(这相对比较容易实现,因为正则化的原理就是通过在损失函数中增加正则化项来降低训练模型的复杂度)。
在这里,我们可以将正则化项理解为复杂度,总体要求是损失越小越好。因此,加在损失函数中的正则项也要尽量小,以降低模型的复杂度,避免过拟合的产生。
常见的正则化方法有L1正则化和L2正则化,下面对这两种正则化方法进行介绍[3]。
L1正则化的正则项如下式所示。其中,λ是正则项的系数,n表示样本集的大小,w表示权重。
将该正则项添加到原损失函数C0中,得到如下损失函数。
为了更好地理解,下面将带有L1正则项的损失函数C对wi求偏导,得到参数更新依据。在下式中,η是学习率。
式子。若wi>0,则sgn(wi)>0,上式中的减法使得wi→0+;若wi<0,则sgn(wi)<0,上式中的减法使得wi→0-。最终结果都是wi→0,降低了模型的复杂度。
L2正则化的正则项与L1正则化的正则项相似,如下式所示。但是,L2正则项使用平方项代替绝对值,其中的只是为了在求偏导时与平方项求偏导后的系数进行约分,使得式子更加简明而使用的。
在下式中,更新参数时,因为,所以要求,达到了缩小wi,从而降低模型复杂度的目的。