机器学习 (六) 过拟合与欠拟合 (Overfitting & Underfitting)

偏差(Bias)与方差(Variance)

机器学习 (六) 过拟合与欠拟合 (Overfitting & Underfitting)_第1张图片
如上图,偏差(Bias) 代表欠拟合(Underfitting),即训练集与验证集的误差都很大;**方差(Variance)**代表过拟合(Overfitting),即训练集误差很小,但验证集误差很大。

high Variance high bias high bias & high variance(欠拟合) low bias & low variance (过拟合)
Training Set Error 1% 15% 15% 0.5%
Validation Set Error 11% 16% 30% 1%

过拟合(Overfitting)

定义:

  由于使用的参数过多而导致模型对观测数据(训练数据)过度拟合,以至于用该模型来预测其他测试样本输出的时候与实际输出或者期望值相差很大的现象。
  简言之,就是训练数据拟合过好,导致测试数据与验证数据误差较大。

原因:

  • 模型太复杂
  • 数据太少
  • 数据噪声大

解决方法:

  1. 数据集扩增(Data Augmentation)
  2. 正则化(Regularization)
  3. 提前停止迭代(Early Stopping)
  4. 减少特征
  5. 针对神经网络,可用Dropout方法
  6. 需要设置超参数的方法,可用交叉验证(Cross Validation)

1.数据集扩增(Data Augmentation)

  足够的数据往往能更好更客观的训练出较好的模型,当数据较少时,拟合的模型太过片面,只学习到了部分数据,很容易导致过拟合。因此,增加数据可以很好的防止过拟合。数据集增加有很多方法,如人为增加数据;重采样,给训练集分配更多的数据;通过实验获取更过数据等。

2.正则化(Regularization)

机器学习中通常采用L1正则化L2正则化
  L1正则化的模型叫做Lasso回归,使用L2正则化的模型叫做Ridge回归(岭回归)。正则化是在loss function的式子后加一个L1或L2正则化参数项,构成一个新的带惩罚因子的cost function.

L1正则化:

L1正则化是指权值向量 w w w中所有元素的绝对值的和,其参数项公式如下:
λ 2 m ∑ j = 1 m ∥ w ∥ 1 = λ 2 m ∑ j = 1 m ∣ w j ∣ \frac{\lambda}{2m}\sum_{j=1}^{m}\left \| w \right \|_{1} = \frac{\lambda}{2m}\sum_{j=1}^{m} | w_{j} | 2mλj=1mw1=2mλj=1mwj
应用L1正则化的模型的cost function为:
J ( w , b ) = L ( w , b ) + λ 2 m ∑ j = 1 m ∣ w j ∣ J(w,b) = L(w,b) + \frac{\lambda}{2m}\sum_{j=1}^{m} | w_{j} | J(w,b)=L(w,b)+2mλj=1mwj

L2正则化:

L2正则化是指权值向量 w w w中所有元素的值的平方和,然后再求平方根,其参数项公式如下:
λ 2 m ∑ j = 1 m ∥ w ∥ 2 2 = λ 2 m ∑ j = 1 m w j 2 \frac{\lambda}{2m}\sum_{j=1}^{m}\left \| w\right \|_{2}^{2} = \frac{\lambda}{2m}\sum_{j=1}^{m} w_{j}^{2} 2mλj=1mw22=2mλj=1mwj2
应用L2正则化的模型的cost function为:
J ( w , b ) = L ( w , b ) + λ 2 m ∑ j = 1 m w j 2 J(w,b) = L(w,b) + \frac{\lambda}{2m}\sum_{j=1}^{m} w_{j}^{2} J(w,b)=L(w,b)+2mλj=1mwj2

L1与L2正则化原理

  模型的学习优化的目标是最小化cost function,学习的结果是模型参数。在原始目标函数的基础上添加正则化相当于,在参数原始的解空间添加了额外的约束

L1正则化对解空间添加的约束是:
λ 2 m ∑ j = 1 m ∣ w j ∣ < = C \frac{\lambda}{2m}\sum_{j=1}^{m} | w_{j} | <= C 2mλj=1mwj<=C
L2正则化对解空间添加的约束是:
λ 2 m ∑ j = 1 m w j 2 < = C \frac{\lambda}{2m}\sum_{j=1}^{m} w_{j}^2 <= C 2mλj=1mwj2<=C
为了形象化的说明以假设有两个空间,以二维参数空间为例,假设有两个参数W1和W2。
则L1正则化对解空间的约束为:
∣ w 1 ∣ + ∣ w 2 ∣ < = C |w_1| + |w_2| <= C w1+w2<=C
L2对解空间的约束为:
w 1 2 + w 2 2 < = C w_1^2 + w_2^2 <= C w12+w22<=C
将上述两个函数图像画在二维平面中,可得L1正则化图像为以原点为中心的菱形,而L2正则化图像为以原点为中心的圆,如图:
机器学习 (六) 过拟合与欠拟合 (Overfitting & Underfitting)_第2张图片机器学习 (六) 过拟合与欠拟合 (Overfitting & Underfitting)_第3张图片
  其中左图为L1正则化图像,右图为L2正则化图像。彩色圆圈表示cost function的等值线。同一个圆上的损失函数值相等,圆的半径越大表示损失值越大,由外到内,损失函数值越来越小,最中间紫色圈的损失值最小。如果没有L1和L2正则化约束的话,w1和w2是可以任意取值的,损失函数可以优化到中心的最小值的,此时中心对应的w1和w2的取值就是模型最终求得的参数。但是使用了L1与L2正则化之后,损失函数值分别被约束在菱形与圆形之内。

  L1正则化是将损失函数值约束在菱形之内,菱形的边缘和顶点与彩色等值线的交点(切点)就是对应的损失函数值,对应的w、b的值即为损失函数最小化的模型的解。类似的,对于L2正则化,圆与彩色等值线的交点(切点)即为最小化的损失函数值。

L1正则化与L2正则化的作用

  • L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择,一定程度上,L1也可以防止过拟合
  • L2正则化可以防止模型过拟合(overfitting)

L1与L2正则化作用的解释

L1相比于L2为什么容易获得稀疏解?

  由于L1正则化是菱形,有四个位于坐标轴的顶点:(1,0), (0,1), (-1,0), (0,-1),对应的 ( w 1 , w 2 ) (w_1,w_2) (w1,w2) w 1 = [ 1 , 0 , − 1 , 0 ] , w 2 = [ 0 , 1 , 0 , − 1 ] w_1 = [1,0,-1,0], w_2 = [0,1,0,-1] w1=[1,0,1,0],w2=[0,1,0,1]。作为正方形,这四个顶点作为交点与等值线相交的概率远远大于四条边与等值线相交的概率,因此,有很大概率 w 1 或 w 2 w_1或w_2 w1w2的值为0,则很容易生成稀疏权值矩阵(很多元素为0,只有少数元素是非零值的矩阵),即产生一个稀疏模型,可以用于特征选择。
  在预测或分类时,常常有大量的特征可供选择,代入这些特征得到一个稀疏模型,表示只有少数特征对这个模型有贡献,绝大部分特征是没有贡献的,或者贡献微小(因为它们前面的系数是0或者是很小的值,即使去掉对模型也没有什么影响),此时我们就可以只关注系数是非零值的特征。这就是稀疏模型与特征选择的关系。

为什么L2可以防止过拟合?
  对于L2正则化,其约束区域为圆形,这样得到 w 1 或 w 2 w_1或w_2 w1w2的值为0的概率很小,很大概率是非零值,且得到各种值的概率差不多,因此得到的损失函数值较为分散,即权重向量较为分散,这就会鼓励分类器最终将所有维度上的特征都用起来,而不是强烈依赖其中少数几个维度。这样做可以提高模型的泛化能力,降低过拟合的风险。
  更直观地从激活函数角度看,L2正则化可以有效防止过拟合的原因如下:
机器学习 (六) 过拟合与欠拟合 (Overfitting & Underfitting)_第4张图片
  以tanh激活函数为例,当 w w w很小, λ \lambda λ很大时,激活函数 z z z也会很小,即如上图中的红线区域。在此区域内,激活函数 g ( z ) g(z) g(z)几乎是线性的,因此神经网络中的各层传递都是以线性函数为激活函数,所以它不会造成很复杂的非线性决策边界,则不会生成复杂的非线性拟合模型,可有效防止过拟合问题。但 w w w太小, λ \lambda λ太大时,容易造成欠拟合。

总结:

正则化中的超参数(Hyperparameter) λ \lambda λ 在cost function中起到的平衡作用。
机器学习 (六) 过拟合与欠拟合 (Overfitting & Underfitting)_第5张图片
  以 L2 为例,若 λ 很小,对应上文中的 C 值就很大。这时候,圆形区域很大,能够让 w 更接近cost function最优解的位置(中心)。若 λ 近似为 0,相当于圆形区域覆盖了最优解位置,这时候,正则化失效,容易造成过拟合。相反,若 λ 很大,对应上文中的 C 值就很小。这时候,圆形区域很小, w w w 离最优解的位置较远。 w w w 被限制在一个很小的区域内变化, w w w 普遍较小且接近 0,起到了正则化的效果。但是,λ 过大容易造成欠拟合。

  对于cost function的误差值与多项式高次项系数 d d d而言,
机器学习 (六) 过拟合与欠拟合 (Overfitting & Underfitting)_第6张图片
  当 λ \lambda λ过小时,等于没有正则化,等于d (degree of Polynomial) 很大,即模型过拟合;当 λ \lambda λ过大时,等于过度正则化,等于d (degree of Polynomial) 很小,即模型欠拟合。

Reference:

  1. 正则化的作用以及L1和L2正则化的区别
  2. 机器学习中正则化项L1和L2的直观理解
  3. 【通俗易懂】机器学习中 L1 和 L2 正则化的直观解释

3.Early Stopping

  如上图,随着模型训练的进展,多项式维度增加,训练误差(training error)逐渐减小,验证误差(validation error)逐渐减小然后逐渐增大。因此,随着迭代次数增加,验证误差会越来越大,从而导致高方差,即过拟合。
  所以,当发现验证误差逐渐增大时,应提前停止迭代,防止验证误差越来越大,导致过拟合。最理想的停止节点为验证误差U型函数的谷底处,此时验证误差最小,训练集拟合误差也较小。

4.减少特征

  进行特征选择等处理方式,减少相关性较大的特征,可防止过拟合。

5.Dropout

  在神经网络中,Dropout方法通过修改隐藏层神经元的个数来防止网络的过拟合,也就是通过修改深度网络本身。在下图左边这样一个神经网络结构中,给予每个神经元停止工作的概率P,运行后得到右边新的神经网络结构。
机器学习 (六) 过拟合与欠拟合 (Overfitting & Underfitting)_第7张图片
  在每一批次数据被训练时,Dropout按照给定的概率P随机剔除一些神经元,只有没有被剔除也就是被保留下来的神经元的参数被更新。每一批次数据,由于随机性剔除神经元,使得网络具有一定的稀疏性,从而能减轻了不同特征之间的协同效应。而且由于每次被剔除的神经元不同,所以整个网络神经元的参数也只是部分被更新,消除减弱了神经元间的联合适应性,增强了神经网络的泛化能力和鲁棒性。

Dropout只在训练时使用,概率P作为一个超参数。在测试集时,不能使用。

为什么说Dropout可以解决过拟合?

(1)取平均的作用: 先回到标准的模型即没有dropout,我们用相同的训练数据去训练5个不同的神经网络,一般会得到5个不同的结果,此时我们可以采用 “5个结果取均值”或者“多数取胜的投票策略”去决定最终结果。例如3个网络判断结果为数字9,那么很有可能真正的结果就是数字9,其它两个网络给出了错误结果。这种“综合起来取平均”的策略通常可以有效防止过拟合问题。因为不同的网络可能产生不同的过拟合,取平均则有可能让一些“相反的”拟合互相抵消。dropout掉不同的隐藏神经元就类似在训练不同的网络,随机删掉一半隐藏神经元导致网络结构已经不同,整个dropout过程就相当于对很多个不同的神经网络取平均。而不同的网络产生不同的过拟合,一些互为“反向”的拟合相互抵消就可以达到整体上减少过拟合。

(2)减少神经元之间复杂的共适应关系: 因为dropout程序导致两个神经元不一定每次都在一个dropout网络中出现。这样权值的更新不再依赖于有固定关系的隐含节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况 。迫使网络去学习更加鲁棒的特征 ,这些特征在其它的神经元的随机子集中也存在。换句话说假如我们的神经网络是在做出某种预测,它不应该对一些特定的线索片段太过敏感,即使丢失特定的线索,它也应该可以从众多其它线索中学习一些共同的特征。从这个角度看dropout就有点像L1,L2正则,减少权重使得网络对丢失特定神经元连接的鲁棒性提高。

(3)Dropout类似于性别在生物进化中的角色: 物种为了生存往往会倾向于适应这种环境,环境突变则会导致物种难以做出及时反应,性别的出现可以繁衍出适应新环境的变种,有效的阻止过拟合,即避免环境改变时物种可能面临的灭绝。

Reference:
深度学习中Dropout原理解析

6.交叉验证(Cross Validation)

  交叉验证是对模型进行验证比较,从而选择更好的模型,一定程度上可防止过拟合。一些机器学习方法如K-NN,K-means等具有超参数(Hyperparameter),这些模型不仅需要确定权重等参数,还需要确定适合模型的超参数,通过交叉验证,将模型在不同超参数的设定下进行多次训练比较,然后选择出一个最优值,即在该超参数设定下,该模型最符合数据分布。
  交叉验证帮助我们确定模型的超参数,这样训练出来的模型,是经过多次综合比较得出的相对最优模型,在一定程度上可以避免过拟合的问题。

欠拟合(Underfitting)

定义:

  由于模型使用的参数过少,以至于得到的模型难以拟合观测数据(训练数据)的现象。
  简言之,就是模型太简单且训练数据太少,导致拟合时的误差很大,模型不符合数据的分布特征。

原因:

  • 模型太简单
  • 训练集太少

解决方法:

  1. 引入其他特征
  2. 增加模型复杂度,使用高次方程(高阶模型)
  3. 减小正则化参数 λ \lambda λ

你可能感兴趣的:(机器学习,深度学习,机器学习)