一、参数方法和非参数方法

在讲正则化之前,需要介绍2个概念。机器学习的方法,可以大致分成两类。

参数方法(Parametric Methods) 通过训练来确定一组参数。当我们参数的值定下来,可以说预测的过程已经跟之前的训练集无关了,模型已经定下来了,我们只需要把测试集代入对应参数就能出结果。参数化方法的好处就是。我们的模型复杂程度不会随着训练数据的增加而增加(注意不是训练模型的复杂度,是模型的复杂程度)。举例:逻辑回归,SVM,神经网络。

非参数方法 (Non-Parametric Methods),利用训练集本身来预测。比如K近邻算法,在训练过程中,我们并没有确定任何参数,甚至都不需要训练这个过程。但是缺点也很明显,训练集数量越大,我们模型就越复杂。当我们要预测一个新数据的时候,我们需要拿它与所有的训练数据比较。举例:KNN。

正则化,针对的主要就是参数方法。

二、复杂模型 VS 简单模型

假设它的x值是(1,2,3)  ,y值是6 ,它们两个模型都能准确预测样本,那当然是第一个模型简单粗暴。而且,根据奥卡姆剃刀原理(Occam's Razor, Ockham's Razor),越是简单粗暴的东西,有时候反而越有效。

模型的复杂程度 这里有个比较专业点的术语叫做,模型结构化风险。咱们这里就用模型的复杂程度比较接地气。在训练参数方法的过程中,我们不仅要关注模型的准确程度,同时也要让模型更加精简,模型复杂程度低。这不仅仅是为了计算量少,而且越精简的模型,往往泛化能力越强大!

三、降低模型复杂度

既然知道了要尽可能训练出简单的模型。在训练的过程中,将模型的复杂度作为一项指标,参与到训练的过程中,从而约束我们的模型。

机器学习模型的训练过程,简单来说就是我们要让我们模型的输出与真实采集到的结果的误差最小。同时还有一个衡量误差的指标,叫做损失函数(loss function)

同时要考虑误差跟模型复杂度,因此我们需要最小化:

四、正则化

首先了解一下正则性(regularity),正则性衡量了函数光滑的程度,正则性越高,函数越光滑。(光滑衡量了函数的可导性,如果一个函数是光滑函数,则该函数无穷可导,即任意n阶可导)。

机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作12中文称作L1正则化L2正则化,或者L1范数L2范数。L1,L2其实就是数学里面范数,用范数刚好可以达到我们想要的目的。1范数的定义就是绝对值的和,2范数就是平方和

L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些参数做一些限制。对于线性回归模型,使用L1正则化的模型建叫做Lasso回归,使用L2正则化的模型叫做Ridge回归(岭回归)

正则化是为了解决过拟合问题。在Andrew Ng的机器学习视频中有提到。解决过拟合的两种方法:
      方法一:尽量减少选取变量的数量。人工检查每一个变量,并以此来确定哪些变量更为重要,然后,保留那些更为重要的特征变量。显然这种做法需要对问题足够了解,需要专业经验或先验知识。因此,决定哪些变量应该留下不是一件容易的事情。此外,当你舍弃一部分特征变量时,你也舍弃了问题中的一些信息。例如,也许所有的特征变量对于预测房价都是有用的,我们实际上并不想舍弃一些信息或者说舍弃这些特征变量。最好的做法是采取某种约束可以自动选择重要的特征变量,自动舍弃不需要的特征变量。

方法二:正则化。采用正则化方法会自动削弱不重要的特征变量,自动从许多的特征变量中”提取“重要的特征变量,减小特征变量的数量级。这个方法非常有效,当我们有很多特征变量时,其中每一个变量都能对预测产生一点影响。正如在房价预测的例子中看到的那样,我们可以有很多特征变量,其中每一个变量都是有用的,因此我们不希望把它们删掉,这就导致了正则化概念的发生。

五、L1和L2正则化的直观理解

右上角那个彩色的一圈圈的就是误差项的函数。最小化的时候就是这两个相交的时候。左边的L1函数图像是带一个尖角的。明显更容易相交在数轴上,就是为整数的点上,这样就会有更多的刚好为0的解。而L2相交在圆弧上,各种位置都有可能。

上图代表的意思就是目标函数-平方误差项的等值线和L1、L2范数等值线(左边是L1),我们正则化后的代价函数需要求解的目标就是在经验风险和模型复杂度之间的平衡取舍,在图中形象地表示就是黑色线与彩色线的交叉点。

彩色线就是优化过程中遇到的等高线,一圈代表一个目标函数值,圆心就是样本观测值(假设一个样本),半径就是误差值,受限条件就是黑色边界(就是正则化那部分),二者相交处,才是最优参数。

左图中这个顶点的值是(w1,w2)=(0,w)。可以直观想象,因为L1函数有很多『突出的角』(二维情况下四个,多维情况下更多),没有加正则项的损失函数与这些角接触的机率会远大于与L1其它部位接触的机率,而在这些角上,会有很多权值等于0,这就是L1可以产生稀疏模型的原因,进而可以用于特征选择。

右图中二维平面下L2正则化的函数图形是个圆,与方形相比,被磨去了棱角。因此没有加正则项的损失函数与L相交时使得w1或w2等于零的机率小了许多,这就是L2正则化不具有稀疏性的原因。

L2正则化相当于为参数定义了一个圆形的解空间,而L1正则化相当于为参数定义了一个菱形的解空间。L1“棱角分明”的解空间显然更容易与目标函数等高线在脚点碰撞。从而产生稀疏解

六、关于L1,L2正则解的稀疏性的详细数学解释

L1 regularization

在原始的代价函数后面加上一个L1正则化项,即所有权重w的绝对值的和,乘以λ/n(这里不像L2正则化项那样,需要再乘以1/2)

同样先计算导数:

上式中sgn(w)表示w的符号。那么权重w的更新规则为:

比原始的更新规则多出了η * λ * sgn(w)/n这一项。当w为正时,更新后的w变小。当w为负时,更新后的w变大——因此它的效果就是让w往0靠,使网络中的权重尽可能为0,也就相当于减小了网络复杂度,防止过拟合

另外,上面没有提到一个问题,当w为0时怎么办?当w等于0时,|W|是不可导的,所以我们只能按照原始的未经正则化的方法去更新w,这就相当于去掉η*λ*sgn(w)/n这一项,所以我们可以规定sgn(0)=0,这样就把w=0的情况也统一进来了。

(在编程的时候,令sgn(0)=0,sgn(w>0)=1,sgn(w<0)=-1)

L2 regularization(权重衰减)

L2正则化就是在代价函数后面再加上一个正则化项:

C0代表原始的代价函数,后面那一项就是L2正则化项,它是这样来的:所有参数w的平方的和,除以训练集的样本大小n。λ就是正则项系数,权衡正则项与C0项的比重。另外还有一个系数1/2,1/2经常会看到,主要是为了后面求导的结果方便,后面那一项求导会产生一个2,与1/2相乘刚好凑整。

L2正则化项是怎么避免overfitting的呢?我们推导一下看看,先求导:

可以发现L2正则化项对b的更新没有影响,但是对于w的更新有影响:

在不使用L2正则化时,求导结果中w前系数为1,现在w前面系数为 1−ηλ/n ,因为η、λ、n都是正的,所以 1−ηλ/n小于1,它的效果是减小w,这也就是权重衰减(weight decay)的由来。当然考虑到后面的导数项,w最终的值可能增大也可能减小。

另外,需要提一下,对于基于mini-batch的随机梯度下降,w和b更新的公式跟上面给出的有点不同:

对比上面w的更新公式,可以发现后面那一项变了,变成所有导数加和,乘以η再除以m,m是一个mini-batch中样本的个数。

到目前为止,我们只是解释了L2正则化项有让w“变小”的效果,但是还没解释为什么w“变小”可以防止overfitting?一个所谓“显而易见”的解释就是:更小的权值w,从某种意义上说,表示网络的复杂度更低,对数据的拟合刚刚好(这个法则也叫做奥卡姆剃刀),而在实际应用中,也验证了这一点,L2正则化的效果往往好于未经正则化的效果。当然,对于很多人(包括我)来说,这个解释似乎不那么显而易见,所以这里添加一个稍微数学一点的解释(引自知乎):

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

而正则化是通过约束参数的范数使其不要太大,所以可以在一定程度上减少过拟合情况。

七、 L1和L2正则化的区别

1. L2 regularizer :使得模型的解偏向于 norm 较小的 W,通过限制 W 的 norm 的大小实现了对模型空间的限制,从而在一定程度上避免了 overfitting 。不过 ridge regression 并不具有产生稀疏解的能力,得到的系数 仍然需要数据中的所有特征才能计算预测结果,从计算量上来说并没有得到改观。因为L1范数正则化项的“稀疏解”特性,L1更适合用于特征选择,找出较为“关键”的特征,而把一些不那么重要的特征置为零。

2. L1 regularizer : 它的优良性质是能产生稀疏性,导致 W 中许多项变成零。 稀疏的解除了计算量上的好处之外,更重要的是更具有“可解释性”。L2范数正则化项可以产生很多参数值很小的模型,也就是说这类的模型抗干扰的能力很强,可以适应不同的数据集,适应不同的“极端条件”。

一般回归分析中回归w表示特征的系数,从上式可以看到正则化项是对系数做了处理(限制)。

L1正则化和L2正则化的说明如下:

  1. L1正则化是指权值向量w中各个元素的绝对值之和,通常表示为||w||1
  2. L2正则化是指权值向量w中各个元素的平方和然后再求平方根(可以看到Ridge回归的L2正则化项有平方符号),通常表示为||w||2

那添加L1和L2正则化有什么用?下面是L1正则化和L2正则化的作用,这些表述可以在很多文章中找到。

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

稀疏模型与特征选择

上面提到L1正则化有助于生成一个稀疏权值矩阵,进而可以用于特征选择。为什么要生成一个稀疏矩阵?

稀疏矩阵指的是很多元素为0,只有少数元素是非零值的矩阵,即得到的线性回归模型的大部分系数都是0. 通常机器学习中特征数量很多,例如文本处理时,如果将一个词组(term)作为一个特征,那么特征数量会达到上万个(bigram)。在预测或分类时,那么多特征显然难以选择,但是如果代入这些特征得到的模型是一个稀疏模型,表示只有少数特征对这个模型有贡献,绝大部分特征是没有贡献的,或者贡献微小(因为它们前面的系数是0或者是很小的值,即使去掉对模型也没有什么影响),此时我们就可以只关注系数是非零值的特征。这就是稀疏模型与特征选择的关系。

正则化参数的选择

L1正则化参数

通常越大的λ可以让代价函数在参数为0时取到最小值。。因为正则化系数越大,正则化的函数图形(上文图中的方形或圆形)会向坐标轴原点收缩得越厉害,这个现象称为shrinkage,过程可以称为shrink to zero.

下面是一个简单的例子,这个例子来自Quora上的问答。为了方便叙述,一些符号跟这篇帖子的符号保持一致。

假设有如下带L1正则化项的代价函数:

F(x)=f(x)+λ||x||1

其中x是要估计的参数,相当于上文中提到的w以及θ. 注意到L1正则化在某些位置是不可导的,当λ足够大时可以使得F(x)在x=0时取到最小值。如下图:

分别取λ=0.5和λ=2,可以看到越大的λ越容易使F(x)在x=0时取到最小值。

此外也可以自己计算一下,当损失函数f(x)和正则化函数L=∣x∣在定义域内第一次相交的地方,就是整个代价函数F(x)的最优解。

L2正则化参数

从公式5可以看到,λ越大,θj衰减得越快。另一个理解可以参考图2,λ越大,L2圆的半径越小,最后求得代价函数最值时各参数也会变得很小。

参考: https://blog.csdn.net/jinping_shi/article/details/52433975

[机器学习]正则化方法 -- Regularization相关推荐

  1. 机器学习——正则化理论(Regularization Theory)

    过拟合(overfitting): 产生的原因有: 1.数据量(N):N越小,越容易overfit 2.随机噪声(stochastic noise, σ 2 {\sigma ^{\rm{2}}} σ2 ...

  2. 机器学习—正则化方法—L1正则化、L2正则化

    1.L1正则化(稀疏矩阵) 权值向量w中各个元素的绝对值之和: 2.L2正则化(权重衰减) 权值向量w中各个元素的平方和: 3.L1正则化 VS L2正则化 L1正则化可以产生稀疏权值矩阵,即产生一个 ...

  3. 正则化方法:L1和L2 regularization、数据集扩增、dropout

    https://www.toutiao.com/a6704868049352131080/ 为什么要使用正则化 我们先回顾一下房价预测的例子.以下是使用多项式回归来拟合房价预测的数据: 正则化方法:防 ...

  4. 正则化方法/防止过拟合提高泛化能力的方法:L1和L2 regularization、数据集扩增、dropout

    转载自:http://blog.csdn.net/u012162613/article/details/44261657 本文是<Neural networks and deep learnin ...

  5. 逻辑回归python正则化 选择参数_吴恩达机器学习笔记(三)——正则化(Regularization)...

    1.过拟合的问题(Over-fitting) 如果我们有非常多的特征,我们通过学习得到的假设可能能够非常好地适应训练集(代价函数可能几乎为0),但是可能会不能推广到新的数据. (1)下图是一个回归问题 ...

  6. 机器学习 正则化(regularization)

    方法 1.丢弃一些特征,手工或者使用一些算法(如PCA) 2.正则化,保留特征,但是减少参数大小. 正则化 高次项导致了过度拟合,所以只要将高次项的系数逼近为0的话,就可以拟合了,既在一定程度上减少参 ...

  7. 正则化方法:数据增强、regularization、dropout

    文章目录 过拟合 overfitting 数据增强 正则化项 范数 norm L1 正则 Lasso regularizer L2 正则 Ridge Regularizer / Weight Deca ...

  8. 正则化方法:防止过拟合,提高泛化能力

    在机器学习各种模型训练数据不够多时,或者overtraining时,常常会导致overfitting(过拟合).其直观的表现如下图所示,随着训练过程的进行,模型复杂度增加,在training data ...

  9. 1.8 其他正则化方法-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.7 理解 Dropout 回到目录 1.9 归一化输入 其他正则化方法 (Other Regularization Methods) 除了 L2L2L2 正则化和随机失活 ...

最新文章

  1. 4岁学编程,19岁创办以太坊,4年十亿身家!
  2. java hello work_Java入门教程系列 – 第一个程序 “hello, world”
  3. HashMap 1.7工作原理
  4. Kubernetes — Harbor 分布式镜像仓库
  5. 多生产者_多线程必考的「生产者 - 消费者」模型,看齐姐这篇文章就够了
  6. 3. Longest Substring Without Repeating Characters无重复字符的最长子串
  7. 骗人的数学题,那消失的1块钱到底被谁拿走了
  8. Python之Numpy入门实战教程(1):基础篇
  9. 为什么只有奇次谐波_关于开关电源谐波失真,这有一份测量分析方法经验分享!...
  10. AI取代人类?这4种工作仍将是从业者的“铁饭碗” | 未来
  11. ltp-ddt realtime_cpu_load涉及的cyclictest 交叉编译
  12. Spring AOP(七)之定义切入点
  13. python3.7.2安装pywifi_Python pywifi包_程序模块 - PyPI - Python中文网
  14. 网络社区划分的算法分类
  15. 全能----达芬奇之工艺交叉学
  16. 安排,2020新kafka视频教程零基础到精通
  17. 算法基础14 —— 图论入门之弗洛伊德算法(Floyed + Dijkstra + Bellman-Ford + SPFA)
  18. 无边无际的虚拟城市来了!能走能飞的Demo,一火再火的“波函数坍缩”开源算法...
  19. 蓝桥杯——瓷砖样式(第八届决赛)
  20. 网络编程(36)—— 线程安全函数和非线程安全函数

热门文章

  1. oracle alter_log,在线查看alter.log文件内容
  2. python自动化测试——测试报告以附件形式发送邮件
  3. @Mock与@InjectMocks的区别
  4. 从双11看技术趋势:金融行业总动员之阿里金融云
  5. Linux下的screen(远程协作的用法)
  6. rsa实现js前台加密java后台解密
  7. python语言有哪些类型的运算符_python(4)-变量 数据类型和运算符
  8. python函数的作用复用代码_Python-函数和代码复用
  9. socket closed是什么意思_socket请求
  10. mingw64 下 java,如何安装MinGW-w64和MSYS2?