范数规则化之L0、L1、L2范数

https://blog.csdn.net/zouxy09/article/details/24971995
https://blog.csdn.net/zouxy09/article/details/24972869
监督机器学习问题无非就是“minimize your error while regularizing your parameters”,也就是,在规则化参数的同时最小化误差。最小化误差是为了让我们的模型拟合我们的训练数据,而规则化参数是防止我们的模型过分拟合我们的训练数据。
如果参数太多,会导致模型复杂度上升,容易过拟合,训练误差会很小但是测试误差很大。所以,我们需要保证模型“简单”的基础上最小化训练误差,这样得到的参数才具有好的泛化性能(也就是测试误差也小),而模型“简单”就是通过规则函数来实现的。
还有几种角度来看待规则化的。规则化符合奥卡姆剃刀(Occam’s razor)原理。基本思想:在所有可能选择的模型中,我们应该选择能够很好地解释已知数据并且十分简单的模型。从贝叶斯估计的角度来看,规则化项对应于模型的先验概率。民间还有个说法就是,规则化是结构风险最小化策略的实现,是在经验风险上加一个正则化项(regularizer)或惩罚项(penalty term)。

一、L0范数与L1范数
L0范数是指向量中非0的元素的个数。如果我们用L0范数来规则化一个参数矩阵W的话,就是希望W的大部分元素都是0。也就是,让参数矩阵W是稀疏的。
但是papers世界中,稀疏都通过L1范数来实现的。一是因为L0范数很难优化求解(NP难问题),二是L1范数是L0范数的最优凸近似,比L0范数要容易优化求解。
L1范数是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算子”(Lasso regularization)。
但是为什么要稀疏?让我们的参数稀疏有什么好处呢?
1)特征选择(Feature Selection):
稀疏规则化能实现特征的自动选择。一般来说,xi的大部分元素(也就是特征)都是和最终的输出yi没有关系或者不提供任何信息的,在最小化目标函数的时候考虑xi这些额外的特征,虽然可以获得更小的训练误差,但在预测新的样本时,这些没用的信息反而会被考虑,从而干扰了对正确yi的预测。稀疏规则化算子的引入就是为了完成特征自动选择,它会学习地去掉这些没有信息的特征,也就是把这些特征对应的权重置为0。
2)可解释性(Interpretability):
稀疏规则化可以使模型更容易解释。例如:患某种病的概率是y,然后我们收集到的数据x是1000维的,也就是我们需要寻找这100种因素到底是怎么影响患上这种病的概率的。通过学习,如果最后学习到的权重w只有很少的非零元素,例如只有5个非零的wi,那么我们就有理由相信,这些对应的特征在患病分析上面提供的信息是巨大的,决策性的。也就是说,患不患这种病只和这5个因素有关,那医生就好分析多了。但如果1000个wi都非0,医生面对这1000种因素,累觉不爱。

二、L2范数
L2范数: ||W||2,指向量各元素的平方和然后求平方根。在回归里面,有人把有它的回归叫“岭回归”(Ridge Regression),有人也叫它“权值衰减weight decay”。因为它可以改善机器学习里面一个非常重要的问题:过拟合。
我们让L2范数的规则项||W||2最小,可以有选择地让某些 w 变小,接近于0。越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象。通过L2范数,我们可以实现了对模型空间的限制,从而在一定程度上避免了过拟合。
在医生预测疾病的例子中,样本中的特征有很多,但大部分特征都是无关紧要的,只有一小部分关键的特征支撑起了整个预测模型。大部分的无关紧要的特征的w_i,它们的大小对整个模型的效果影响不大,于是在正则项的约束下它们都变小了,甚至趋近于0;而只有小部分的关键特征的w_i的微小变化会引起模型曲线在走势上的根本性变化,损失函数会急剧增大。如果正则项妄图约束这些关键的 w_i,使它们变小,那么由此造成的损失函数的扩大将远大于从正则项上获得的微小收益,所以这些关键的 w_i 可以几乎不受正则项的干涉。 但如果把正则项之前的系数 λ 调到非常大,那么它就会压迫那些关键的 w_i,最终造成的结果是,模型确实变简单了,但也严重偏离了预期方向,没什么用了。相反,如果把 λ 调得非常小,那么正则项对每个 w_i 都惹不起,即使是那些无关紧要的 w_i 它也无力约束,最终就会导致模型过拟合(试想 λ 等于0的情况)。
因此,损失函数与正则项就像是博弈的双方,它们之间的力量对比通过参数 λ 进行调和。只有把 λ 调合适了,才能得到既不过拟合,又相对简单的好模型。从这种意义上来说,L2正则项与L1正则项类似,也有“特征选择”的效果。
每个 w_i 都影响着曲线的形态,但是有主次之分。那些低阶的、关键的 w_i 控制着曲线的整体走势;而那些高阶的、次要的 w_i 则是在曲线整体走势的基础上稍微扭曲曲线的形态;当然,还会有更高阶的 w_i,它们负责在大的扭曲之上制造更小的扭曲,以此类推。这样看来L2正则项的作用就很明显了,要改变预测曲线的整体走势肯定会造成损失函数的不满,但是把曲线的形态熨平似乎并没有什么不妥。
L2范数的好处是什么呢?
1)可以防止过拟合,提升模型的泛化能力
2)从优化或者数值计算的角度来说,L2范数有助于处理condition number 不好的情况下矩阵求逆很困难的问题。
这里先来聊聊优化问题。优化有两大难题,
一是:局部最小值。我们要找的是全局最小值,如果局部最小值太多,那我们的优化算法就很容易陷入局部最小而不能自拔。
二是:ill-condition病态问题
对于AX=b,如果我们稍微改变下b,得到的x和没改变前的差别很大;或者稍微改变下系数矩阵A,可以看到结果的变化也很大。换句话来说,这个系统的解对系数矩阵A或者b太敏感了。又因为一般我们的系数矩阵A和b是从实验数据里面估计得到的,所以它是存在误差的,如果系统对这个误差太敏感了,以至于我们的解的误差更大,那这个解就太不靠谱了。所以这个方程组系统就是ill-conditioned病态的,不正常的,不稳定的,有问题的。反之,就叫well-condition的系统。
所以如果一个系统是ill-conditioned病态的,我们就会对它的结果产生怀疑。那到底要相信它多少呢?我们得找个标准来衡量,因为有些系统的病没那么重,它的结果还是可以相信的,不能一刀切吧。上面的condition number就是拿来衡量ill-condition系统的可信度的。
condition number衡量的是输入发生微小变化的时候,输出会发生多大的变化。也就是系统对微小变化的敏感度。condition number值小的就是well-conditioned的,大的就是ill-conditioned的。
总结成一句话:L2范数不但可以防止过拟合,还可以让我们的优化求解变得稳定和快速。
L1和L2的差别:
1)下降速度:L1就是按绝对值函数的“坡”下降的,而L2是按二次函数的“坡”下降。所以实际上在0附近,L1的下降速度比L2的下降速度要快。所以会非常快得降到0。L1在江湖上人称Lasso,L2人称Ridge。
2)模型空间的限制:
一句话总结就是:L1会趋向于产生少量的特征,而其他的特征都是0,而L2有选择地让某些 w 变小,防止过拟合。Lasso在特征选择时候非常有用,而Ridge就只是一种规则化而已。

三、核范数
核范数||W||是指矩阵奇异值的和,英文称呼叫Nuclear Norm。是用来约束Low-Rank(低秩)的。矩阵的秩可以度量相关性,而矩阵的相关性实际上有带有了矩阵的结构信息。如果矩阵之间各行的相关性很强,那么就表示这个矩阵实际可以投影到更低维的线性子空间,也就是用几个向量就可以完全表达了,它就是低秩的。因为rank(w)是非凸的,在优化问题里面很难求解,那么就需要寻找它的凸近似来近似它了。rank(w)的凸近似就是核范数||W||。
低秩的应用:
推荐系统中矩阵填充、鲁棒PCA、背景建模、变换不变低秩纹理

四、规则化参数的选择
目标函数:在这里插入图片描述
里面除了loss函数和规则项两块外,还有一个参数λ ,也叫hyper-parameters(超参)。它主要是平衡loss和规则项这两项的,λ越大,就表示规则项要比模型训练误差更重要,也就是相比于要模型拟合我们的数据,我们更希望我们的模型能满足我们约束的Ω(w)的特性。那我们真正需要什么呢?我们希望我们的模型既可以拟合我们的数据,又具有我们约束它的特性。所以,就要训练模型调整参数λ。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值