机器学习中常常提到的正则化到底是什么意思?

举个例子 这是个基于多核的支持向量机的目标函数 d是多核函数的参数 它说r(d)是正则项。为什么要令r(d)为正则项,有什么目的?
关注者
1818
被浏览
126239

28 个回答

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

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,机器学习热就翻译机器学习,知识层面不断架空,必然导致大家学习热情的不断衰减!愿共勉之。
一年后的更新。这个问题下很多答主从机器学习角度对正则化进行了非常棒的说明,我依然尝试从数理角度对这个问题进行讨论。

其他答主的 回答(包括我的原始回答)本质上是在说明一件事情,即加入正则项是为了避免过拟合。但是我们都没有提到,为什么加入了正则项就能够避免过拟合?这种处理手段到底是经验上的(比如说,我用这种方法处理了具体数据后,得到的结果确实避免了过拟合,但逻辑上我不能确定对下一个模型下一个数据集是否依然适用,以及不确定为什么会产生这样的结果)还是理论上的(比如说,不用跑具体数据,直接就能证明这种方法可以避免过拟合)。换句话说,我们还是回到了对正则项本质的讨论。

假设我们考虑一个最简单的线性模型\bf{y} = \bf{X} \bf{\beta} + \bf{\epsilon},我们比较两个估计结果:
(1) 最小二乘估计\hat{\bf{\beta}} = \arg\min_{\beta} \Vert \bf{y} - \bf{X}\bf{\beta} \Vert^2
(2) 岭估计\widetilde{\bf{\beta}} = \arg\min_{\beta} \Vert \bf{y} - \bf{X} \bf{\beta}\Vert ^2 + \lambda \Vert \bf{\beta} \Vert^2
其中(2)中的第二项即可看成一个正则项。

那么我们如何说明加入了这个正则项后,相较于\hat{\bf{\beta}}来说,\widetilde{\bf{\beta}}确实避免了过拟合呢?

因为从数学上可以证明,\Vert \widetilde{\bf{\beta}} \Vert < \Vert \hat{\bf{\beta}} \Vert ,注意这里的小于是严格的小于。这里的证明是要用到矩阵范数和向量范数的相容性。这个性质本身告诉了我们这样一个及其重要的本质:

加入正则项后,估计出的(向量)参数的长度变短了(数学上称为shrinkage)。

换句话说,长度变短了就意味着,向量\widetilde{\bf{\beta}}中的某些分量在总体程度上比\hat{\bf{\beta}}的分量变小了。极端来说,向量\widetilde{\bf{\beta}}中的某些分量可能(因为也可能是因为每个分量都变小一点点最后造成整体长度变小)被压缩到了0。

虽然这里其实还没有完整说明我们实现了避免过拟合,但至少从某种程度上说,加入正则项和的参数估计是符合我们之前的预定目标的,即用尽量少的变量去拟合数据。

================================================================

正则化以及类似处理方法的本质(个人认为)是:这是一种对对象进行限制以满足某一特定目的的处理方法。

正则化等处理在数学上是有渊源的:

Ex1. 线性代数中的首一多项式(monic polynomial)。容易理解,若多项式f(x)满足某一性质时,它的任意数量倍数k*f(x),k\in R多项式也可能将满足这个性质。因此,为了使求得的多项式唯一,人为对得到的解加上约束“首系数为1”,这样就保证了所求得的多项式不仅满足条件,而且唯一。

Ex2. 线性代数中的Gram-Schmidt正交化。对线性空间而言,任意一组个数等于空间维数且线性无关的向量可以构成这个线性空间的一组基。因此如果我们已经找到了这样的一组向量,实际上是找到了无数组这样的向量。所以为了使得所求得的这组基向量更“规范”,通过Gram-Schmidt正交化的方法将其化为彼此正交且单位化的标准正交基。

Ex3. Lasso方法得到稀疏解。在标准线性回归估计的基础上,对其估计值加上L_{1} 范数惩罚,迫使某些系数的估计被压缩为0。

Ex4. 统计中常用的模型判定准则AIC(Akaike information criterion)和BIC(Bayesian information criterion)。对模型中参数个数进行判定,在估计表现和参数个数中到达平衡。

类似的例子还有很多,它们都能视为某种“正则化”的方法。Ex1需要满足的特定目的是要让解唯一,Ex2需要满足的特定目的是要让解单位化且正交,Ex3需要满足的特定目的是要让估计稀疏,Ex4需要满足的特定目的是要选出拥有最合适参数个数的模型。所以题目中提到的r(d)有什么作用,泛泛而言它的作用是对所求到的d进行约束从而使其满足特定目的r(.),也就是上面其他小伙伴提到的避免过拟合。但是在机器学习中,正则化的使用在逻辑上是否是“很自然地”,请参考Linear least squares, Lasso,ridge regression有何本质区别? - Yeung Evan 的回答