机器学习中的范数规则化之(一)L0、L1与L2范数

机器学习中的范数规则化之(⼀)L0、L1与L2范数
机器学习中的范数规则化之(⼀)L0、L1与L2范数
今天我们聊聊机器学习中出现的⾮常频繁的问题:过拟合与规则化。我们先简单的来理解下常⽤的L0、L1、L2和核范数规则化。最后聊下规则化项参数的选择问题。这⾥因为篇幅⽐较庞⼤,为了不吓到⼤家,我将这个五个部分分成两篇博⽂。知识有限,以下都是我⼀些浅显的看法,如果理解存在错误,希望⼤家不吝指正。谢谢。
侯永庭 上海监督机器学习问题⽆⾮就是“minimizeyour error while regularizing your parameters”,也就是在规则化参数的同时最⼩化误差。最⼩化误差是为了让我们的模型拟合我们的训练数据,⽽规则化参数是防⽌我们的模型过分拟合我们的训练数据。多么简约的哲学啊!因为参数太多,会导致我们的模型复杂度上升,容易过拟合,也就是我们的训练误差会很⼩。但训练误差⼩并不是我们的最终⽬标,我们的⽬标是希望模型的测试误差⼩,也就是能准确的预测新的样本。所以,我们需要保证模
型“简单”的基础上最⼩化训练误差,这样得到的参数才具有好的泛化性能(也就是测试误差也⼩),⽽模型“简单”就是通过规则函数来实现的。另外,规则项的使⽤还可以约束我们的模型的特性。这样就可以将⼈对这个模型的先验知识融⼊到模型的学习当中,强⾏地让学习到的模型具有⼈想要的特性,例如稀疏、低秩、平滑等等。要知道,有时候⼈的先验是⾮常重要的。前⼈的经验会让你少⾛很多弯路,这
就是为什么我们平时学习最好个⼤⽜带带的原因。⼀句点拨可以为我们拨开眼前乌云,还我们⼀⽚晴空万⾥,醍醐灌顶。对机器学习也是⼀样,如果被我们⼈稍微点拨⼀下,它肯定能更快的学习相应的任务。只是由于⼈和机器的交流⽬前还没有那么直接的⽅法,⽬前这个媒介只能由规则项来担当了。
还有⼏种⾓度来看待规则化的。规则化符合奥卡姆剃⼑(Occam's razor)原理。这名字好霸⽓,razor!不过它的思想很平易近⼈:在所有可能选择的模型中,我们应该选择能够很好地解释已知数据并且⼗分简单的模型。从贝叶斯估计的⾓度来看,规则化项对应于模型的先验概率。民间还有个说法就是,规则化是结构风险最⼩化策略的实现,是在经验风险上加⼀个正则化项(regularizer)或惩罚项(penalty term)。
⼀般来说,监督学习可以看做最⼩化下⾯的⽬标函数:
其中,第⼀项L(y i,f(x i;w)) 衡量我们的模型(分类或者回归)对第i个样本的预测值f(x i;w)和真实的标签y i之前的误差。因为我们的模型是要拟合我们的训练样本的嘛,所以我们要求这⼀项最⼩,也就是要求我们的模型尽量的拟合我们的训练数据。但正如上⾯说⾔,我们不仅要保证训练误差最⼩,我们更希望我们的模型测试误差⼩,所以我们需要加上第⼆项,也就是对参数w的规则化函数Ω(w)去约束
我们的模型尽量的简单。
OK,到这⾥,如果你在机器学习浴⾎奋战多年,你会发现,哎哟哟,机器学习的⼤部分带参模型都和这个不但形似,⽽且神似。是的,其实⼤部分⽆⾮就是变换这两项⽽已。对于第⼀项Loss函数,如果是Square loss,那就是最⼩⼆乘了;如果是Hinge Loss,那就是著名的SVM了;如果是exp-Loss,那就是⽜逼的Boosting了;如果是log-Loss,那就是Logistic Regression了;还有等等。不同的loss函数,具有不同的拟合特性,这个也得就具体问题具体分析的。但这⾥,我们先不究loss函数的问题,我们把⽬光转向“规则项Ω(w)”。
蚂蚁的启示规则化函数Ω(w)也有很多种选择,⼀般是模型复杂度的单调递增函数,模型越复杂,规则化值就越⼤。⽐如,规则化项可以是模型参数向量的范数。然⽽,不同的选择对参数w的约束不同,取得的效果也不同,但我们在论⽂中常见的都聚集在:零范数、⼀范数、⼆范数、迹范数、Frobenius范数和核范数等等。这么多范数,到底它们表达啥意思?具有啥能⼒?什么时候才能⽤?什么时候需要⽤呢?不急不急,下⾯我们挑⼏个常见的娓娓道来。
⼀、L0范数与L1范数
L0范数是指向量中⾮0的元素的个数。如果我们⽤L0范数来规则化⼀个参数矩阵W的话,就是希望W的⼤部分元素都是0。这太直观了,太露⾻了吧,换句话说,让参数W是稀疏的。OK,看到了“稀疏”
⼆字,⼤家都应该从当下风风⽕⽕的“压缩感知”和“稀疏编码”中醒悟过来,原来⽤的漫⼭遍野的“稀疏”就是通过这玩意来实现的。但你⼜开始怀疑了,是这样吗?看到的papers世界中,稀疏不是都通过L1范数来实现吗?脑海⾥是不是到处都是||W||1影⼦呀!⼏乎是抬头不见低头见。没错,
这就是这节的题⽬把L0和L1放在⼀起的原因,因为他们有着某种不寻常的关系。那我们再来看看L1范数是什么?它为什么可以实现稀疏?为什么⼤家都⽤L1范数去实现稀疏,⽽不是L0范数呢?
L1范数是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算⼦”(Lasso regularization)。现在我们来分析下这个价值⼀个亿的问题:为什么L1范数会使权值稀疏?有⼈可能会这样给你回答“它是L0范数的最优凸近似”。实际上,还存在⼀个更美的回答:任何的规则化算⼦,如果他在W i=0的地⽅不可微,并且可以分解为⼀个“求和”的形式,那么这个规则化算⼦就可以实现稀疏。这说是这么说,W的L1范数是绝对值,|w|在w=0处是不可微,但这还是不够直观。这⾥因为我们需要和L2范数进⾏对⽐分析。所以关于L1范数的直观理解,请待会看看第⼆节。
对了,上⾯还有⼀个问题:既然L0可以实现稀疏,为什么不⽤L0,⽽要⽤L1呢?个⼈理解⼀是因为L0范数很难优化求解(NP难问题),⼆是L1范数是L0范数的最优凸近似,⽽且它⽐L0范数要容易优化求解。所以⼤家才把⽬光和万千宠爱转于L1范数。
OK,来个⼀句话总结:L1范数和L0范数可以实现稀疏,L1因具有⽐L0更好的优化求解特性⽽被⼴泛应⽤。
好,到这⾥,我们⼤概知道了L1可以实现稀疏,但我们会想呀,为什么要稀疏?让我们的参数稀疏有什么好处呢?这⾥扯两点:
1)特征选择(Feature Selection):
⼤家对稀疏规则化趋之若鹜的⼀个关键原因在于它能实现特征的⾃动选择。⼀般来说,x i的⼤部分元素(也就是特征)都是和最终的输出y i没有关系或者不提供任何信息的,在最⼩化⽬标函数的时候考虑x i这些额外的特征,虽然可以获得更⼩的训练误差,但在预测新的样本时,这些没⽤的信息反⽽会被考虑,从⽽⼲扰了对正确y i的预测。稀疏规则化算⼦的引⼊就是为了完成特征⾃动选择的光荣使命,它会学习地去掉这些没有信息的特征,也就是把这些特征对应的权重置为0。
2)可解释性(Interpretability):
另⼀个青睐于稀疏的理由是,模型更容易解释。例如患某种病的概率是y,然后我们收集到的数据x是1000维的,也就是我们需要寻这1000种因素到底是怎么影响患上这种病的概率的。假设我们这个是个回归模型:y=w1*x1+w2*x2+…
+w1000*x1000+b(当然了,为了让y限定在[0,1]的范围,⼀般还得加个Logistic函数)。通过学习,如果最后学习到的w*就只有很少的⾮零元素,例如只有5个⾮零的w i,那么我们就有理由相信,这些对应的特征在患病分析上⾯提供的信息是巨⼤的,决策性的。也就是说,患不患这种病只和这5个因素有关,那医⽣就好分析多了。但如果1000个w i都⾮0,医⽣⾯对这1000种因素,累觉不爱。
⼆、L2范数
除了L1范数,还有⼀种更受宠幸的规则化范数是L2范数: ||W||2。它也不逊于L1范数,它有两个美称,在回归⾥⾯,有⼈把有它的回归叫“岭回归”(Ridge Regression),有⼈也叫它“权值衰减weight decay”。这⽤的很多吧,因为它的强⼤功效是改善机器学习⾥⾯⼀个⾮常重要的问题:过拟合。⾄于过拟合是什么,上⾯也解释了,就是模型训练时候的误差很⼩,但在测试的时候误差很⼤,也就是我们的模型复杂到可以拟合到我们的所有训练样本了,但在实际预测新的样本的时候,糟糕的⼀塌糊涂。通俗的讲就是应试能⼒很强,实际应⽤能⼒很差。擅长背诵知识,却不懂得灵活利⽤知识。例如下图所⽰(来⾃Ng的course):
上⾯的图是线性回归,下⾯的图是Logistic回归,也可以说是分类的情况。从左到右分别是⽋拟合(underfitting,也称High-bias)、合适的拟合和过拟合(overfitting,也称High variance)三种情况。可以看到,如果模型复杂(可以拟合任意
的复杂函数),它可以让我们的模型拟合所有的数据点,也就是基本上没有误差。对于回归来说,就是我们的函数曲线通过了所有的数据点,如上图右。对分类来说,就是我们的函数曲线要把所有的数据点都分类正确,如下图右。这两种情况很明显过拟合了。
OK,那现在到我们⾮常关键的问题了,为什么L2范数可以防⽌过拟合?回答这个问题之前,我们得先看看L2范数是个什么东西。
L2范数是指向量各元素的平⽅和然后求平⽅根。我们让L2范数的规则项||W||2最⼩,可以使得W的每个元素都很⼩,都接近于0,但与L1范数不同,它不会让它等于0,⽽是接近于0,这⾥是有很⼤的区别的哦。⽽越⼩的参数说明模型越简单,越简单的模型则越不容易产⽣过拟合现象。为什么越⼩的参数说明模型越简单?我也不懂,我的理解是:限制了参数很⼩,实际上就限制了多项式某些分量的影响很⼩(看上⾯线性回归的模型的那个拟合的图),这样就相当于减少参数个数。其实我也不太懂,
希望⼤家可以指点下。
这⾥也⼀句话总结下:通过L2范数,我们可以实现了对模型空间的限制,从⽽在⼀定程度上避免了过拟合。
数字造价管理
L2范数的好处是什么呢?这⾥也扯上两点:
1)学习理论的⾓度:
w980i
内功经从学习理论的⾓度来说,L2范数可以防⽌过拟合,提升模型的泛化能⼒。苏州通安事件
2)优化计算的⾓度:
从优化或者数值计算的⾓度来说,L2范数有助于处理condition number不好的情况下矩阵求逆很困难的问题。哎,等等,这condition number是啥?我先google⼀下哈。
这⾥我们也故作⾼雅的来聊聊优化问题。优化有两⼤难题,⼀是:局部最⼩值,⼆是:ill-condition病态问题。前者俺就不说了,⼤家都懂吧,我们要的是全局最⼩值,如果局部最⼩值太多,那我们的优化算法就很容易陷⼊局部最⼩⽽不能⾃拔,这很明显不是观众愿意看到的剧情。那下⾯我们来聊聊ill-condition。ill-condition对应的是well-condition。那他们分别代表什么?假设我们有个⽅程组AX=b,
我们需要求解X。如果A或者b稍微的改变,会使得X的解发⽣很⼤的改变,那么这个⽅程组系统就是ill-condition的,反之就是well-condition的。我们具体举个例⼦吧:
咱们先看左边的那个。第⼀⾏假设是我们的AX=b,第⼆⾏我们稍微改变下b,得到的x和没改变前的差别很⼤,看到吧。第三⾏我们稍微改变下系数矩阵A,可以看到结果的变化也很⼤。换句话来说,这个系统的解对系数矩阵A或者b太敏感了。⼜因为⼀般我们的系数矩阵A和b是从实验数据⾥⾯估计得到的,所以它是存在误差的,如果我们的系统对这个误差是可以容忍的就还好,但系统对这个误差太敏感了,以⾄于我们的解的误差更⼤,那这个解就太不靠谱了。所以这个⽅程组系统就是ill-conditioned病态的,不正常的,不稳定的,有问题的,哈哈。这清楚了吧。右边那个就叫well-condition的系统了。
还是再啰嗦⼀下吧,对于⼀个ill-condition的系统,我的输⼊稍微改变下,输出就发⽣很⼤的改变,这
不好啊,这表明我们的系统不能实⽤啊。你想想看,例如对于⼀个回归问题y=f(x),我们是⽤训练样本x去训练模型f,使得y尽量输出我们期待

本文发布于:2024-09-21 22:21:42,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/354407.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模型   范数   规则化   学习   拟合
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议