01月29, 2020

深度学习总结(二)如何应对深度学习模型的过拟合现象

过拟合现象

学习器把训练样本学习的太好,很可能把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,导致泛化性能下降,这种现象叫做过拟合。有很多因素可能导致过拟合,其中最常见的情况是由于学习能力过于强大,以至于把训练样本所包含的不太一般的特性都学到了。

深度学习模型的数据量少而参数较多时,会发生过拟合,如下图

怎样减小过拟合?

1.重新清洗数据,导致过拟合的原因也有可能是数据不纯

2.数据集扩增,过拟合有可能是因为训练数据量太小,训练数据占总数据比例过小

3.采用正则化方法,在dense层上增加L1或L2正则

4.dropout,这种方法在神经网络里面比较常见 (https://blog.csdn.net/zongza/article/details/85017351)

  1. early stopping

  2. 简化模型,减少层级和参数数量

正则化为什么可以防止过拟合?

以L2为例,过拟合的损失函数表达式为:

J(\omega,b)=\frac{1}{m}\sum_{i}{(y_{i}-\tilde{y_{i}})^{2}}+\frac{\lambda}{2m}\sum_{w}w^{2}

前面一项是原始损失函数,后面一项是正则项,为了方便,我们把公式简化为 J=J_{0}+\frac{\lambda}{2m}\sum_{w}w^{2} ,对 w 进行求导得

\frac{\partial{J}}{\partial{w}}=\frac{\partial{J_0}}{\partial{w}}+\frac{\lambda}{m}w

利用梯度下降法更新参数

w\rightarrow w-\eta\frac{\partial{J_0}}{\partial{w}}-\eta\frac{\lambda}{m}w\ w\rightarrow(1-\eta\frac{\lambda}{m})w-\eta\frac{\partial{J_0}}{\partial{w}}

因为 \eta,\lambda,m 都大于零,所以 1-\eta\frac{\lambda}{m} 小于1,它的效果就是减小 w ,这也就是权重衰减的由来。当然如果考虑倒数项,w 最终的值可能增大也可能减小。

为什么 w 变小可以防止过拟合?

奥卡姆剃刀原理解释:更小的权值w,从某种意义上说,表示网络的复杂度更低,对数据的拟合刚刚好。

稍微数学一点的解释:过拟合的时候,拟合函数的系数往往非常大,过拟合,就是拟合函数需要顾忌每一个点,最终形成的拟合函数波动很大。在某些很小的区间里,函数值的变化很剧烈。这就意味着函数在某些小区间里的导数值(绝对值)非常大,由于自变量值可大可小,所以只有系数足够大,才能保证导数值很大。

本文链接:http://57km.cc/post/what to do with overfitting in dnn.html

-- EOF --

Comments