目录
对于线性回归问题,我们通常采用均方差损失函数:
L2 正则化是指,对损失函数加上一个惩罚项来防止过拟合:
接下来我们从四个不同的角度来感性的说明为什么L2正则化可以防止过拟合。
从直观角度来考虑
过拟合可以理解为模型的复杂度过高。对于线性回归问题,也就是w参数较大。对于一个线性模型:
。如果w = 0,则y恒等于b,此时模型几乎没有拟合能力(欠拟合)。通过增加一个关于w的惩罚项,将学习机向 w = 0 的方向进行引导(因为单纯从 这一项看,它越小,L才能越小),以此来克服过拟合。
从病态矩阵角度来考虑
对于原始损失函数,其解析解为:
。事实上这里存在两个问题,一个是 可能不可逆,此时说明 中有特征值为0,发生场景为X的维度比样本数还大。另一个问题是即使 可逆,但是这个矩阵是病态的,也就是说如果y存在很小的波动, 被 乘了以后,结果w都会发生很大的变化。那么我们计算的这个w就非常的不稳定,并不是一个好的模型,发生场景为X的维度比样本数差不多大小。
判断一个矩阵是不是病态矩阵,可以通过计算矩阵的条件数。条件数等于矩阵的最大奇异值和最小奇异值之比。如果矩阵 存在很小的奇异值,那么它的逆就存在很大的奇异值,这样对y中的微小变化会放大很多。所以我们的目标就是干掉 中极小的奇异值。
关于条件数,可以参考我的这个回答:
如何通俗的解释矩阵的条件数?
加了L2正则项之后,我们的解析解变为: 。也就是给 中的所有奇异值加上一个 ,可以确保奇异值不会太小,而导致再求逆后,奇异值变的极大。这样有效的解决了病态矩阵的问题。过拟合的实质可以看作由于病态矩阵的存在,如果y有一点波动,整个模型需要大幅度调整。解决了病态矩阵问题,就解决了过拟合。
从凸优化的角度来考虑
求L对w的二阶偏导: 。根据凸函数的性质,如果 ,即H是正定矩阵,它是一个严格凸函数,有唯一最小值。如果 ,即H是半正定矩阵,其中部分特征值为0,则就有多个局部最小值。对于多个局部最小值我们取一个,往往并不是真正的最小值,形成了过拟合的现象。如果加了L2正则化项,则L对w二阶偏导,这样加了L2正则化项的L是一个严格凸函数,有唯一最小值解,可以直接使用解析式法进行求解。
从贝叶斯角度来考虑
均方差损失函数实际上是从最大似然估计法中诱导得出的:
用不确定性的观点看目标变量。对于任意一点x,都将其目标变量t看作是以 为均值的,为方差的高斯分布。即:
那么对于整个训练集 ,通过最大似然估计来确定w的值。似然函数为:
要求使上述函数取到最大值的w,往往我们求使最小对数似然函数的w值(因为似然函数存在连乘符号,不好处理,取对数可以将连乘转化为连加)。对数似然函数为:
观察式子等号右边,只有第一项含有参数w,要求使上式取到最小值的w,就是求使上式第一项取到最小值的w,也就是使 取到最大值的w。这与我们在文章开始给出的均方差损失函数形式一样。
现在我们从最大似然估计转换为最大后验估计来考虑这个问题,由贝叶斯定理:, 分母可以看作归一化参数,则:正比于 。使用上面求的: ,对于 我们给予一个先验假设 ,即w满足均值为0的一个高斯分布。这样可以求得: 正比于 ,问题转为求使这个式子最大化的w,该形式与添加了L2正则化项的损失函数形式一样,也就是说L2正则化损失函数相当于给原损失函数引入了一个关于w的高斯先验。
这部分写的比较简单,具体可以参考PRML第1.2.5节。