前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习和深度学习中的正则化方法

机器学习和深度学习中的正则化方法

作者头像
Minerva
修改2020-05-31 10:59:10
1K0
修改2020-05-31 10:59:10
举报

机器学习和深度学习中的正则化方法

之前我们介绍过在机器学习和深度学习中可能存在过拟合问题,过拟合会导致高偏差,解决办法有两个,一个是增加数据量,一个是正则化,下面我们就介绍一下正则化。

内容目录

1 Bias偏差和Variance方差1.1 问题描述1.2 解决办法2 L0范数、L1范数和L2范数2.1 范数介绍2.2 L1范数和L2范数的区别3 Dropout 随机丢弃法4 Early Stop

1 Bias偏差和Variance方差

1.1 问题描述

我们在机器学习任务中,都会讲数据集分为训练集和验证集,对其评估会有训练集误差和验证集误差,偏差是用来衡量训练集误差的,训练集误差大就是高偏差,也就是模型训练不到位,出现欠拟合,训练集误差小就是低偏差。验证集误差大而训练集误差小就是高方差,也就是过拟合。也会有人问如果训练集和验证集的误差都很大是什么呢,很简单,就是任务失败了。 那么总结一下偏差的高低是用训练集的误差来判断方差的高低是用训练集和验证集的误差来判断

1.2 解决办法

由于高偏差一般是模型简单或者训练不充分导致的训练不到位,一般采用两个办法,一个是通过增加层数或结构使得网络结果更大更复杂,一个是增加训练时间使得训练更加充分。 高方差的问题主要是由于训练集过度学习导致验证集结果不好,也有两个解决办法,一个是增加训练数据,使得训练集能更好的反映验证集的特征信息,另一个方法就是今天的主要内容:正则化,通过降低模型复杂度解决过拟合问题。如图左为欠拟合,中为拟合比较好的,右为过拟合,可以看到模型为了拟合训练数据而导致过度复杂化了,我们需要引入正则化方法使得模型简单一点把曲线修正到好的拟合的样子。复杂的模型会尝试对所有的数据样本进行完美拟合,甚至包括一些异常样本点或者离群点,这就容易造成在较小的区间里预测值产生较大的波动,这种较大的波动也反映了在这个区间里的导数很大,而只有较大的参数值才能产生较大的导数。因此复杂的模型,其参数值会比较大,正则化方法可以限制参数值的大小。

2 L0范数、L1范数和L2范数

2.1 范数介绍

假如算法模型的代价函数是:

正则化就是给损失函数增加一个正则项:

式中,lamda为控制正则化程度的超参数,m为样本个数,

为加入的正则项,正则项一般是范数的形式。

假设x是一个向量,其范数定义为:

当为L1正则化时,正则项为:

目的是使得所有特征系数的绝对值尽可能的小, 当为L2正则化时,正则项为:

L0范数的作用是控制指向量中非0的元素个数,希望向量中大部分元素都是0,让矩阵稀疏化,但是L0范数很难优化(NP难问题)。 一般采用L1范数(也称为Lasso)替换L0范数来实现稀疏化,L1范数是L0范数的最优凸近似,更容易求解。L1范数的作用是控制向量各个元素的绝对值之和,也被称为“稀疏规则算子”。稀疏的矩阵可以达到特征选择的作用,通过稀疏化使得大部分特征为0,只保留部分特征,避免了对过多的特征数据进行学习,特征数量少也可以减少内存消耗,利于模型的训练,另外我们通过L1正则化将高维度的特征量降维到低维度的特征量,此时提取到的低维特征就可以作为任务目的的反映,也就是这些特征对学习任务更重要,其他的特征不那么重要了,有利于模型的可解释性表达。 L2范数(也称为Ridge岭回归)表示向量中各个参数的平方和的开方值,也就是正则项

最小化,接近0但不等于0,而L1范数在这里是希望一些元素等于0.

2.2 L1范数和L2范数的区别

下降速度 在机器学习任务中主要用L1范数和L2范数进行正则化,模型需要在损失函数引入正则化之后进行最小化权值参数,下图为L1和L2的最小化过程:

L1和L2正则的目的都是类似下坡的过程进行最小化,L1是按绝对值函数进行最小化,L2是按二次函数进行最小化,相对而言L1的下降速度会比L2快一些。但是L2无法实现稀疏化,它是通过使得使得特征对总体的影响减少而起到过拟合的作用,求解更稳定。 最优解 在二维的情况下,我们可以画出目标损失函数的等高线(图中一圈一圈的线),正则化的约束条件为图中矩形和圆形,等高线和约束条件相交的地方就是最优解的位置。L1正则在每个坐标轴的地方都有角,等高线和约束条件在四个角的位置相交的概率很大,就会因为某一维为0产生稀疏性,但等高线和L2正则在坐标轴上相交的概率很小,不能使得矩阵产生稀疏性。

总结一下:L1正则化可以提取少量特征,其他特征都为0,在特征选择比较有用,在所有特征中只有少量特征对结果产生重要影响。L2正则化中所有特征都能对结果产生作用,但是作用都很平均。

3 Dropout 随机丢弃法

Dropout是在神经网络训练过程中,随机地丢弃一些神经元,强行简化模型,这样导致模型在训练时不会给任何神经元过大的参数,使权值的更新不强依赖于有固定关系隐含节点的共同作用,避免有些特征仅仅在某些特定特征下才有效的情况,因此每个神经元最后的参数都比较小,且平均,一般设置为0.5或者0.2等。

4 Early Stop

在神经网络网络训练过程中,往往为了训练更加充分会设置很大的训练期数,如10000或100000,但这也会导致对于训练数据集的过度学习,产生过拟合现象,我们可以手动设置模型结束训练的标志,比如达到给定训练Epoch、训练精度连续10轮训练都不再提高、误差不再下降反而开始增加的时候,通过Early Stop提前停止训练达到防止过拟合的问题。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python编程和深度学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 内容目录
  • 1 Bias偏差和Variance方差
    • 1.1 问题描述
      • 1.2 解决办法
      • 2 L0范数、L1范数和L2范数
        • 2.1 范数介绍
          • 2.2 L1范数和L2范数的区别
          • 3 Dropout 随机丢弃法
          • 4 Early Stop
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档