在前作里,我们讨论了机器学习里的偏差-方差权衡。机器学习里的损失函数(代价函数)可以用来描述模型与上帝真相(ground truth)之间的差距,因此可以解决「偏差」的问题。但是仅有损失函数时,我们无法解决方差的问题,因而会有过拟合风险。
今次我们讨论损失函数的反面——正则项,看看
损失函数与目标函数
机器学习的目标,实际上就是找到一个足够好的函数
对于样本
一般来说,损失函数
因此,在整个训练集上,我们可以把机器学习任务转化为一个最优化问题。我们的目标是在泛函空间内,找到能使得全局损失
这样的最优化问题解决了机器学习的大半任务,但是它只考虑了对数据的拟合,而忽视了模型本身的复杂度。因此,它留下了一个显而易见的问题:如何防止模型本身的复杂度过高,导致过拟合?为此,我们需要引入正则项(regularizer)
其中,
范数与正则项
所谓范数,就是某种抽象的长度。范数满足通常意义上长度的三个基本性质:
- 非负性:
; - 齐次性:
; - 三角不等式:
。
在这里,我们需要关注的最主要是范数的「非负性」。我们刚才讲,损失函数通常是一个有下确界的函数。而这个性质保证了我们可以对损失函数做最优化求解。如果我们要保证目标函数依然可以做最优化求解,那么我们就必须让正则项也有一个下界。非负性无疑提供了这样的下界,而且它是一个下确界——由齐次性保证(当
因此,我们说,范数的性质使得它天然地适合作为机器学习的正则项。而范数需要的向量,则是机器学习的学习目标——参数向量。
机器学习中有几个常用的范数,分别是
-范数: ; -范数: ; -范数: ; -范数: ; -范数: 。
在机器学习中,如果使用了
与 -正则项(LASSO regularizer)
在机器学习里,最简单的学习算法可能是所谓的线性回归模型
我们考虑这样一种普遍的情况,即:预测目标背后的真是规律,可能只和某几个维度的特征有关;而其它维度的特征,要不然作用非常小,要不然纯粹是噪声。在这种情况下,除了这几个维度的特征对应的参数之外,其它维度的参数应该为零。若不然,则当其它维度的特征存在噪音时,模型的行为会发生预期之外的变化,导致过拟合。
于是,我们得到了避免过拟合的第一个思路:使尽可能多的参数为零。为此,最直观地我们可以引入
这意味着,我们希望绝大多数
通过引入
通过引入
- 非连续;
- 非凸;
- 不可求导。
因此,
我们来看一下参数更新的过程,有哪些变化。考虑目标函数
有对参数
因此有参数更新过程
因为
-正则项(Ridge Regularizer)
让我们回过头,考虑前作中出现过的多项式模型的例子。它的一般形式是
我们注意到,当多项式模型过拟合时,函数曲线倾向于「靠近」噪声点。这意味着,函数曲线会在噪声点之间来回扭曲跳跃。这也就是说,在某些局部,函数曲线的切线斜率非常高——函数导数的绝对值非常大。对于多项式模型来说,函数导数的绝对值,实际上就是多项式系数的一个线性加和。这也就是说,过拟合的多项式模型,它的参数的绝对值会非常大(至少某几个参数分量的绝对值非常大)。因此,如果我们有办法使得这些参数的值,比较稠密均匀地集中在零附近,就能有效地避免过拟合。
于是我们引入
因此有目标函数
对参数
再有参数更新
考虑到
-正则项与 -正则项的区别
现在,我们考虑这样一个问题:为什么使用
这里引用一张来自周志华老师的著作,《机器学习》(西瓜书)里的插图,尝试解释这个问题。
为了简便起见,我们只考虑模型有两个参数
在图中,我们有三组「等值线」。位于同一条等值线上的
因此,对于目标函数
对于
对于
幻灯片
两篇文章对应的幻灯片可在这里下载。
Gitalk 加载中 ...