深度学习之过拟合

一、过拟合

机器学习的问题中,过拟合是一个很常见的问题。过拟合指的是只能拟合训练数据,但不能很好地拟合不包含在训练数据中的其他数据的状态。机器学习的目标是提高泛化能力,即便是没有包含在训练数据里的未观测数据,也希望模型可以进行正确的识别。

发生过拟合的原因,主要有以下两个:

  • 模型拥有大量参数、表现力强(模型太复杂)
  • 训练数据少

二、如何减少过拟合

1、获取更多数据

​ 获取更多的数据,从源头上解决问题,比如数据增强

2、正则化

​ 该方法通过在学习过程中对大的权重进行惩罚,来抑制过拟合。很多过拟合原本就是因为权重参数取值过大才发生的。

L1正则化
$$
L_1(\theta) = loss(\theta) + \lambda\sum_{i=1}^n|w_i|
$$
L2正则化(权值衰减)
$$
L_2(\theta) = loss(\theta) + \lambda\sum_{i=1}^nw_i^2
$$

  • L1减少的是一个常量,L2减少的是权重的固定比例
  • L1使权重稀疏,L2使权重平滑,一句话总结: L1会趋向于产生少量的特征,而其他特征都是0, 而L2则会选择更多的特征,这些特征都会接近于0。
  • 实践中L2正则化通常优于L1正则化

3、权重初始化

上面介绍抑制过拟合、提高泛化能力的技巧——权值衰减(weight decay)。简单地说,权值衰减就是一种以减小权重参数的值为目的进行学习的方法。通过减小权重参数的值来抑制过拟合的发生。

如果想减小权重的值,一开始就将初始值设为较小的值才是正途。

为什么不能将权重初始值设为0呢?严格地说,为什么不能将权重初始值设成一样的值呢?这是因为在误差反向传播法中,所有的权重值都会进行相同的更新。 为了防止“权重均一化”,必须随机生成初始值。

各层的激活值的分布都要求有适当的广度。为什么呢?因为通过在各层间传递多样性的数据,神经网络可以进行高效的学习。反过来,如果传递的是有所偏向的数据,就会出现梯度消失或者“表现力受限”的问题,导致学习可能无法顺利进行。

Xavier:如果前一层的节点数为n,则初始值使用标准差为$\frac{1}{\sqrt n}$的分布

Xavier初始值是以激活函数是线性函数为前提而推导出来的。因为sigmoid函数和 tanh函数左右对称,且中央附近可以视作线性函数,所以适合使用Xavier初始值。但当激活函数使用ReLU时,一般推荐使用ReLU专用的初始值,也称为“He初始值”。当前一层的节点数为n时, He初始值使用标准差为 $\frac{2}{\sqrt n}$的高斯分布。当Xavier初始值是$\frac{1}{\sqrt n}$ 时,(直观上)可以解释为,因为ReLU的负值区域的值为0,为了使它更有广度,所以需要2倍的系数

4、Batch Normalization

如果设定了合适的权重初始值,则各层的激活值分布会有适当的广度,从而可以顺利地进行学习。那么,为了使各层拥有适当的广度,“强制性”地调整激活值的分布会怎样呢?实际上, Batch Normalization方法就是基于这个想法而产生的。

为什么Batch Norm这么惹人注目呢?因为Batch Norm有以下优点。

  • 可以使学习快速进行(可以增大学习率)。
  • 不那么依赖初始值(对于初始值不用那么神经质)。
  • 抑制过拟合(降低Dropout等的必要性)。

Batch Norm,顾名思义,以进行学习时的mini-batch为单位,按minibatch进行正规化。具体而言,就是进行使数据分布的均值为0、方差为1的正规化。

接着, Batch Norm层会对正规化后的数据进行缩放和平移的变换,用
数学式可以如下表示。
$$
y_i \leftarrow \gamma x_i + \beta
$$
这里, γ和β是参数。一开始γ = 1, β = 0,然后再通过学习调整到合
适的值。

5、Dropout

​ 如果网络模型变的很复杂,只使用权值衰减就很难应对了。在这种情下,我们经常使用Dropout方法。

​ Dropout是一种在学习的过程中随机删除神经元的方法。训练时,随机
选出隐藏层的神经元,然后将其删除。被删除的神经元不再进行信号的传递

6、早期停止法

我们将训练集和测试集相对于每个epoch误差绘制成图表,对于第一epoch,因为模型是完全随机的,所以训练误差和测试误差都很大,随着epoch的增加,训练曲线一直在下降,因为模型越来越好的拟合数据,测试误差先下降后升高,最低点之前模型欠拟合,之后模型过拟合,因为模型开始记住数据。所以我们只要在测试曲线达到最低点时停止训练就可以避免过拟合

参考

https://www.cnblogs.com/skyfsm/p/8456968.html


   转载规则


《深度学习之过拟合》 Ace 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
深度学习之超参数 深度学习之超参数
一、什么是超参数​ 超参数是我们在将学习算法应用于数据集之前需要设置的变量。超参数的一个挑战在于,它不存在适用于所有地方的万能数字,每个任务和数据集的最佳数字各不相同。​ 一般来讲, 我们可以将超参数分为两类, 第一类是优化器超
2019-12-30
下一篇 
深度学习之优化算法 深度学习之优化算法
一、最优化神经网络的学习的目的是找到使损失函数的值尽可能小的参数。这是寻找最优参数的问题,解决这个问题的过程称为最优化(optimization)。常见的最优化方法有梯度下降法、牛顿法、拟牛顿法和共轭梯度法等。 二、梯度下降法梯度下降法是使
2019-11-28
  目录