机器学习——Regularization
上篇博客说了overfitting的情况,有一些比较高级的处理overfitting的办法,其中有一个就是regularization,中文中叫做正则化。
从前面的nonlinear transform中也说明了,复杂的假说一般会包括了简单的假说。例如一个2次的假说,与10次的假说,他们的区别,就是10次的比二次的多了更多三次及以上的特征。也就是二次假说实际上是十次假说加上了一个限制:三次及以上的特征前面的权重(w)为0.这样就使得假说变得简单了不少.
如果放宽这个限制,假如较为简单的模型特征量有r个,在复杂模型中,最多有r个特征的权重不为0,在一定程度上,也可以很好的减少这个复杂度。只不过让人遗憾的是,在这样的假说中选出最佳的(权重向量)被证明了是一个NP-hard问题,没有一个很好的解决办法.
如果个数是整数,要挑出最好的,很容易有NP-hard问题,但是将这个拓宽到实数领域,我们往往可以通过数学工具得到最佳解。例如在这里,我们继续拓宽这个限制:让这些和小于一个常数,似乎也可以起到类似的效果。
为了简化问题,举个很简单的例子如:对于只有一个特征量的样本集,,而.
对于来说,中限制为.
对于上面说的第二种假设,限制为:.
对于第三种假设,限制为: 即.
那么,我们已经知道了最后一个才有可能求得最佳解。如何去做?
高维度的figure我们无法想象,我也不知道怎么去称呼,但是如果是二维,这个限制是一个圆,如果是三维,这个限制是一个球。假设我们依然称这个限制为一个球,而没有限制的最低点不在这个球内。因此梯度下降的结果就是达到了球的边缘,但是依然想要走下坡路。无路可走的情况,是梯度与该法向量的方向平行了,而只要梯度与该法向量的方向不不平行,我们总是可以朝着某个方向走使得继续减少。因此这个过程终止的时候,就是该点的法向量与的梯度平行了,而值得注意的是边缘某点的法向量实际上就是.如果我们称做这个结果为,那么有个结果:.
其中这个是一个常熟.我们知道,线性回归中梯度为,为了简化,我们将写为$ N$,最后得到: 如果提前知道,那么我们就可以求得的值.
如果对上式左边求积分可以得到:
所以可以很神奇地发现,对于原来的问题的求解可以很有效地转变成了求的最小值,它就是正则化后的,因此新的变成了下面的样子:
tips:对于多项式正则化,因为一般来说我们会将特征值的范围限定到(原因以后再探讨),这导致高次项的影响可能变得非常小,为了处理这种情况需要用到一个正交化处理,关键词“Legendre polynomial”。效果更好。需要了解更多的话可以去搜索.
由确定(这是不严谨的说话。但是实际中给定限定到一个范围,因此给出C的人也更容易给出一个),实际应用时,给一个很小的值就可与很好地处理过拟合的情形,如果过大,可能会出现欠拟合的情况.
接下来需要继续说明的是regularization,与vc理论之间的关系。实际上,即使加上了regularization,对于一个假说来说,在数学计算上它的vc dimention依然很大,依然会付出很大的代价。但是regularization的作用是什么?它将我们需要寻找的范围局限在了一定范围内,在这个范围内,可能都是比较好的,因此有效的vc dimension减少了,也就更有可能得到比较好的。
如何选择regularizer?
1.首先,如果我们知道目标函数的一些特点,就可以指引我们选择一些好的regularizer,比如:如果知道目标函数是偶函数,可以只对奇次项的特征进行正则化。
2.选择平滑的,如.这个也叫L1 regularizer(L1正则化).相对于L2来说它效果往往更好一点,因为更加平滑,但是不好解。
3.选择好优化的,如L2,也就是上文提到的。
除此之外,还有的选择。如图,不同的noise级别需要的也不同:

如何选择一个合适的也非常重要,这就需要用到下一节所讲的Validation。