机器学习 正则化

作者:陶轻松
链接:https://www.zhihu.com/question/20924039/answer/131421690
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

我尽量用通俗一点的话来解答一下楼主的问题,

r(d)可以理解为有d的参数进行约束,或者 D 向量有d个维度。
咱们将楼主的给的凸优化结构细化一点,别搞得那么抽象,不好解释;

min\left\{  \frac{1}{N}\sum_{i=1}^{N}{(y_{i} - f(x_{i} ))^{2}  + r(d)}   \right\} , 其中,
咱们可以令: f(x_{i} ) = w_{0}x_{0} + w_{1} x_{1} + w_{2}x_{2} + w_{3}x_{3} + ..... + w_{n}x_{n}.

ok,这个先介绍到这里,至于f(x)为什么用多项式的方式去模拟?相信也是很多人的疑问,很简单,大家看看高等数学当中的泰勒展开式就行了,任何函数都可以用多项式的方式去趋近,e^{x} ,log x,lnx,\frac{1}{x} 等等都可以去趋近,而不同的函数曲线其实就是这些基础函数的组合,理所当然也可以用多项式去趋近,好了,这个就先解释到这里了。

接下来咱们看一下拟合的基础概念。
首先,用一个例子来理解什么是过拟合,假设我们要根据特征分类{男人X,女人O}。
请看下面三幅图,x1、x2、x3;

这三幅图很容易理解:
1、 图x1明显分类的有点欠缺,有很多的“男人”被分类成了“女人”。
2、 图x2虽然有两个点分类错误,但是能够理解,毕竟现实世界有噪音干扰,比如有些人男人留长发、化妆、人妖等等。
3、 图x3分类全部是正确的,但是看着这副图片,明显觉得过了,连人妖都区分的出来,可想而知,学习的时候需要更多的参数项,甚至将生殖器官的形状、喉结的大小、有没有胡须特征等都作为特征取用了,总而言之f(x)多项式的N特别的大,因为需要提供的特征多,或者提供的测试用例中我们使用到的特征非常多(一般而言,机器学习的过程中,很多特征是可以被丢弃掉的)。

好了,总结一下三幅图:
x1我们称之为【欠拟合】
x2我们称之为【分类正拟合】,随便取的名字,反正就是容错情况下刚好的意思。
x3我们称之为【过拟合】,这种情况是我们不希望出现的状况,为什么呢?很简单,它的分类只是适合于自己这个测试用例,对需要分类的真实样本而言,实用性可想而知的低。

恩,知道了过拟合是怎么回事之后,我们来看一下如何去规避这种风险。先不管什么书上说的、老师讲的、经验之说之类的文言文。咱们就站在第一次去接触这种分类模型的角度去看待这个问题,发散一下思维,我们应该如何去防止过拟合?
显而易见,我们应该从【过拟合】出现的特征去判别,才能规避吧?
显而易见,我们应该、而且只能去看【过拟合】的f(x)形式吧?
显而易见,我们从【过拟合】的图形可以看出f(x)的涉及到的特征项一定很多吧,即x_{0},x_{1},x_{2},x_{3}....x_{N} 等等很多吧?
显而易见,N很大的时候,w_{0} ,w_{1} ,w_{2} ,w_{3} ,...w_{N} 是等数量增长的吧?
显而易见,w系数都是学习来的吧?

So,现在知道这些信息之后,如何去防止过拟合,我们首先想到的就是控制N的数量吧,即让N最小化吧,而让N最小化,其实就是让W向量中项的个数最小化吧?
其中,W=(w_{0} ,w_{1} ,w_{2} ,w_{3} ,...w_{N} )

PS: 可能有人会问,为什么是考虑W,而不是考虑X?很简单,你不知道下一个样本想x输入的是什么,所以你怎么知道如何去考虑x呢?相对而言,在下一次输入x^{(k)} ,即第k个样本之前,我们已经根据x^{(1)} ,x^{(2)} ,....x^{(k-1)} 次测试样本的输入,计算(学习)出了W.就是这么个道理,很简单。


ok,any way.回到上面的思维导图的位置,我们再来思考,如何求解“让W向量中项的个数最小化”这个问题,学过数学的人是不是看到这个问题有点感觉?对,没错,这就是0范数的概念!什么是范数,我在这里只是给出个0-2范数定义,不做深究,以后有时间在给大家写点文章去分析范数的有趣玩法;
0范数,向量中非零元素的个数。
1范数,为绝对值之和。
2范数,就是通常意义上的模。

PS,貌似有人又会问,上面不是说求解“让W向量中项的个数最小化”吗?怎么与0范数的定义有点不一样,一句话,向量中0元素,对应的x样本中的项我们是不需要考虑的,可以砍掉。因为0 x_{i} 没有啥意义,说明x_{i} 项没有任何权重。so,一个意思啦。


ok,现在来回答楼主的问题,r(d) = “让W向量中项的个数最小化” = \left| W \right| _{0}

所以为了防止过拟合,咱们除了需要前面的相加项最小,即楼主公式当中的
R_{emp}(f) = \frac{1}{2}W^{T}W+\sum_{i}^{}{l(y_{i},f(x_{i} ) )}   最小,我们还需要让r(d)=\left| W \right| _{0} 最小,所以,为了同时满足两项都最小化,咱们可以求解让R_{emp}(f) 和r(d)之和最小,这样不就同时满足两者了吗?如果r(d) 过大,R_{emp}(f) 再小也没用;相反r(d)再小,R_{emp}(f) 太大也失去了问题的意义。
说到这里我觉得楼主的问题我已经回答了,那就是为什么需要有个r(d)项,为什么r(d)能够防止过拟合原因了。

根据《男人帮》电影大结局的剧情:本来故事已经完成了,为了让大家不至于厌恶课本的正规理论,我们在加上一集内容,用以表达我对机器学习出书者的尊重;

书本中,或者很多机器学习的资料中,为了让全球的机器学习人员有个通用的术语,同时让大家便于死记硬本,给我上一段黑体字的部分的内容加上了一坨定义,例如:
我们管 R_{emp}(f) 叫做 经验风险,管上面我们思维导图的过程叫做 正则化,所以顺其自然的管r(d)叫做 正则化项,然后管 R_{emp}(f) +r(d) 叫做 结构风险,所以顺其自然的 正则化就是我们将 结构风险最小化的过程,它们是等价的。
By the way,各位计算机界的叔叔、阿姨、伯伯、婶婶,经过不懈的努力,发现了这个公式很多有意思的地方,它们发现0范数比较恶心,很难求,求解的难度是个NP完全问题。然后很多脑袋瓜子聪明的叔叔、阿姨、伯伯、婶婶就想啊,0范数难求,咱们就求1范数呗,然后就研究出了下面的等式:

一定的条件我就不解释了,这里有一堆算法,例如主成分KPCA等等,例子我就不在举了,还是原话,以后我会尽量多写点这些算法生动点的推到过程,很简单,注重过程,不要死记硬背书本上的结果就好。
上面概括而言就是一句话总结:1范数和0范数可以实现稀疏,1因具有比L0更好的优化求解特性而被广泛应用。然后L2范数,是下面这么理解的,我就直接查别人给的解释好了,反正简单,就不自己动脑子解释了:
L2范数是指向量各元素的平方和然后求平方根。我们让L2范数的正则项||W||2最小,可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0,这里是有很大的区别的哦;所以大家比起1范数,更钟爱2范数。
所以我们就看到书籍中,一来就是,r(d)=\frac{\lambda }{2} \left| \left| W \right|  \right| ^{2} 或者r(d)={\lambda }\left| W \right| _{1} 这种结构了,然后在机器学习当中还能看到下面的结构:
min{  \sum_{i}^{N}{(y-W^{T}x )} + \frac{\lambda }{2}  \left| \left| W \right|  \right| _{2} ^{2}  } ,\lambda >=0
都是这么来的啦,万变不离其中。


讲一点自己机器学习过程的体验,大家都觉得机器学习入门难,绝大部分人反应知其然不知其所以然,这个原因很多时候在于中国教育工作者的教学、科研氛围,尤其是中文书籍出书者自己都不去搞懂原理,一个劲的为了利益而出书、翻译书,纯粹利益驱动。再加之机器学习起源于国外,很多经典的、有趣的历史没有被人翻译、或者归类整理,直接被舍弃掉了。个人感觉这是中国教育的缺失导致的。希望更多的人真的爱好计算机,爱好机器学习以及算法这些知识。喜欢就是喜欢。希望国内机器学习的爱好者慢慢的齐心合力去多多引荐这些高级计算机知识的基础。教育也不是由于利益而跟风,AI热出版社就翻译AI,机器学习热就翻译机器学习,知识层面不断架空,必然导致大家学习热情的不断衰减!愿共勉之






模式识别理论中,常提到的正则化到底是干什么的?渐渐地,听到的多了,看到的多了,再加上平时做东西都会或多或少的接触,有了一些新的理解。

1. 正则化的目的:防止过拟合!

2. 正则化的本质:约束(限制)要优化的参数。


关于第1点,过拟合指的是给定一堆数据,这堆数据带有噪声,利用模型去拟合这堆数据,可能会把噪声数据也给拟合了,这点很致命,一方面会造成模型比较复杂(想想看,本来一次函数能够拟合的数据,现在由于数据带有噪声,导致要用五次函数来拟合,多复杂!),另一方面,模型的泛化性能太差了(本来是一次函数生成的数据,结果由于噪声的干扰,得到的模型是五次的),遇到了新的数据让你测试,你所得到的过拟合的模型,正确率是很差的。


关于第2点,本来解空间是全部区域,但通过正则化添加了一些约束,使得解空间变小了,甚至在个别正则化方式下,解变得稀疏了。这一点不得不提到一个图,相信我们都经常看到这个图,但貌似还没有一个特别清晰的解释,这里我尝试解释一下,图如下:


这里的w1,w2都是模型的参数,要优化的目标参数,那个红色边框包含的区域,其实就是解空间,正如上面所说,这个时候,解空间“缩小了”,你只能在这个缩小了的空间中,寻找使得目标函数最小的w1,w2。左边图的解空间是圆的,是由于采用了L2范数正则化项的缘故,右边的是个四边形,是由于采用了L1范数作为正则化项的缘故,大家可以在纸上画画,L2构成的区域一定是个圆,L1构成的区域一定是个四边形。


再看看那蓝色的圆圈,再次提醒大家,这个坐标轴和特征(数据)没关系,它完全是参数的坐标系,每一个圆圈上,可以取无数个w1,w2,这些w1,w2有个共同的特点,用它们计算的目标函数值是相等的!那个蓝色的圆心,就是实际最优参数,但是由于我们对解空间做了限制,所以最优解只能在“缩小的”解空间中产生。


蓝色的圈圈一圈又一圈,代表着参数w1,w2在不停的变化,并且是在解空间中进行变化(这点注意,图上面没有画出来,估计画出来就不好看了),直到脱离了解空间,也就得到了图上面的那个w*,这便是目标函数的最优参数。


对比一下左右两幅图的w*,我们明显可以发现,右图的w*的w1分量是0,有没有感受到一丝丝凉意?稀疏解诞生了!是的,这就是我们想要的稀疏解,我们想要的简单模型。

还记得模式识别中的剃刀原理不?倾向于简单的模型来处理问题,避免采用复杂的。


这里必须要强调的是,这两幅图只是一个例子而已,没有说采用L1范数就一定能够得到稀疏解,完全有可能蓝色的圈圈和四边形(右图)的一边相交,得到的就不是稀疏解了,这要看蓝色圈圈的圆心在哪里。


此外,正则化其实和“带约束的目标函数”是等价的,二者可以互相转换。关于这一点,我试着给出公式进行解释:

针对上图(左图),可以建立数学模型如下:



通过熟悉的拉格朗日乘子法(注意这个方法的名字),可以变为如下形式:



看到没,这两个等价公式说明了,正则化的本质就是,给优化参数一定约束,所以,正则化与加限制约束,只是变换了一个样子而已。


此外,我们注意,正则化因子,也就是里面的那个lamda,如果它变大了,说明目标函数的作用变小了,正则化项的作用变大了,对参数的限制能力加强了,这会使得参数的变化不那么剧烈(仅对如上数学模型),直接的好处就是避免模型过拟合。反之,自己想想看吧。。。


个人感觉,“正则化”这几个字叫的实在是太抽象了,会吓唬到人,其实真没啥。如果改成“限制化”或者是“约束化”,岂不是更好?

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值