转自 | 小白学视觉,作者小白

文章仅用于学术分享,侵删

   目录

  • LP范数

  • L1范数

  • L2范数

  • L1范数和L2范数的区别

  • Dropout

  • Batch Normalization

  • 归一化、标准化 & 正则化

  • Reference

其实正则化的本质很简单,就是对某一问题加以先验的限制或约束以达到某种特定目的的一种手段或操作。在算法中使用正则化的目的是防止模型出现过拟合。一提到正则化,很多同学可能马上会想到常用的L1范数和L2范数,在汇总之前,我们先看下LP范数是什么。

   LP范数

范数简单可以理解为用来表征向量空间中的距离,而距离的定义很抽象,只要满足非负、自反、三角不等式就可以称之为距离。

LP范数不是一个范数,而是一组范数,其定义如下:

pp的范围是[1,∞)[1,∞)。pp在(0,1)(0,1)范围内定义的并不是范数,因为违反了三角不等式。

根据pp的变化,范数也有着不同的变化,借用一个经典的有关P范数的变化图如下:

上图表示了pp从0到正无穷变化时,单位球(unit ball)的变化情况。在P范数下定义的单位球都是凸集,但是当0<p<10<p<1时,在该定义下的unit ball并不是凸集(这个我们之前提到,当0<p<10<p<1时并不是范数)。

那问题来了,L0范数是啥玩意?

L0范数表示向量中非零元素的个数,用公式表示如下:

我们可以通过最小化L0范数,来寻找最少最优的稀疏特征项。但不幸的是,L0范数的最优化问题是一个NP hard问题(L0范数同样是非凸的)。因此,在实际应用中我们经常对L0进行凸松弛,理论上有证明,L1范数是L0范数的最优凸近似,因此通常使用L1范数来代替直接优化L0范数。

   L1范数

根据LP范数的定义我们可以很轻松的得到L1范数的数学形式:

通过上式可以看到,L1范数就是向量各元素的绝对值之和,也被称为是"稀疏规则算子"(Lasso regularization)。那么问题来了,为什么我们希望稀疏化?稀疏化有很多好处,最直接的两个:

  • 特征选择

  • 可解释性

   L2范数

L2范数是最熟悉的,它就是欧几里得距离,公式如下:

L2范数有很多名称,有人把它的回归叫“岭回归”(Ridge Regression),也有人叫它“权值衰减”(Weight Decay)。以L2范数作为正则项可以得到稠密解,即每个特征对应的参数ww都很小,接近于0但是不为0;此外,L2范数作为正则化项,可以防止模型为了迎合训练集而过于复杂造成过拟合的情况,从而提高模型的泛化能力。

   L1范数和L2范数的区别

引入PRML一个经典的图来说明下L1和L2范数的区别,如下图所示:

如上图所示,蓝色的圆圈表示问题可能的解范围,橘色的表示正则项可能的解范围。而整个目标函数(原问题+正则项)有解当且仅当两个解范围相切。从上图可以很容易地看出,由于L2范数解范围是圆,所以相切的点有很大可能不在坐标轴上,而由于L1范数是菱形(顶点是凸出来的),其相切的点更可能在坐标轴上,而坐标轴上的点有一个特点,其只有一个坐标分量不为零,其他坐标分量为零,即是稀疏的。所以有如下结论,L1范数可以导致稀疏解,L2范数导致稠密解。

从贝叶斯先验的角度看,当训练一个模型时,仅依靠当前的训练数据集是不够的,为了实现更好的泛化能力,往往需要加入先验项,而加入正则项相当于加入了一种先验。

  • L1范数相当于加入了一个Laplacean先验;

  • L2范数相当于加入了一个Gaussian先验。

如下图所示:

   Dropout

Dropout是深度学习中经常采用的一种正则化方法。它的做法可以简单的理解为在DNNs训练的过程中以概率pp丢弃部分神经元,即使得被丢弃的神经元输出为0。Dropout可以实例化的表示为下图:

我们可以从两个方面去直观地理解Dropout的正则化效果:

  • 在Dropout每一轮训练过程中随机丢失神经元的操作相当于多个DNNs进行取平均,因此用于预测时具有vote的效果。

  • 减少神经元之间复杂的共适应性。当隐藏层神经元被随机删除之后,使得全连接网络具有了一定的稀疏化,从而有效地减轻了不同特征的协同效应。也就是说,有些特征可能会依赖于固定关系的隐含节点的共同作用,而通过Dropout的话,就有效地组织了某些特征在其他特征存在下才有效果的情况,增加了神经网络的鲁棒性。

   Batch Normalization

批规范化(Batch Normalization)严格意义上讲属于归一化手段,主要用于加速网络的收敛,但也具有一定程度的正则化效果。

这里借鉴下魏秀参博士的知乎回答中对covariate shift的解释(https://www.zhihu.com/question/38102762)。

注:以下内容引自魏秀参博士的知乎回答

大家都知道在统计机器学习中的一个经典假设是“源空间(source domain)和目标空间(target domain)的数据分布(distribution)是一致的”。如果不一致,那么就出现了新的机器学习问题,如transfer learning/domain adaptation等。而covariate shift就是分布不一致假设之下的一个分支问题,它是指源空间和目标空间的条件概率是一致的,但是其边缘概率不同。大家细想便会发现,的确,对于神经网络的各层输出,由于它们经过了层内操作作用,其分布显然与各层对应的输入信号分布不同,而且差异会随着网络深度增大而增大,可是它们所能“指示”的样本标记(label)仍然是不变的,这便符合了covariate shift的定义。

BN的基本思想其实相当直观,因为神经网络在做非线性变换前的激活输入值(X=WU+BX=WU+B,UU是输入)随着网络深度加深,其分布逐渐发生偏移或者变动(即上述的covariate shift)。之所以训练收敛慢,一般是整体分布逐渐往非线性函数的取值区间的上下限两端靠近(对于Sigmoid函数来说,意味着激活输入值X=WU+BX=WU+B是大的负值或正值),所以这导致后向传播时低层神经网络的梯度消失,这是训练深层神经网络收敛越来越慢的本质原因。而BN就是通过一定的规范化手段,把每层神经网络任意神经元这个输入值的分布强行拉回到均值为0方差为1的标准正态分布,避免因为激活函数导致的梯度弥散问题。所以与其说BN的作用是缓解covariate shift,倒不如说BN可缓解梯度弥散问题。

   归一化、标准化 & 正则化

正则化我们以及提到过了,这里简单提一下归一化和标准化。

归一化(Normalization):归一化的目标是找到某种映射关系,将原数据映射到[a,b]区间上。一般a,b会取[−1,1],[0,1]这些组合。

一般有两种应用场景:

  • 把数变为(0, 1)之间的小数

  • 把有量纲的数转化为无量纲的数

常用min-max normalization:

标准化(Standardization):用大数定理将数据转化为一个标准正态分布,标准化公式为:

归一化和标准化的区别:

我们可以这样简单地解释:

归一化的缩放是“拍扁”统一到区间(仅由极值决定),而标准化的缩放是更加“弹性”和“动态”的,和整体样本的分布有很大的关系。

值得注意:

归一化:缩放仅仅跟最大、最小值的差别有关。

标准化:缩放和每个点都有关系,通过方差(variance)体现出来。与归一化对比,标准化中所有数据点都有贡献(通过均值和标准差造成影响)。

为什么要标准化和归一化?

  • 提升模型精度:归一化后,不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。

  • 加速模型收敛:标准化后,最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解。如下图所示:

推荐阅读:

我的2022届互联网校招分享

我的2021总结

浅谈算法岗和开发岗的区别

互联网校招研发薪资汇总

2022届互联网求职现状,金9银10快变成铜9铁10!!

公众号:AI蜗牛车

保持谦逊、保持自律、保持进步

发送【蜗牛】获取一份《手把手AI项目》(AI蜗牛车著)

发送【1222】获取一份不错的leetcode刷题笔记

发送【AI四大名著】获取四本经典AI电子书

机器学习防止模型过拟合方法总结相关推荐

  1. 机器学习中防止过拟合方法

    过拟合   在进行数据挖掘或者机器学习模型建立的时候,因为在统计学习中,假设数据满足独立同分布,即当前已产生的数据可以对未来的数据进行推测与模拟,因此都是使用历史数据建立模型,即使用已经产生的数据去训 ...

  2. 机器学习防止模型过拟合的讲解

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:Poll,编辑:深度学习这件小事 来源 | http://www. ...

  3. 收藏 | 机器学习防止模型过拟合

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达    目录 LP范数 L1范数 L2范数 L1范数和L2范数的区别 ...

  4. 深度学习--解决模型过拟合的问题

    文章目录 一.过拟合 1.什么是过拟合 2.模型为什么会产生过拟合呢?这是因为: 3.调参训练模型的目的: 4.对欠拟合的说明 二.如何降低过拟合 1.获取更多的训练数据. 2.减小网络大小 3.添加 ...

  5. 机器学习:防止模型过拟合的方法

    机器学习中造成过拟合的原因可能有以下几点: (1)数据有噪声 (2)训练数据不足,有限的训练数据 (3)训练模型过度导致模型非常复杂 防止过拟合的方法: 1.提前停止: 对模型进行训练的过程即是对模型 ...

  6. 机器学习中模型泛化能力和过拟合现象(overfitting)的矛盾、以及其主要缓解方法正则化技术原理初探...

    1. 偏差与方差 - 机器学习算法泛化性能分析 在一个项目中,我们通过设计和训练得到了一个model,该model的泛化可能很好,也可能不尽如人意,其背后的决定因素是什么呢?或者说我们可以从哪些方面去 ...

  7. 防止模型过拟合的必备方法!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:Mahitha,来源:机器之心 正如巴菲特所言:「近似的正确好过精 ...

  8. 如何防止我的模型过拟合?这篇文章给出了6大必备方法

    选自Medium 作者:Mahitha Singirikonda 机器之心编译 编辑:小舟 正如巴菲特所言:「近似的正确好过精确的错误.」 在机器学习中,过拟合(overfitting)会使模型的预测 ...

  9. 机器学习中防止过拟合的处理方法

    原文地址:一只鸟的天空,http://blog.csdn.net/heyongluoyao8/article/details/49429629 防止过拟合的处理方法 过拟合   我们都知道,在进行数据 ...

  10. 干货︱机器学习中防止过拟合的处理方法

    我们都知道,在进行数据挖掘或者机器学习模型建立的时候,因为在统计学习中,假设数据满足独立同分布(i.i.d,independently and identically distributed),即当前 ...

最新文章

  1. ANACONDA安装pytorch后Pycharm无法识别到解释器
  2. uniapp - easycom模式(自动引入组件)
  3. 时间格式转换2020-04-09T23:00:00.000+08:00
  4. 工作166:错误的处理方式
  5. postgres 禁止远程登录_Windows 7禁止可移动存储设备写入数据,只有想不到,没有做不到...
  6. JavaScriptCore全面解析
  7. shell下移动文件
  8. 【Elasticsearch】wildcard、fuzzy、regexp、prefix
  9. centos删除文件不释放_Linux运维知识之linux centos下彻底删除文件 解决删除文件文件夹硬盘空间不释放不减少...
  10. 23种设计模式(二)组件协作之模板方法
  11. phpstorm 常用快捷键及自定义快捷键
  12. python教程简书_python教程
  13. 27000系列标准族谱
  14. 计算机主板的接口结构名称10,[pc玩家]主板接口大盘点,细数历年主流的主板接口:内部接口...
  15. 风吹过你走的那一刻,带走了你最后的足印,抹拭了我唯一追寻的方向
  16. 【echarts报错】: ‘normal‘ hierarchy in itemStyle has been removed since 4.0.
  17. ZNS : 解决传统SSD问题的高性能存储栈设计(fs-->io-->device)
  18. mysql 数据汇总与分组
  19. PowerBuilder常用函数
  20. Android studio 放大字体

热门文章

  1. Cboard框架搭建及使用
  2. Java分页工具实现方法
  3. pytorch入门——构建神经网络
  4. EXT2文件系统简介
  5. 2016年计算机网络考研真题及解析
  6. JAVASCRIPT加密解密终级指南
  7. pytorch实现猫狗分类+数据集
  8. 游戏制作(详细教程)
  9. Yandex插件使用说明——Slager_Z
  10. php超小免杀大马_最新过狗免杀php大马体积最小1KB吗