tikhonovl1 l2正则化化是l2范数吗

&&国之画&&&& &&
版权所有 京ICP备号-2
迷上了代码!本文是&中第三章的一部分,讲机器学习/深度学习算法中常用的正则化方法。(本文会不断补充)
正则化方法:防止过拟合,提高泛化能力
在训练数据不够多时,或者overtraining时,常常会导致overfitting(过拟合)。其直观的表现如下图所示,随着训练过程的进行,模型复杂度增加,在training data上的error渐渐减小,但是在验证集上的error却反而渐渐增大&&因为训练出来的网络过拟合了训练集,对训练集外的数据却不work。
为了防止overfitting,可以用的方法有很多,下文就将以此展开。有一个概念需要先说明,在机器学习算法中,我们常常将原始数据集分为三部分:training data、validation data,testing data。这个validation data是什么?它其实就是用来避免过拟合的,在训练过程中,我们通常用它来确定一些超参数(比如根据validation data上的accuracy来确定early stopping的epoch大小、根据validation data确定learning rate等等)。那为啥不直接在testing data上做这些呢?因为如果在testing data做这些,那么随着训练的进行,我们的网络实际上就是在一点一点地overfitting我们的testing data,导致最后得到的testing accuracy没有任何参考意义。因此,training data的作用是计算梯度更新权重,validation data如上所述,testing data则给出一个accuracy以判断网络的好坏。
避免过拟合的方法有很多:early stopping、数据集扩增(Data augmentation)、正则化(Regularization)包括L1、L2(L2 regularization也叫weight decay),dropout。
L2 regularization(权重衰减)
L2正则化就是在代价函数后面再加上一个正则化项:
C0代表原始的代价函数,后面那一项就是L2正则化项,它是这样来的:所有参数w的平方的和,除以训练集的样本大小n。&就是正则项系数,权衡正则项与C0项的比重。另外还有一个系数1/2,1/2经常会看到,主要是为了后面求导的结果方便,后面那一项求导会产生一个2,与1/2相乘刚好凑整。
L2正则化项是怎么避免overfitting的呢?我们推导一下看看,先求导:
可以发现L2正则化项对b的更新没有影响,但是对于w的更新有影响:
在不使用L2正则化时,求导结果中w前系数为1,现在w前面系数为 1&&&/n ,因为&、&、n都是正的,所以 1&&&/n小于1,它的效果是减小w,这也就是权重衰减(weight decay)的由来。当然考虑到后面的导数项,w最终的值可能增大也可能减小。
另外,需要提一下,对于基于mini-batch的随机梯度下降,w和b更新的公式跟上面给出的有点不同:
对比上面w的更新公式,可以发现后面那一项变了,变成所有导数加和,乘以&再除以m,m是一个mini-batch中样本的个数。
到目前为止,我们只是解释了L2正则化项有让w&变小&的效果,但是还没解释为什么w&变小&可以防止overfitting?一个所谓&显而易见&的解释就是:更小的权值w,从某种意义上说,表示网络的复杂度更低,对数据的拟合刚刚好(这个法则也叫做奥卡姆剃刀),而在实际应用中,也验证了这一点,L2正则化的效果往往好于未经正则化的效果。当然,对于很多人(包括我)来说,这个解释似乎不那么显而易见,所以这里添加一个稍微数学一点的解释(引自知乎):
过拟合的时候,拟合函数的系数往往非常大,为什么?如下图所示,过拟合,就是拟合函数需要顾忌每一个点,最终形成的拟合函数波动很大。在某些很小的区间里,函数值的变化很剧烈。这就意味着函数在某些小区间里的导数值(绝对值)非常大,由于自变量值可大可小,所以只有系数足够大,才能保证导数值很大。
而正则化是通过约束参数的范数使其不要太大,所以可以在一定程度上减少过拟合情况。
L1 regularization
在原始的代价函数后面加上一个L1正则化项,即所有权重w的绝对值的和,乘以&/n(这里不像L2正则化项那样,需要再乘以1/2,具体原因上面已经说过。)
同样先计算导数:
上式中sgn(w)表示w的符号。那么权重w的更新规则为:
比原始的更新规则多出了& * & * sgn(w)/n这一项。当w为正时,更新后的w变小。当w为负时,更新后的w变大&&因此它的效果就是让w往0靠,使网络中的权重尽可能为0,也就相当于减小了网络复杂度,防止过拟合。
另外,上面没有提到一个问题,当w为0时怎么办?当w等于0时,|W|是不可导的,所以我们只能按照原始的未经正则化的方法去更新w,这就相当于去掉&*&*sgn(w)/n这一项,所以我们可以规定sgn(0)=0,这样就把w=0的情况也统一进来了。(在编程的时候,令sgn(0)=0,sgn(w&0)=1,sgn(w&0)=-1)
L1、L2正则化是通过修改代价函数来实现的,而Dropout则是通过修改神经网络本身来实现的,它是在训练网络时用的一种技巧(trike)。它的流程如下:
假设我们要训练上图这个网络,在训练开始时,我们随机地&删除&一半的隐层单元,视它们为不存在,得到如下的网络:
保持输入输出层不变,按照BP算法更新上图神经网络中的权值(虚线连接的单元不更新,因为它们被&临时删除&了)。
以上就是一次迭代的过程,在第二次迭代中,也用同样的方法,只不过这次删除的那一半隐层单元,跟上一次删除掉的肯定是不一样的,因为我们每一次迭代都是&随机&地去删掉一半。第三次、第四次&&都是这样,直至训练结束。
以上就是Dropout,它为什么有助于防止过拟合呢?可以简单地这样解释,运用了dropout的训练过程,相当于训练了很多个只有半数隐层单元的神经网络(后面简称为&半数网络&),每一个这样的半数网络,都可以给出一个分类结果,这些结果有的是正确的,有的是错误的。随着训练的进行,大部分半数网络都可以给出正确的分类结果,那么少数的错误分类结果就不会对最终结果造成大的影响。
更加深入地理解,可以看看Hinton和Alex两牛2012的论文《ImageNet Classification with Deep Convolutional Neural Networks》
数据集扩增(data augmentation)
&有时候不是因为算法好赢了,而是因为拥有更多的数据才赢了。&
不记得原话是哪位大牛说的了,hinton?从中可见训练数据有多么重要,特别是在深度学习方法中,更多的训练数据,意味着可以用更深的网络,训练出更好的模型。
既然这样,收集更多的数据不就行啦?如果能够收集更多可以用的数据,当然好。但是很多时候,收集更多的数据意味着需要耗费更多的人力物力,有弄过人工标注的同学就知道,效率特别低,简直是粗活。
所以,可以在原始数据上做些改动,得到更多的数据,以图片数据集举例,可以做各种变换,如:
将原始图片旋转一个小角度
添加随机噪声
一些有弹性的畸变(elastic distortions),论文《Best practices for convolutional neural networks applied to visual document analysis》对MNIST做了各种变种扩增。
截取(crop)原始图片的一部分。比如DeepID中,从一副人脸图中,截取出了100个小patch作为训练数据,极大地增加了数据集。感兴趣的可以看《Deep learning face representation from predicting 10,000 classes》.
更多数据意味着什么?
用50000个MNIST的样本训练SVM得出的accuracy94.48%,用5000个MNIST的样本训练NN得出accuracy为93.24%,所以更多的数据可以使算法表现得更好。在机器学习中,算法本身并不能决出胜负,不能武断地说这些算法谁优谁劣,因为数据对算法性能的影响很大。
转载请注明出处:
阅读(...) 评论()#写得比较清楚#正则化,归一化的概念
正则化(Regularization)、归一化(也有称为正规化/标准化,Normalization)是对数据尽心预处理的方式,他们的目的都是为了让数据更便于我们的计算或获得更加泛化的结果,但并不改变问题的本质,下面对他们的作用分别做一下科普,如有不正确之处,求指正!
需要注意的是,这些名词在不同的领域含义也有点区别,这里仅仅指的是在进行机器学习研究的时候所使用的意义。
一、正则化(Regularization)
李航博士在《统计学习方法》中提到,统计学习的三要素是模型、策略和算法,在机器学习领域,这个“模型”就是我们要求解的概率分布或决策函数。
假设我们现在要求一个逻辑回归问题,首先我们要做的是假设一个函数,可以覆盖所有的可能:y=wx,其中w为参数向量,x为已知样本的向量,如果用$y{i}表示第i个样本的真实值,用f(x{i})$表示样本的预测值,那么我们的损失函数可以定义为:
L(yi,f(xi))=yi&sigmoid(xi)
这里可以不用关心这个函数是什么意思,就知道代表误差就行了。对于该模型y=wx的所有样本的损失平均值成为“经验风险”(empirical
risk)或”经验损失”(empirical loss)。很显然,经验风险最小化(empirical risk
minimization,ERM)就是求解最优模型的原则。为了达到这个目的,模型的设定会越来越复杂,最后造成该模型只适用于当前的样本集(即over-fitting,过拟合)。
为了解决过拟合问题,通常有两种办法,第一是减少样本的特征(即维度),第二就是我们这里要说的”正则化“(又称为”惩罚“,penalty)。
正则化的一般形式是在整个平均损失函数后增加一个正则项(L2范数正则化,也有其他形式的正则化,他们的作用也不同):
Rerm=1N(∑iNL(yi,f(xi))+∑inλw2i)
后面的$\sum{i}^{n}\lambda
w{i}^2就是正则化项,其中\lambda$越大表明惩罚粒度越大,等于0表示不做惩罚,N表示所有样本的数量,n表示参数的个数。
从下面的图中,可以很明显的看出正则化函数的作用:
λ=0的情况,即没有正则化
λ=1的情况,即合适的惩罚
λ=100,过度惩罚,出现欠拟合问题
上面提到,我们还有其他形式的正则化,如L1范式正则化,可以用来筛选参数,这个日后再通过额外的文章来介绍。
二、归一化(Normalization)
我们在对数据进行分析的时候,往往会遇到单个数据的各个维度量纲不同的情况,比如对房子进行价格预测的线性回归问题中,我们假设房子面积(平方米)、年代(年)和几居室(个)三个因素影响房价,其中一个房子的信息如下:
面积(S):150 平方米
年代(Y):5 年
假设我们把该问题作为一个逻辑回归问题y=wx来求解,使用梯度下降来求解w的最优值。
效率比较高的梯度下降方法中,每次下降应该尽可能的往最优点靠近,假设下降距离函数为:
distance=λ|Δ\*|
表示梯度的模,\lambda$表示步长,如果两个向量的取值范围差别特别大,那么这两个向量的图像会显得很“细长”:
我们的梯度在寻找最优值的时候,由于图像“细长”,所以要来回找垂直线,两个维度范围相差的越大,梯度下降的越慢,还可能永远无法收敛。
为了解决这个问题,假如我们把所有的数据范围都是用归一化处理在0到1的区间内(也可以是0到10等其他范围,但一般是0到1),如使用以下归一化公式:
x\*i=xi&x&xmax&xmin
我们的图像就会变得更加“正圆”一些:
我们可以很清楚的看到 ,梯度会更加快速的找到最优点。
其实这篇文章写之前,我还纠结了很久“标准化(Standardization)”这个概念,最后请教了很多人,发现大家最常用的还是归一化和正则化两个概念。不同的场合大家的称谓也不同,总结起来还是按照英文来说比较没有歧义:Normalization和Regularization两个概念。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。机器学习中使用「正则化来防止过拟合」到底是一个什么原理?为什么正则化项就可以防止过拟合?
还请各位不吝赐教
的回答非常学院派,也非常系统。 过拟合表现在训练数据上的误差非常小,而在测试数据上误差反而增大。其原因一般是模型过于复杂,过分得去拟合数据的噪声和outliers.
正则化则是对模型参数添加先验,使得模型复杂度较小,对于噪声以及outliers的输入扰动相对较小。
以正则化项和损失函数都是l_2 norm 为例,下面贴一张上课用的slide.我们相当于是给模型参数w 添加了一个协方差为1/alpha 的零均值高斯分布先验。 对于alpha =0,也就是不添加正则化约束,则相当于参数的高斯先验分布有着无穷大的协方差,那么这个先验约束则会非常弱,模型为了拟合所有的训练数据,w可以变得任意大不稳定。alpha越大,表明先验的高斯协方差越小,模型约稳定, 相对的variance也越小。 也正如其他答题者所说, 加入正则化是 在bias和variance之间做一个tradeoff.
一般的监督学习,大概可以抽象成这样的优化问题:min loss( y - f(x) ) + \Omega ( f )f()是你要学习的model,y是监督的target. 为了更直观的解释,上面的regulazed的形式也可以写成下面constrained的形式:min loss(y - f(x))
\Omega(f) & \lambda如果是最简单的线性回归模型,那么就是:min || y - wX ||^2
s.t. ||w|| & \lambda, 这里面 ||w|| 越大,也就说明w向量离远点越远,模型的复杂程度越高,方法的bias越大,variance越小,也就会造成我们常说的过拟合。而一些非线性映射,或者KNN算法,则有着更高的模型复杂度。相反,\lambda越小,方法的bias也越小,能够更好地拟合训练数据,但是方法的variance更大, 输出变量于输出变量期望的差异也更大。从概率的角度来说,对模型的正则化项其实就是对w给出一个先验的分布。如果正则化项和损失函数都是l_2 norm,其实就给了w一个期望是0,协方差矩阵是 \delta I的先验分布。之后计算w,就是在给定w的先验、x和y的情况下,用最大似然估计最大化w的后验概率,求出w的最优解。\lambda越大,表示w的先验分布的协方差越小,也就是w越稳定。其他的正则话项也可以对应其他的先验分布,比如l_1的正则话项对应Laplace先验。
数学原理我不细说,google能得到一大坨解释,以及其他各位牛人也都回答了,奥坎姆剃刀这类概念我也不说,相信题主早就知道。我想你就差一个俗气的解释,那么我来几个俗气的解释。解释之前,先说明这样做的目的:如果一个模型我们只打算对现有数据用一次就不再用了,那么正则化没必要了,因为我们没打算在将来他还有用,正则化的目的是为了让模型的生命更长久,把它扔到现实的数据海洋中活得好,活得久。俗气的解释1:让模型参数不要在优化的方向上纵欲过度。《红楼梦》里,贾瑞喜欢王熙凤得了相思病,病榻中得到一枚风月宝鉴,可以进入和心目中的女神XXOO,它脑子里的模型目标函数就是“最大化的爽”,所以他就反复去拟合这个目标,多次XXOO,于是人挂掉了,如果给他加一个正则化,让它爽,又要控制爽的频率,那么他可以爽得更久。俗气的解释2:假如马化腾心中的商业模型优化目标是让腾讯发展得更好,他的模型只有一个特征,就是张小龙,根据他的目标以及已有样本,它应该给张小龙赋予更大的权重,就可以一直让模型的表现朝这个目标前进,但是,突然有一天马化腾意识到:这样下去不行啊,他的权重大得没边的话,根本不可持续啊,他要是走了,他要是取代我了。于是马化腾就需要在优化这个目标的时候给这个唯一的特征加一个正则化参数,让权重不要过大,从而使得整个模型能够既朝着设定目标走,又不至于无法持续。俗气的解释3:我们这群技术男在公司里,如果模型目标是提高自身能力并最终能够在公司有一席之地,理想的优化方法是提高各种牛逼算法,各种高大上的计算平台的熟悉程度,尽量少开无谓的会议,少接领导扯淡的需求,但是如果只是这些的话,很可能在这个公司呆不太久,因为太关注自己的特征权重了,那么如果这个公司其实非常适合提升自己的能力,那么要能在这里呆久点,就得适当限制自己这些特征的权重绝对值,不要那么绝对坚持用到牛逼算法,偶尔也处理处理领导的扯淡需求,平衡一下,你的模型才能泛化得更广。最后,我还是正本清源一下,正经再简单解释一下正则化,以下内容来自PRML前三章,具体页数记不清了。上图中的模型是线性回归,有两个特征,要优化的参数分别是w1和w2,左图的正则化是l2,右图是l1。蓝色线就是优化过程中遇到的等高线,一圈代表一个目标函数值,圆心就是样本观测值(假设一个样本),半径就是误差值,受限条件就是红色边界(就是正则化那部分),二者相交处,才是最优参数。可见右边的最优参数只可能在坐标轴上,所以就会出现0权重参数,使得模型稀疏。这个图告诉我们,如果你太绝对相信那个目标了,沉迷其中,那些还没遇到的样本一来,你拔不出来就挂掉了。最后, regularize这个词更多的意思是“使系统化”,“使体系化”,也就是说不要走极端,要建立和谐社会,科学发展观。==================================再补充一个角度:正则化其实就是对模型的参数设定一个先验,这是贝叶斯学派的观点,不过我觉得也可以一种理解。L1正则是laplace先验,l2是高斯先验,分别由参数sigma确定。求不要追究sigma是不是也有先验,那一路追究下去可以天荒地老。
最简单的解释就是加了先验。在数据少的时候,先验知识可以防止过拟合。举2个例子:1. 抛硬币,推断正面朝上的概率。如果只能抛5次,很可能5次全正面朝上,这样你就得出错误的结论:正面朝上的概率是1--------过拟合!如果你在模型里加正面朝上概率是0.5的先验,结果就不会那么离谱。这其实就是正则。2. 最小二乘回归问题:加2范数正则等价于加了高斯分布的先验,加1范数正则相当于加拉普拉斯分布先验。----------------------求解释这两个“等价”拿Lasso(1范数正则)举例其实就是如下概率模型的最大后验。如果不对w加拉普拉斯分布的先验,最大后验得到的是其实正则项就是对w的先验分布
看一下Ng Andrew的Regularization这一节,就应该基本清楚了。URL:
过拟合的时候,拟合函数的系数往往非常大,而正则化是通过约束参数的范数使其不要太大,所以可以在一定程度上减少过拟合情况。 补充:说说为什么过拟合的时候系数会很大。如下图所示,过拟合,就是拟合函数需要顾忌每一个点,最终形成的拟合函数波动很大。在某些很小的区间里,函数值的变化很剧烈。这就意味着函数在某些小区间里的导数值(绝对值)非常大,由于自变量值可大可小,所以只有系数足够大,才能保证导数值很大。
正则化,也叫Regulization,机器学习中经常涉及的名词概念,高大上唬人很给力,但是大多数人并不清楚这是干嘛的。因为在大多数的机器学习应用中,正则化这个概念有点儿鸡肋,我们也经常忽略它,不过对于那些进阶的机器学习玩儿家,这个概念还是蛮重要的,不然人家笑你不专业。好啦废话不多说,进入正题。我也是看了一些技术贴现学现卖才了解正则化是咋回事,在学习了解的过程中,发现正则化这个概念一般来源于对于模型的Underfitting和Overfitting的讨论。我们在机器学习中,根本目的是预测,已知若干个输入属性x1,x2,x3…,然后输出一个决策属性y。(当然输出的决策属性也可以是多个,这不重要,对于Machine Learning来说,一个和多个output不太matter。)我们进行机器学习(数据训练模型)的根本目的是找到那些输入属性对应的Parameters,然后就可以利用这些Parameters进行预测分析了。一般来说,我们拿来的数据的属性不太多,所以我们打开SPSS把这些属性全扔进去回归就好了,得到那些Parameters,简单粗暴。那为什么我们分析数据所用到的属性不太多呢?属性不多主要有两种情况:第一种情况:做过科研的小伙伴大概了解,收数据是最耗时耗力的了,所以想多收点儿数据的属性上来本身就很难,所以基本上手上就那么些个数据,所以也不多想,就这些数据做就好了。(这种情况呢,从学术的角度上,属于投机行为,暂且就不说了哈哈,我们还是走常规路线,聊点正经的…)第二种情况:我们对于事物基本上有一个预判,大概知道哪些属性会对某个事物的预测有影响。例如我们想预测房价水平,我们会考虑,城市级别,人口因素,房子的朝向等等属性,我们不太会选择属性例如该城市的高考入学比例这种属性。所以呢,我们要聊聊的就是第二种情况,模型的预判。对于模型预判的问题,通常要考虑两个主要的具体问题:第一,我们选什么形式的模型: 线性?非线性?一次还是高次?还是指数形式?第二,我们选择哪些参数回归:选择人口因素?还是选择高考入学比例? 我相信这两个问题肯定有一些小伙伴注意到过(不一定解决过,但至少曾经注意到)。所以,正常来讲,建立模型要两步,1)对模型进行预判,设定一些基本假设。2)训练数据获得参数。我们往往只关注第二步,忽略第一步,而用于解决第一步问题的概念,就是今天的主题,正则化。现在插播一段基于学术研究方法的一些题外话,有助于对正则化进行深入理解:一般在进行学术研究的方法上,有两个基本的套路,所谓社会科学的解决问题的套路以及搞计算机那帮人的机器学习套路。社会科学解决问题的套路是基于已有的理论,去选择合适的模型基本假设,解决模型的预判问题。已有的理论就是例如某某人提到过这样的东西。比如研究房价问题,什么影响房价,我们会说,哎我选择这个属性,是因为任志强说的有影响,我就这样选了…(提到这里,想拍砖的先忍住)。
而机器学习选择模型的方式,则不基于任何人的理论,不对客观事物的预测分析做过多的人为假设,让计算机自己去选择合适的模型,也叫Data-Driven的解决问题思路。所以,这就是为什么在机器学习的领域,我们经常会听到正则化这个概念,因为正则化就是机器用客观的指标,自动地,没有人为主观偏见干扰地去选择基本模型形式的过程。当然,绝对的没有人为主观假设也是不可能的,但是我们可以尽量少地对模型进行假设,让大部分的模型的形式,让计算机来决定,而不是我们主观地确定。现在再来看,Overfitting和Underfitting的事儿,具体咋回事儿,对Machine Learning有一定了解的小伙伴基本上都知道,不太废话,先上张经典图,回顾一下。对于这张图,我们基本上说,左边是Underfitting,中间是Just okay,右边是Overfitting。模型的参数越少,形式越单调,则我们对于模型的主观假设就越少,我们就没怎么对于这个模型中加入主观的偏见;而模型的参数越多,形式越复杂,例如右边,加入了高次项好几个,则我们对于模型的主观假设就越多(我们不仅觉得和x有关系,还和x平方有关系,还和x三次方有关系…你知道这么多,你咋不上天呢…),我们对于客观事物的主观偏见也就越多,这就是为什么有时候我们也管Overfitting叫Bias。Okay,不想有主观太多约束,那么模型就简单点,但是简单的模型描述能力差,对历史数据的拟合能力不强,你看左边那些点都不在曲线上。我们可以把左边的模型写成如下形式:即已有的线性模型加一个随机项,来表达叉子数据点,那个随机项就是当前模型不能解释的部分,模型越简单,这个随机项的方差就越大,所以通常也把Unerfitting的现象叫做Variance。Underfitting影响了模型对历史数据的解释能力,而Overfitting则增加了对未知数据预测失效的风险,我们要在这两个问题上进行一个Balance来选择合适的模型,不能太复杂也不能太简单,模型的形式和复杂度要正合适,如何让它合适,就是用正则化来进行有效的模型调整。接下来,就要讲如何用正则化来调整模型的形式,让其形式和复杂度刚刚好能Balance Overfitting as well as Underfitting。凡是Balance这个问题,归根结底要转化为一个优化问题中去解决。所以呢,我们还是想到进行机器学习训练中的那个Cost Function的优化问题了。现在先引入我们要解决的问题:目的是做预测,我们假如总共有100个属性,然后这些属性都可能有高次项(假设到x的3次方),然后这些属性是一个线性组合过程来预测最终的y。(从绝对理性的角度,这些假设也不能强加,但是人类认知世界的过程本身就无法达到绝对理性的,就像柏拉图的“洞穴之喻”)。那么这个模型就可以写成如下形式:所有要估计的参数总共有300个(暂时不考虑零次项,有经验的小伙伴都懂的)。所以最终哪些项起作用我们不清楚,我们不能人为主观地认为所有的二次项都没作用删掉,强制把参数减掉为200个,所以我们只能假设所有的项目都有所用,让这个模型包括全部300个参数。但是如果考虑所有参数的话,这个模型就会变得超级复杂,稍微有一点干扰就不能准确预测后面的数据(专业术语说,Robustness很差)。所以我们需要对这些模型参数加上一个基于模型复杂度的惩罚项,模型越复杂,整个模型的训练Cost Function就越大,然后去优化考虑参数惩罚项的Cost Function。例如一种修正后的Cost Function可以表达如下面形式:这样,在优化参数的时候,我们考虑到参数的惩罚项,因为每一个参数值在优化变大的过程中,都表示对于其对应的属性项的主观偏见的增加,从而增加了整个模型的预测风险。对于惩罚项前面参数λ的选择,会影响Balance两个目标的过程,λ越大则说明,越需要规避主观偏见,从而模型倾向于变得简单,更少的参数(实际上是更多参数趋向于取值为接近零的值)。常见的正则化方式除了上面给出来的例子,还有很多,具体内容详见WikiPedia给出的解释:。By: 微信订阅号,数据分析技术大课堂 (头像二维码)
这个问题要说清楚还是需要花点功夫的,因为模糊的解释其实更让人云里雾里的。我对其他答主的答案做一些补充和说明,希望可以将这个问题说的更清楚一点。1.传统的机器学习中的bias-variance trade-off的解释考虑二值分类问题。是特征集合,是上的概率分布,记是所有的的可测函数的集合。记是所有分类器中分类性能最好的一个。称分类器的泛化误差这里做一点解释,P是真实的数据生成机制,可测函数只是一个技术性条件非数学系的可以无视,泛化误差代表分类器的预测能力,泛化误差越小越好。我们希望找到一个分类函数使得泛化误差最小。记中所有的线性函数。记是所有线性分类函数里泛化误差最小的对于任意线性分类函数它的泛化误差有如下分解第一部分称模型的variance,反映的是算法性能的优劣,在线性模型里就是反应最小二乘估计量或者极大似然估计量的好坏。第二部分称模型的bias,反映的是模型本身的优劣,即线性模型本身作为分类函数的好坏。这样就很清楚了,若扩大我们搜索的分类函数的范围,bias这一部分会减小,但一般说来我们搜索到可能性会下降,这样就增大了variance。所以在搜索范围上我们需要做一种权衡,这种权衡就是bias-variance trade-off。正则化使我们减少搜索范围,这样variance的部分会减小,bias的部分又不会增大太快。这就是为什么正则化有可能会改善我们泛化误差。这是一个非常一般的框架。2.Stein‘s Pheonomenon这是高维统计学里最重要的发现之一。当维数大于等于3时若则用均值估计居然不是最好的估计量。即 对于取任何值都成立。换句话说用Stein估计量去估计均值会比极大似然估计量要好。这个估计量看起来很复杂,大家先不用管他。Stein估计量有一种Shrinkage(数据收缩)的现象。这种Shrinkage导致的结果就是估计量的方差减小。虽然这个估计量是有偏的,但是由于方差减小可以补偿估计量的偏差。所以导致这个估计量比极大似然估计量要好。3.Bayesian解释若则贝叶斯估计是注意到这里也出现了Shrinkage的现象。正则化可以解释为给了一个先验概率,在有先验概率的时候估计当然应该考虑到先验概率,在这里自然就是在先验概率均值0和观察均值之间取平均。换一种角度看就是向估计量向原点压缩了。这种收缩导致了在Bayesian的框架下,Bayes估计量比极大思然估计量要好。这正是正则化从Bayes的角度看为什么会改善泛化误差。最后我想说的是Stein Pheonomenon是理解这一切的核心。短短的一个回答里不可能把这个现象说的很透彻,但如果用一句话总结一下的话,正则化导致估计量的Shrinkage,Shrinkage导致variance减小,如果variance的减小可以补偿bias则正则化可以改善泛化误差。
妈的直接从word贴过来图片都没了,知乎发图片太麻烦了由于有人说我抄袭,我直接把课程的网站放这里,我确实是抄袭的:1. The Problem of Overfitting1还是来看预测房价的这个例子,我们先对该数据做线性回归,也就是左边第一张图。如果这么做,我们可以获得拟合数据的这样一条直线,但是,实际上这并不是一个很好的模型。我们看看这些数据,很明显,随着房子面积增大,住房价格的变化趋于稳定或者说越往右越平缓。因此线性回归并没有很好拟合训练数据。我们把此类情况称为欠拟合(underfitting),或者叫作叫做高偏差(bias)。这两种说法大致相似,都表示没有很好地拟合训练数据。高偏差这个词是 machine learning 的研究初期传下来的一个专业名词,具体到这个问题,意思就是说如果用线性回归这个算法去拟合训练数据,那么该算法实际上会产生一个非常大的偏差或者说存在一个很强的偏见。第二幅图,我们在中间加入一个二次项,也就是说对于这幅数据我们用二次函数去拟合。自然,可以拟合出一条曲线,事实也证明这个拟合效果很好。另一个极端情况是,如果在第三幅图中对于该数据集用一个四次多项式来拟合。因此在这里我们有五个参数θ0到θ4,这样我们同样可以拟合一条曲线,通过我们的五个训练样本,我们可以得到如右图的一条曲线。一方面,我们似乎对训练数据做了一个很好的拟合,因为这条曲线通过了所有的训练实例。但是,这实际上是一条很扭曲的曲线,它不停上下波动。因此,事实上我们并不认为它是一个预测房价的好模型。所以,我们把这类情况叫做过拟合(overfitting),也叫高方差(variance)。与高偏差一样,高方差同样也是一个历史上的叫法。从第一印象上来说,如果我们拟合一个高阶多项式,那么这个函数能很好的拟合训练集(能拟合几乎所有的训练数据),但这也就面临函数可能太过庞大的问题,变量太多。同时如果我们没有足够的数据集(训练集)去约束这个变量过多的模型,那么就会发生过拟合。2过度拟合的问题通常发生在变量(特征)过多的时候。这种情况下训练出的方程总是能很好的拟合训练数据,也就是说,我们的代价函数可能非常接近于 0 或者就为 0。但是,这样的曲线千方百计的去拟合训练数据,这样会导致它无法泛化到新的数据样本中,以至于无法预测新样本价格。在这里,术语"泛化"指的是一个假设模型能够应用到新样本的能力。新样本数据是指没有出现在训练集中的数据。之前,我们看到了线性回归情况下的过拟合。类似的情况也适用于逻辑回归。3那么,如果发生了过拟合问题,我们应该如何处理?过多的变量(特征),同时只有非常少的训练数据,会导致出现过度拟合的问题。因此为了解决过度拟合,有以下两个办法。方法一:尽量减少选取变量的数量具体而言,我们可以人工检查每一项变量,并以此来确定哪些变量更为重要,然后,保留那些更为重要的特征变量。至于,哪些变量应该舍弃,我们以后在讨论,这会涉及到模型选择算法,这种算法是可以自动选择采用哪些特征变量,自动舍弃不需要的变量。这类做法非常有效,但是其缺点是当你舍弃一部分特征变量时,你也舍弃了问题中的一些信息。例如,也许所有的特征变量对于预测房价都是有用的,我们实际上并不想舍弃一些信息或者说舍弃这些特征变量。方法二:正则化正则化中我们将保留所有的特征变量,但是会减小特征变量的数量级(参数数值的大小θ(j))。这个方法非常有效,当我们有很多特征变量时,其中每一个变量都能对预测产生一点影响。正如我们在房价预测的例子中看到的那样,我们可以有很多特征变量,其中每一个变量都是有用的,因此我们不希望把它们删掉,这就导致了正则化概念的发生。接下来我们会讨论怎样应用正则化和什么叫做正则化均值,然后将开始讨论怎样使用正则化来使学习算法正常工作,并避免过拟合。2. Cost Function1在前面的介绍中,我们看到了如果用一个二次函数来拟合这些数据,那么它给了我们一个对数据很好的拟合。然而,如果我们用一个更高次的多项式去拟合,最终我们可能会得到一个曲线,它能很好地拟合训练集,但却并不是一个好的结果,因为它过度拟合了数据,因此,一般性并不是很好。让我们考虑下面的假设,我们想要加上惩罚项,从而使参数 θ3 和 θ4 足够的小。这里我的意思就是,上图的式子是我们的优化目标,也就是说我们需要尽量减少代价函数的均方误差。对于这个函数我们对它添加一些项,加上 1000 乘以 θ3 的平方,再加上 1000 乘以 θ4 的平方,1000 只是我随便写的某个较大的数字而已。现在,如果我们要最小化这个函数,那么为了最小化这个新的代价函数,我们要让 θ3 和 θ4 尽可能小。因为,如果你在原有代价函数的基础上加上 1000 乘以 θ3 这一项 ,那么这个新的代价函数将变得很大,所以,当我们最小化这个新的代价函数时, 我们将使 θ3 的值接近于 0,同样 θ4 的值也接近于 0,就像我们忽略了这两个值一样。如果我们做到这一点( θ3 和 θ4 接近 0 ),那么我们将得到一个近似的二次函数。因此,我们最终恰当地拟合了数据,我们所使用的正是二次函数加上一些非常小,贡献很小项(因为这些项的 θ3、 θ4 非常接近于0)。显然,这是一个更好的假设。2更一般地,这里给出了正规化背后的思路。这种思路就是,如果我们的参数值对应一个较小值的话(参数值比较小),那么往往我们会得到一个形式更简单的假设。在我们上面的例子中,我们惩罚的只是 θ3 和 θ4 ,使这两个值均接近于零,从而我们得到了一个更简单的假设,实际上这个假设大抵上是一个二次函数。但更一般地说,如果我们像惩罚 θ3 和 θ4 这样惩罚其它参数,那么我们往往可以得到一个相对较为简单的假设。实际上,这些参数的值越小,通常对应于越光滑的函数,也就是更加简单的函数。因此 就不易发生过拟合的问题。我知道,为什么越小的参数对应于一个相对较为简单的假设,对你来说现在不一定完全理解,但是在上面的例子中使 θ3 和 θ4 很小,并且这样做能给我们一个更加简单的假设,这个例子至少给了我们一些直观感受。来让我们看看具体的例子,对于房屋价格预测我们可能有上百种特征,与刚刚所讲的多项式例子不同,我们并不知道 θ3 和 θ4 是高阶多项式的项。所以,如果我们有一百个特征,我们并不知道如何选择关联度更好的参数,如何缩小参数的数目等等。因此在正则化里,我们要做的事情,就是把减小我们的代价函数(例子中是线性回归的代价函数)所有的参数值,因为我们并不知道是哪一个或哪几个要去缩小。因此,我们需要修改代价函数,在这后面添加一项,就像我们在方括号里的这项。当我们添加一个额外的正则化项的时候,我们收缩了每个参数。顺便说一下,按照惯例,我们没有去惩罚 θ0,因此 θ0 的值是大的。这就是一个约定从 1 到 n 的求和,而不是从 0 到 n 的求和。但其实在实践中这只会有非常小的差异,无论你是否包括这 θ0 这项。但是按照惯例,通常情况下我们还是只从 θ1 到 θn 进行正则化。下面的这项就是一个正则化项并且 λ 在这里我们称做正则化参数。λ 要做的就是控制在两个不同的目标中的平衡关系。第一个目标就是我们想要训练,使假设更好地拟合训练数据。我们希望假设能够很好的适应训练集。而第二个目标是我们想要保持参数值较小。(通过正则化项)而 λ 这个正则化参数需要控制的是这两者之间的平衡,即平衡拟合训练的目标和保持参数值较小的目标。从而来保持假设的形式相对简单,来避免过度的拟合。对于我们的房屋价格预测来说,我们之前所用的非常高的高阶多项式来拟合,我们将会得到一个非常弯曲和复杂的曲线函数,现在我们只需要使用正则化目标的方法,那么你就可以得到一个更加合适的曲线,但这个曲线不是一个真正的二次函数,而是更加的流畅和简单的一个曲线。这样就得到了对于这个数据更好的假设。再一次说明下,这部分内容的确有些难以明白,为什么加上参数的影响可以具有这种效果?但如果你亲自实现了正规化,你将能够看到这种影响的最直观的感受。3在正则化线性回归中,如果正则化参数值 λ 被设定为非常大,那么将会发生什么呢?我们将会非常大地惩罚参数θ1 θ2 θ3 θ4 …
也就是说,我们最终惩罚θ1 θ2 θ3 θ4 …
在一个非常大的程度,那么我们会使所有这些参数接近于零。如果我们这么做,那么就是我们的假设中相当于去掉了这些项,并且使我们只是留下了一个简单的假设,这个假设只能表明房屋价格等于 θ0 的值,那就是类似于拟合了一条水平直线,对于数据来说这就是一个欠拟合 (underfitting)。这种情况下这一假设它是条失败的直线,对于训练集来说这只是一条平滑直线,它没有任何趋势,它不会去趋向大部分训练样本的任何值。这句话的另一种方式来表达就是这种假设有过于强烈的"偏见" 或者过高的偏差 (bais),认为预测的价格只是等于 θ0 。对于数据来说这只是一条水平线。因此,为了使正则化运作良好,我们应当注意一些方面,应该去选择一个不错的正则化参数 λ 。当我们以后讲到多重选择时我们将讨论一种方法来自动选择正则化参数 λ
,为了使用正则化,接下来我们将把这些概念应用到到线性回归和逻辑回归中去,那么我们就可以让他们避免过度拟合了。3. Regularized Linear Regression之前我们已经介绍过,岭回归的代价函数如下:对于线性回归(的求解),我们之前运用了两种学习算法,一种基于梯度下降,一种基于正规方程。1梯度下降,如下:2正规方程,如下:3现在考虑 M(即样本量), 比 N(即特征的数量)小或等于N。通过之前的博文,我们知道如果你只有较少的样本,导致特征数量大于样本数量,那么矩阵 XTX 将是不可逆矩阵或奇异(singluar)矩阵,或者用另一种说法是这个矩阵是退化(degenerate)的,那么我们就没有办法使用正规方程来求出 θ 。幸运的是,正规化也为我们解决了这个问题,具体的说只要正则参数是严格大于零,实际上,可以证明如下矩阵:将是可逆的。因此,使用正则还可以照顾任何 XTX 不可逆的问题。所以,你现在知道如何实现岭回归,利用它,你就可以避免过度拟合,即使你在一个相对较小的训练集里有很多特征。这应该可以让你在很多问题上更好的运用线性回归。在接下来的视频中,我们将把这种正则化的想法应用到 Logistic 回归,这样我们就可以让 logistic 回归也避免过度拟合,从而表现的更好。4. Regularized Logistic RegressionRegularized
Logistic Regression 实际上与 Regularized
Linear Regression 是十分相似的。同样使用梯度下降:如果在高级优化算法中,使用正则化技术的话,那么对于这类算法我们需要自己定义costFunction。For those methods what we needed to do was
to define the function that's called the cost function.这个我们自定义的 costFunction 的输入为向量 θ ,返回值有两项,分别是代价函数 jVal 以及 梯度gradient。总之我们需要的就是这个自定义函数costFunction,针对Octave而言,我们可以将这个函数作为参数传入到 fminunc 系统函数中(fminunc 用来求函数的最小值,将@costFunction作为参数代进去,注意 @costFunction 类似于C语言中的函数指针),fminunc返回的是函数 costFunction 在无约束条件下的最小值,即我们提供的代价函数 jVal 的最小值,当然也会返回向量 θ 的解。上述方法显然对正则化逻辑回归是适用的。
某些正则化(不是全部,注意,不是全部)可以防止overfitting,为什么?可以从两种角度来解释。从贝叶斯学派,认为是加了先验知识(比如,L2对应高斯分布),参考PRML;如果是频率学派,那么可以从模型的stability角度来分析,stable models do not overfit,参考某神书。
已有帐号?
无法登录?
社交帐号登录}

我要回帖

更多关于 tikhonov正则化 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信