How can Machine Learn Better? - Regularization

1. Regularized Hypothesis Set

正则化的主要思想:将假设函数从高次多项式的数降低到低次,即把复杂的模型变成简单模型。如图一所示的表示高次多项式函数,明显产生了过拟合现象,而左图的表示使用正则化后的低次函数。并且从图中的下方的Hypothesis Set的圈中可以看出,高次的多项式会包含低次的多项式。所以在转换的过程,就是把模型从外圈降至内圈的过程。

但是:Regularization 不适用于多个解的模型,因为在降阶的过程中面临着选择最适解


图一 Regularization Fit [1]

下面来讨论如何进行降阶:
1.首先我们在列出10次和2次的多项式,如公式(1)(2)所示。对比可以发现,其实 H2 可以看成是 H10 的3~10次项的系数为0,如公式(3)所示,其中 s.t. 是subject to的意思,即约束条件

H10=w0+w1x+w2x2+w3x3++w10x10(1)

H2=w0+w1x+w2x2(2)

H2=w0+w1x+w2x2+w3x3++w10x10s.t.w3=w4==w10=0(3)

2.接着我们稍微放宽一下条件:我们不限定说一定要 3~10次多项式系数为0,我们只要要求满足有8项为0,即3项不为零(包括常数项),如公式(4)所示。这种Hypothesis称为 H2 。并且这个Hypothesis与 H2 H10 的关系如公式(5)所示。显然, H2 H2 更加的Flexible, 而 H2 H10 的复杂度更低。

H2=w0+w1x+w2x2+w3x3++w10x10s.t.q=010(wq0)3(4)

H2H2H10(5)

3.但是这个Hypothesis H2 的求解也是一个np-hard问题。所以我们继续寻找容易求解的宽松情况。如公式(6)所示,这种Hypothesis我们称为 H(C) 其中C为常数,H(C)称为regularized hypothesis set。这个方程的限定条件是让 权重的平方和小于C,当C增大时,限定的条件越宽松。如果C接近于无穷大,那么就和 H10 没什么区别了,如公式(7)所示

H2=w0+w1x+w2x2+w3x3++w10x10s.t.q=010w2q=||w||2C(6)

H(0)H(1.126)H(1126)H()H(10)(7)

这种形式的限定条件是可以进行求解的,我们把求解的满足限定条件的权重w记为wREG。接下来就要探讨如何求解wREG。

2. Weight Decay Regularization

1.首先我们为了表示方便,把公式(6)做一定的调整:写成向量矩阵的形式,得到公式(8)

minwRQ+1Ein(w)=1Nn=1N(wTznyn)2(Zwy)T(Zwy)s.t.q=0Qw2qwTwC(8)

2.我们的目的是计算 Ein(w) 的最小值,其中限定条件是 ||w2||C 如图二所示,这个限定条件从几何角度上的意思是,权重w被限定在半径为 C 的圆内(红色的圆),而球外的w都不符合要求,即便它是靠近 Ein(w) 梯度为零的w。

实际的变化方向如蓝色的向量 Ein 所示,其中红色向量normal 限定了切线的法向量的方向,而绿色的向量 Wlin 就是我们需要想方法找到让他最短的时刻。

显然,红色和绿色的向量其实就是蓝色向量的相互垂直的分向量,由高中的数学知识,我们知道,当蓝色向量越接近于红色的向量,那么绿色的向量长度越小,即如公式(9)所示

Ein(WREG)WREG(9)


图二 The Lagrange Multiplier [2]

3.然后我们队公式(9)加入拉格朗日算子 λ , 进行调整得到公式(10)

Ein(WREG)WREGEin(WREG)2λNWREGEin(WREG)+2λNWREG=02N(ZTZWREGZTy)+2λNWREG=0WREG=(ZTZ+λI)1ZTy(10)

上式中包含了求逆矩阵的过程,因为 ZTZ 是半正定矩阵,如果 λ 大于零,那么 ZTZ+λI 一定是正定矩阵,即一定可逆。统计学上把这叫做ridge regression(岭回归)

4.如果把公式(10)的反过来求积分,我们可以得到公式(11)。该表达式称为增广错误(augmented error)用 Eaug(w) 表示,其中 wTw 为正则化项(regularizer)。之所以叫做增广错误,是因为比传统的多了一正则化项。

Ein(WREG)WREGEaug(w)=Ein+λNwTwWREG=argminwEin(w)+λNwTw(11)

所以我们只需要调整不同的 λ 的值就可以对模型复杂度进行一定的调整,如图三所示。


图三 Result of Weith Decay Regularization [2]

从图中可以看出,当λ=0时,发生了过拟合;当λ=0.0001时,拟合的效果很好;当λ=0.01和λ=1时,发生了欠拟合。我们可以把λ看成是一种penality,即对hypothesis复杂度的惩罚,λ越大,w就越小,对应于C值越小,即这种惩罚越大,拟合曲线就会越平滑,高阶项就会削弱,容易发生欠拟合。λ一般取比较小的值就能达到良好的拟合效果,过大过小都有问题,但究竟取什么值,要根据具体训练数据和模型进行分析与调试。

这种regularization不仅可以用在多项式的hypothesis中,还可以应用在logistic regression等其他hypothesis中,都可以达到防止过拟合的效果。

但是这种方法有一个问题:我们目前讨论的多项式是形如x,x2,x3,⋯,xn的形式,若x的范围限定在[-1,1]之间,那么可能导致 xn 相对于低阶的值要小得多,则其对于的w非常大,相当于要给高阶项设置很大的惩罚。 也就是说我们无论让每个w的元素设定不同的 λ , 从而如果x的范围很大的话,那么会使得部分数据很小。

克服这个问题的方法是用Legendre polynomials代替x,xn这种形式,Legendre polynomials各项之间是正交的,用它进行多项式拟合的效果更好。

3. Regularization and VC Theory

本节介绍正则化与VC理论的关系。即从VC理论的角度说明为什么正则化的效果好

我们将从2个角度来讨论这个问题: 1) 误差方程 2) VC Dimension

1.首先对比 Augmented Error 和 VC Bound, 如图四所示


图四 Augmented Error and VC Bound [3]

根据Augmented Error和VC Bound的表达式, Ω(w) 包含于 Ω(H) 之内,所以, Eaug(w) Ein 更接近于 Eout(w)

2.从VC Dimension的角度。根据VC Dimension理论,整个hypothesis set的 dvc=d˘+1 ,这是因为所有的w都考虑了,没有任何限制条件。而引入限定条件的 dvc(H(C))=dEFF(H,A) ,即有效的VC Dimension。很显然, dvc 比较大,因为它代表了整个hypothesis set,但是 dEFF(H,A) 比较小,因为由于regularized的影响,限定了w只取一小部分。

所以当 λ=0 的时候,所有的w都没有收到惩罚,所以都考虑了,此时的 dvc 比较大,容易产生overfitting,当 λ>0 的时候, 部分w的乘以0而被放弃考虑,所以 dvc 比较小,模型的复杂度就降下来了,就解决了overfitting的问题。当然如果 λ 太大,使得过多的w被舍弃,那么就会出现 underfitting的情况了

4. General Regularizers

Regularizers主要有 L0,L1 和L2,前面用到的是 L2的Regularizer
关于范数的概念老师课上没有讲的很明白,可以参考这两篇博客,后续我也会写关于范数的博客

@ Todo L0、L1与L2范数

机器学习中的范数规则化之(一)L0、L1与L2范数

机器学习中的范数规则化之(二)核范数与规则项参数选择

Summary

  1. 这一节首先介绍了Regularization:在Hypothesis Set的基础上 加入 Regularizer 作为 Penality。使得最终结果中的部分w被惩罚掉而不被考虑,从而实现了降低模型复杂度的功能。
  2. 接着我们讨论了为什么 Regularization 能让模型复杂度降低,并且模型的泛化能力更强
  3. 最后我们讨论了常用的范数:L0 L1 L2 范数

Reference

[1] 机器学习基石(台湾大学-林轩田)\14\14 - 1 - Regularized Hypothesis Set (19-16)

[2] 机器学习基石(台湾大学-林轩田)\14\14 - 2 - Weight Decay Regularization (24-08)

[3] 机器学习基石(台湾大学-林轩田)\14\14 - 3 - Regularization and VC Theory (08-15)

12. 机器学习基石-How can Machine Learn Better? - Regularization的更多相关文章

  1. Android中的自然语言处理API

    我正在尝试制作类似于thiswebsite的Android应用程序.问题是我对自然语言处理领域很陌生.我不希望实现太多,只是提供用户与应用程序的一些交互,给他一种感觉,他确实在与某人聊天.基本上,我只是捕获用户输入的文本并将其发送到API并显示从API检索的结果.我遇到了http://opennlp.apache.org/和http://gate.ac.uk/,但不知道如何在我的Android应用

  2. python机器学习GCN图卷积神经网络原理解析

    这篇文章主要为大家介绍了GCN图卷积神经网络原理及代码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  3. 正则化DropPath/drop_path用法示例(Python实现)

    DropPath 类似于Dropout,不同的是 Drop将深度学习模型中的多分支结构随机"失效",而Dropout是对神经元随机"失效"这篇文章主要给大家介绍了关于正则化DropPath/drop_path用法的相关资料,需要的朋友可以参考下

  4. 如何用JavaScript学习算法复杂度

    这篇文章主要介绍了如何用JavaScript学习算法复杂度,对算法感兴趣的同学,一定要看一下

  5. PHP机器学习库php-ml的简单测试和使用方法

    下面小编就为大家带来一篇PHP机器学习库php-ml的简单测试和使用方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  6. PHP实现机器学习之朴素贝叶斯算法详解

    这篇文章主要介绍了PHP实现机器学习之朴素贝叶斯算法,结合实例形式详细分析了朴素贝叶斯算法的概念、原理及php实现技巧,需要的朋友可以参考下

  7. Java如何分析算法的时间和空间复杂度

    这篇文章主要介绍了Java如何分析算法的时间和空间复杂度,在计算机科学中,计算复杂性解释了算法的性能。文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下

  8. python机器学习Logistic回归原理推导

    这篇文章主要为大家介绍了python机器学习Logistic回归原理推导,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  9. 16中Python机器学习类别特征处理方法总结

    类别型特征(categorical feature)主要是指职业,血型等在有限类别内取值的特征。在这篇文章中,小编将给大家分享一下16种类别特征处理方法,需要的可以参考一下

  10. 机器学习Erdos Renyi随机图生成方法及特性

    这篇文章主要为大家介绍了机器学习Erdos Renyi随机图生成方法及特性详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

随机推荐

  1. 法国电话号码的正则表达式

    我正在尝试实施一个正则表达式,允许我检查一个号码是否是一个有效的法国电话号码.一定是这样的:要么:这是我实施的但是错了……

  2. 正则表达式 – perl分裂奇怪的行为

    PSperl是5.18.0问题是量词*允许零空间,你必须使用,这意味着1或更多.请注意,F和O之间的空间正好为零.

  3. 正则表达式 – 正则表达式大于和小于

    我想匹配以下任何一个字符:或=或=.这个似乎不起作用:[/]试试这个:它匹配可选地后跟=,或者只是=自身.

  4. 如何使用正则表达式用空格替换字符之间的短划线

    我想用正则表达式替换出现在带空格的字母之间的短划线.例如,用abcd替换ab-cd以下匹配字符–字符序列,但也替换字符[即ab-cd导致d,而不是abcd,因为我希望]我如何适应以上只能取代–部分?

  5. 正则表达式 – /bb | [^ b] {2} /它是如何工作的?

    有人可以解释一下吗?我在t-shirt上看到了这个:它似乎在说:“成为或不成为”怎么样?我好像没找到’e’?

  6. 正则表达式 – 在Scala中验证电子邮件一行

    在我的代码中添加简单的电子邮件验证,我创建了以下函数:这将传递像bob@testmymail.com这样的电子邮件和bobtestmymail.com之类的失败邮件,但是带有空格字符的邮件会漏掉,就像bob@testmymail也会返回true.我可能在这里很傻……当我测试你的正则表达式并且它正在捕捉简单的电子邮件时,我检查了你的代码并看到你正在使用findFirstIn.我相信这是你的问题.findFirstIn将跳转所有空格,直到它匹配字符串中任何位置的某个序列.我相信在你的情况下,最好使用unapp

  7. 正则表达式对小字符串的暴力

    在测试小字符串时,使用正则表达式会带来性能上的好处,还是会强制它们更快?不会通过检查给定字符串的字符是否在指定范围内比使用正则表达式更快来强制它们吗?

  8. 正则表达式 – 为什么`stoutest`不是有效的正则表达式?

    isthedelimiter,thenthematch-only-onceruleof?PATTERN?

  9. 正则表达式 – 替换..与.在R

    我怎样才能替换..我尝试过类似的东西:但它并不像我希望的那样有效.尝试添加fixed=T.

  10. 正则表达式 – 如何在字符串中的特定位置添加字符?

    我正在使用记事本,并希望使用正则表达式替换在字符串中的特定位置插入一个字符.例如,在每行的第6位插入一个逗号是什么意思?如果要在第六个字符后添加字符,请使用搜索和更换从技术上讲,这将用MatchGroup1替换每行的前6个字符,后跟逗号.

返回
顶部