zoukankan      html  css  js  c++  java
  • zzL1和L2正则化regularization

    最优化方法:L1和L2正则化regularization

    http://blog.csdn.net/pipisorry/article/details/52108040

    机器学习和深度学习常用的规则化方法之一:L范数正则化(规格化)。

    一般来说,监督学习可以看做最小化下面的目标函数):

    规则项Ω(w)

        loss项可参考[机器学习算法及其损失函数  ]。Note:似然函数(likelihood function)的负对数被叫做误差函数(error function)。

    这里我们先把目光转向“规则项Ω(w)”。规则化函数Ω(w)也有很多种选择,一般是模型复杂度的单调递增函数,模型越复杂,规则化值就越大。比如,规则化项可以是模型参数向量的范数。然而,不同的选择对参数w的约束不同,取得的效果也不同,但我们在论文中常见的都聚集在:零范数、一范数、二范数、迹范数、Frobenius范数和核范数等等[矩阵论:向量范数和矩阵范数]。

    这么多范数,到底它们表达啥意思?具有啥能力?什么时候才能用?什么时候需要用呢?

    某小皮

     

     

    L0范数、L1范数与稀疏

           L0范数是指向量中非0的元素的个数。如果我们用L0范数来规则化一个参数矩阵W的话,就是希望W的大部分元素都是0。换句话说,让参数W是稀疏的。看到了“稀疏”二字,大家都应该从“压缩感知”和“稀疏编码”中醒悟过来,原来用的“稀疏”就是通过它来实现的。可是看到的papers世界中,稀疏不是都通过L1范数||W||1来实现吗?这里把L0和L1放在一起的原因,因为他们有着某种不寻常的关系。

    L1范数是什么?它为什么可以实现稀疏?

           L1范数是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算子”(Lasso regularization)。

    为什么L1范数会使权值稀疏?

    1 有人可能会这样回答“它是L0范数的最优凸近似”。

    2 实际上,还存在一个更美的回答:任何的规则化算子,如果他在Wi=0的地方不可微,并且可以分解为一个“求和”的形式,那么这个规则化算子就可以实现稀疏。这说是这么说,W的L1范数是绝对值,|w|在w=0处是不可微,但这还是不够直观,这里因为我们需要和L2范数进行对比分析,所以关于L1范数的直观理解,请待会看看第二节。

    3 权值稀疏的推导

    正则化的目标函数如下所示

    相比 L2正则化, L1正则化会产生更 稀疏(sparse)的解。此处稀疏性指的是 最优值中的一些参数为 0。和 L2正则化相比, L1正则化的稀疏性具有本质的不同。由L1正则化导出的稀疏性质已经被广泛地用于特征选择机制。特征选择从可用的特征子集选择出有意义的特征,化简机器学习问题。

    [深度学习]

    既然L0可以实现稀疏,为什么不用L0,而要用L1呢?

    个人理解,一是因为L0范数很难优化求解(NP难问题),二是L1范数是L0范数的最优凸近似,而且它比L0范数要容易优化求解。

    为什么要稀疏?参数稀疏有什么好处呢?

    1)特征选择(Feature Selection):

           稀疏规则化关键原因在于它能实现特征的自动选择。一般来说,xi的大部分元素(特征)都是和最终的输出yi没有关系或者不提供任何信息的,在最小化目标函数的时候考虑xi这些额外的特征,虽然可以获得更小的训练误差,但在预测新的样本时,这些没用的信息反而会被考虑,从而干扰了对正确yi的预测。稀疏规则化算子的引入就是为了完成特征自动选择的使命,它会学习去掉这些没有信息的特征,把这些特征对应的权重置为0。

    2)可解释性(Interpretability):

           另一个好处是参数变少可以使整个模型获得更好的可解释性。

    例如患某种病的概率是y,然后我们收集到的数据x是1000维的,也就是我们需要寻找这1000种因素到底是怎么影响患上这种病的概率的。假设我们这个是个回归模型:y=w1*x1+w2*x2+…+w1000*x1000+b(当然了,为了让y限定在[0,1]的范围,一般还得加个Logistic函数)。通过学习,如果最后学习到的w*就只有很少的非零元素,例如只有5个非零的wi,那么我们就有理由相信,这些对应的特征在患病分析上面提供的信息是巨大的,决策性的。也就是说,患不患这种病只和这5个因素有关,那医生就好分析多了。但如果1000个wi都非0,医生面对这1000种因素,累觉不爱。

    L2范数与过拟合

           L2范数在回归里面,它的回归叫“岭回归”(Ridge Regression),也叫它“权值衰减weight decay”。

    向目标函数添加一个正则项使权重更加接近原点。更一般地,我们可以将参数正则化为接近空间中的任意特定点,令人惊讶的是这样也仍有正则化效果,但是特定点越接近真实值结果越好。当我们不知道正确的值应该是正还是负时,零是有意义的默认值

    模型具有以下总的目标函数

    与之对应的梯度为

    使用单步梯度下降更新权重,即执行以下更新:

    换种写法就是:

    L2范数正则:权值衰减带来的影响

    只有在显著减小目标函数方向上的参数会保留得相对完好在无助于目标函数减小的方向(对应~Hessian~矩阵较小的特征值)上改变参数不会显著增加梯度。这种不重要方向对应的分量会在训练过程中因正则化而衰减掉

    权重衰减的效果是沿着由 H 的特征向量所定义的轴缩放w∗

    单个步骤发生的变化:在每步执行通常的梯度更新之前先收缩权重向量(将权重向量乘以一个常数因子)。

    训练的整个过程发生的变化

     

    研究线性回归。线性回归的代价函数是平方误差之和。

    [深度学习]

    L2范数的优点

    1)学习理论的角度:

           从学习理论的角度来说,L2范数可以防止过拟合,提升模型的泛化能力。[Machine Learning - VII. Regularization规格化 (Week 3)  ]

    2)优化计算的角度:

           从优化或者数值计算的角度来说,L2范数有助于处理条件数 condition number不好的情况下矩阵求逆很困难的问题(解释看下面)。[数值分析:矩阵求逆]

    为什么L2范数可以防止过拟合?模型越简单?

           L2范数是指向量各元素的平方和然后求平方根。我们让L2范数的规则项||W||2最小,可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0。而越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象。

    为什么越小的参数说明模型越简单?奥卡姆剃刀(Occam's razor)原理?

    限制了参数很小,实际上就限制了多项式某些分量的影响很小

    所以为什么参数越小,说明模型越简单呢?这是因为越复杂的模型,越是会尝试对所有的样本进行拟合,甚至包括一些异常样本点,这就容易造成在较小的区间里预测值产生较大的波动,这种较大的波动也反映了在这个区间里的导数很大,而只有较大的参数值才能产生较大的导数。因此复杂的模型,其参数值会比较大。

    拟合函数求导后,不同feature的求导后参数就对应着这个feature的波动大小,而在此feature上只有取值变化剧烈才会有很大的波动,所以就会产生过拟合。

    这也是为什么过拟合的时候系数会很大?如下图所示,过拟合,就是拟合函数需要顾忌每一个点,最终形成的拟合函数波动很大。在某些很小的区间里,函数值的变化很剧烈。这就意味着函数在某些小区间里的导数值(绝对值)非常大,由于自变量值可大可小,所以只有系数足够大,才能保证导数值很大。

    [机器学习之:正则化] [知乎:机器学习中使用「正则化来防止过拟合」到底是一个什么原理?为什么正则化项就可以防止过拟合?]*

    一句话总结下:通过L2范数,我们可以实现了对模型空间的限制,从而在一定程度上避免了过拟合。

    迭代优化的算法的规则化收敛速度优化

    线性回归最优解:最小二乘法

    因为目标函数如果是二次的,对于线性回归来说,那实际上是有解析解的,求导并令导数等于零即可得到最优解为:

           然而,如果当我们的样本X的数目比每个样本的维度还要小的时候(欠定方程),矩阵X'X将会不是满秩的( rank(X'X) = rank(X)  ≤ min(m,n) = m,X'X是n*n矩阵,秩<=m<n),也就是X'X会变得不可逆,所以w*就没办法直接计算出来了,或者更确切地说,将会有无穷多个解(因为我们方程组的个数小于未知数的个数)。也就是说,我们的数据不足以确定一个解,如果我们从所有可行解里随机选一个的话,很可能并不是真正好的解,总而言之,我们过拟合了。

           但如果加上L2规则项,就变成了下面这种情况,就可以直接求逆了:

           这里面,专业点的描述是:要得到这个解,我们通常并不直接求矩阵的逆,而是通过解线性方程组的方式(例如高斯消元法)来计算。考虑没有规则项的时候,也就是λ=0的情况,如果矩阵X'X的 condition number 很大的话,解线性方程组就会在数值上相当不稳定,而这个规则项的引入则可以改善condition number。

    [Machine Learning - IV. Linear Regression with Multiple Variables多变量线性规划 (Week 2)  ]

           另外,如果使用迭代优化的算法,condition number 太大仍然会导致问题:它会拖慢迭代的收敛速度,而规则项从优化的角度来看,实际上是将目标函数变成λ-strongly convex(λ强凸)的了

    什么是λ强凸?

           当f满足:

           时,我们称f为λ-stronglyconvex函数,其中参数λ>0。当λ=0时退回到普通convex 函数的定义。

           在直观的说明强凸之前,我们先看看普通的凸是怎样的。假设我们让f在x的地方做一阶泰勒近似(一阶泰勒展开忘了吗?f(x)=f(a)+f'(a)(x-a)+o(||x-a||).):

           直观来讲,convex 性质是指函数曲线位于该点处的切线,也就是线性近似之上,而 strongly convex 则进一步要求位于该处的一个二次函数上方,也就是说要求函数不要太“平坦”而是可以保证有一定的“向上弯曲”的趋势。专业点说,就是convex 可以保证函数在任意一点都处于它的一阶泰勒函数之上,而strongly convex可以保证函数在任意一点都存在一个非常漂亮的二次下界quadratic lower bound。当然这是一个很强的假设,但是同时也是非常重要的假设。可能还不好理解,那我们画个图来形象的理解下。

           如果我们的函数f(w)如左图红色那个函数,我们取我们的最优解w*的地方都会位于蓝色虚线的那根二次函数之上,这样就算wt和w*离的比较近的时候,f(wt)和f(w*)的值差别还是挺大的,也就是会保证在我们的最优解w*附近的时候,还存在较大的梯度值,这样我们才可以在比较少的迭代次数内达到w*。但对于右图,红色的函数f(w)只约束在一个线性的蓝色虚线之上,假设是如右图的很不幸的情况(非常平坦),那在wt还离我们的最优点w*很远的时候,我们的近似梯度(f(wt)-f(w*))/(wt-w*)就已经非常小了,在wt处的近似梯度∂f/∂w就更小了,这样通过梯度下降wt+1=wt-α*(∂f/∂w),我们得到的结果就是w的变化非常缓慢,像蜗牛一样,非常缓慢的向我们的最优点w*爬动,那在有限的迭代时间内,它离我们的最优点还是很远。

           所以仅仅靠convex 性质并不能保证在梯度下降和有限的迭代次数的情况下得到的点w会是一个比较好的全局最小点w*的近似点(插个话,有地方说,实际上让迭代在接近最优的地方停止,也是一种规则化或者提高泛化性能的方法)。正如上面分析的那样,如果f(w)在全局最小点w*周围是非常平坦的情况的话,我们有可能会找到一个很远的点。但如果我们有“强凸”的话,就能对情况做一些控制,我们就可以得到一个更好的近似解。至于有多好,这里面有一个bound,这个 bound 的好坏也要取决于strongly convex性质中的常数α的大小

    如果要获得strongly convex怎么做?

    最简单的就是往里面加入一项(α/2)*||w||2。这里的alpha就是上式中的lambda???

    实际上,在梯度下降中,目标函数收敛速率的上界实际上是和矩阵XTX的 condition number有关,XTX的 condition number 越小,上界就越小,也就是收敛速度会越快。

    一句话总结:L2范数不但可以防止过拟合,还可以让我们的优化求解变得稳定和快速

    L1和L2的差别

    为什么一个让绝对值最小,一个让平方最小,会有那么大的差别呢?有两种几何上直观的解析:

    下降速度

           我们知道,L1和L2都是规则化的方式,我们将权值参数以L1或者L2的方式放到代价函数里面去。然后模型就会尝试去最小化这些权值参数。个人理解:这个最小化就像一个下坡的过程,L1和L2的差别就在于这个“坡”不同,如下图:L1就是按绝对值函数的“坡”下降的,而L2是按二次函数的“坡”下降。所以实际上在0附近,L1的下降速度比L2的下降速度要快。所以会非常快得降到0。

    模型空间的限制

           实际上,对于L1和L2规则化的代价函数来说,我们可以写成以下形式:

           也就是说,我们将模型空间限制在w的一个L1-ball 中。为了便于可视化,我们考虑两维的情况,在(w1, w2)平面上可以画出目标函数的等高线,而约束条件则成为平面上半径为C的一个 norm ball 。等高线与 norm ball 首次相交的地方就是最优解:

    彩色线就是优化过程中遇到的等高线,一圈代表一个目标函数值,圆心就是样本观测值(假设一个样本),半径就是误差值,受限条件就是黑色边界(就是正则化那部分),二者相交处,才是最优参数。

           可以看到,L1-ball 与L2-ball 的不同就在于L1在和每个坐标轴相交的地方都有“角”出现,而目标函数的测地线除非位置摆得非常好,大部分时候都会在角的地方相交。注意到在角的位置就会产生稀疏性,例如图中的相交点就有w1=0,而更高维的时候(想象一下三维的L1-ball 是什么样的?)除了角点以外,还有很多边的轮廓也是既有很大的概率成为第一次相交的地方,又会产生稀疏性

           相比之下,L2-ball 就没有这样的性质,因为没有角,所以第一次相交的地方出现在具有稀疏性的位置的概率就变得非常小了。这就从直观上来解释了为什么L1-regularization 能产生稀疏性,而L2-regularization 不行的原因了。

    Note: 不少人会用“模型复杂度”替代上面的“模型空间”。但“模型复杂度”往往容易给人一个误解,认为是一个模型本身长得复杂。例如5次多项式就要比2次多项式复杂,这是错的。因此我更愿意用“模型空间”,强调“复杂度”是候选模型的“数量”,而不是模型本事的“长相”。

    2范最优值不在坐标轴上,不稀疏

    1范可能多个值,没有解,两线之间的所有梯度集合,图像都在线上面。使用次梯度subgradient解决?

    [PRML前三章]

    [大数据分析中的优化算法选讲 刘歆 (AMSS, CAS)]

    一句话总结就是:L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。Lasso在特征选择时候非常有用,而Ridge就只是一种规则化而已。

    不同角度看待规则化项和过拟合

    regularize这个词更多的意思是“使系统化”,“使体系化”,也就是说不要走极端。

           1 监督机器学习

    监督机器学习问题无非就是“minimize your error while regularizing your parameters”,也就是在规则化参数的同时最小化误差。最小化误差是为了让我们的模型拟合我们的训练数据,而规则化参数是防止我们的模型过分拟合我们的训练数据。

        因为参数太多,会导致我们的模型复杂度上升,容易过拟合,也就是我们的训练误差会很小。但训练误差小并不是我们的最终目标,我们的目标是希望模型的测试误差小,也就是能准确的预测新的样本。所以,我们需要保证模型“简单”的基础上最小化训练误差,这样得到的参数才具有好的泛化性能(也就是测试误差也小),而模型“简单”就是通过规则函数来实现的。另外,规则项的使用还可以约束我们的模型的特性,这样就可以将人对这个模型的先验知识融入到模型的学习当中强行地让学习到的模型具有人想要的特性,例如稀疏、低秩、平滑等等。有时候人的先验是非常重要的。前人的经验会让你少走很多弯路,这就是为什么我们平时学习最好找个大牛带带的原因。对机器学习也是一样,如果被我们人稍微点拨一下,它肯定能更快的学习相应的任务。目前这个媒介只能由规则项来担当了。

        2奥卡姆剃刀(Occam's razor)原理

    规则化符合奥卡姆剃刀(Occam's razor)原理。它的思想很平易近人:在所有可能选择的模型中,我们应该选择能够很好地解释已知数据并且十分简单的模型。

        3 Bayes先验解释

    从贝叶斯估计的角度来看,规则化项对应于模型参数w的先验概率。

    从贝叶斯学派角度来看,是加上了一个(参数w的)先验,然后计算后验,形式与1中的完全相同。因为数据中所包含信息的不充足是无法通过各类优化算法弥补的,所以需要引入一些先验信息或者说假设。这些先验信息就体现在正则化项的范数上,L0 L1/2 L1 是稀疏的, L2是光滑的。

    最小二乘回归问题:加2范数正则等价于加了高斯分布的先验,加1范数正则相当于加拉普拉斯分布先验。L1假设的是模型的参数取值满足拉普拉斯分布,L2假设的模型参数是满足高斯分布。简而言之就是:L1是假设参数服从双指数分布,利于保证权值向量的稀疏性;L2是假设参数服从高斯分布,利于防止过拟合。

    Orangeprince 的回答非常学院派,也非常系统。 过拟合表现在训练数据上的误差非常小,而在测试数据上误差反而增大。其原因一般是模型过于复杂,过分得去拟合数据的噪声和outliers. 正则化则是对模型参数添加先验,使得模型复杂度较小,对于噪声以及outliers的输入扰动相对较小。 以正则化项和损失函数都是l_2 norm 为例,下面贴一张上课用的slide.

    我们相当于是给模型参数w 添加了一个协方差为1/alpha 的零均值高斯分布先验。 对于alpha =0,也就是不添加正则化约束,则相当于参数的高斯先验分布有着无穷大的协方差,那么这个先验约束则会非常弱,模型为了拟合所有的训练数据,w可以变得任意大不稳定。alpha越大,表明先验的高斯协方差越小,模型约稳定, 相对的variance也越小。 也正如其他答题者所说, 加入正则化是 在bias和variance之间做一个tradeoff
    [知乎:机器学习中使用「正则化来防止过拟合」到底是一个什么原理?为什么正则化项就可以防止过拟合?]

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

    2范数正则示例

    error func = -lg(p(D|w))

    加先验p(w) = e^(-x^2)*常数

     error func = -lg(p(D|w)p(w)) = -lg(p(D|w))  -lg(p(w)) = -lg(p(D|w))  + λ(x^2) 等价于-lg(p(D|w))  + λ||x||_2

    Lasso(1范数正则)举例
    w^star = argmin_w | y - X w |_2^2 + lambda |w |_1.其实就是如下概率模型的最大后验。
    y = X w + epsilon,epsilon sim N(0, sigma^2),w_i sim DoubleExponential(lambda)如果不对w加拉普拉斯分布的先验,最大后验得到的是
    w^star = argmin_w | y - X w |_2^2

        4 结构风险最小化

    民间还有个说法就是,规则化是结构风险最小化策略的实现,是在经验风险上加一个正则化项(regularizer)或惩罚项(penalty term)。统计学习理论的核心为泛化方程,也就是 mathcal{R}_{ept} le mathcal{R}_{emp} + mathcal{G}_m[mathcal{F}],其中左边表示期望风险,就是你在测试集上的错误率,右边第一项表示经验风险,就是你在训练集上的错误率,右边第二项称之为泛化复杂度,它取决于训练样本数m和模型mathcal{F}。我们知道一般情况下,mathcal{R}_{emp} le mathcal{R}_{ept}训练集上的损失一定小于测试集上的损失。所以,结合起来有:mathcal{R}_{emp}  le mathcal{R}_{ept}  le mathcal{R}_{emp} + mathcal{G}_m[mathcal{F}],如果此时泛化复杂度为0,那么测试集上的效果就和训练集上的效果一致,这时,学习机就具有了绝对的泛化能力。然而实际上,我们很难找到一个模型,其在训练集上损失小并且同时泛化复杂度也小。

    言归正传,我们对于线性模型或者说更为广泛意义下的线性模型(比如前馈神经网络可以看做一种层叠的线性模型),有如下泛化方程:

    从数学角度来看,原来的不适定问题,加入这一项约束可以得到一个较好的解。正则化理论是表明智能推理方法存在的一个信号

    [机器学习中引入L2范数的意义是什么? - 知乎]

        6 偏置方差分解

    经典的是bias-variance decomposition,这种解释更加倾向于直观理解;

    [偏置方差分解Bias-variance Decomposition]
    [知乎:机器学习中使用「正则化来防止过拟合」到底是一个什么原理?为什么正则化项就可以防止过拟合?]

        7 Stein‘s Phenomenon

    正则化导致估计量的Shrinkage(如估计的参数更新时乘以了一个小于1的数),Shrinkage导致variance减小,如果variance的减小可以补偿bias,则正则化可以改善泛化误差。
    皮皮blog

    作为约束的范数惩罚

    我们可以构造一个广义 Lagrange 函数来最小化受约束的函数,即在原始目标函数加上一系列惩罚项。每个惩罚是一个系数之间的乘积,称为Karush– Kuhn– Tucker (Karush– Kuhn– Tucker) 乘子,以及一个表示约束是否满足的函数。 如果我们想约束 Ω(θ) 小于某个常数 k,我们可以构建广义 Lagrange 函数

    解决这个问题需要同时改变 θ 和 α。

    为了洞察约束的影响,我们可以固定 α∗,把这个问题看成只跟 θ 有关的函数:

    使用惩罚强加约束

    可以把参数范数惩罚看作对权重强加的约束。如果 Ω 是 L2 范数,那么权重就是被约束在一个 L2 球中。如果 Ω 是 L1 范数, 那么权重就是被约束在一个 L1 范数限制的区域中。通常我们不知道权重衰减系数 α∗ 约束的区域大小,因为 α∗ 的值不直接告诉我们 k 的值

    不使用惩罚强加约束的原因是惩罚可能导致非凸优化过程而陷入局部极小 (对应于小的 θ)。

    显式约束和重投影

    修改下降算法(如随机梯度下降算法),使其先计算 J(θ) 的下降步,然后将 θ 投影到满足 Ω(θ) < k 的最近点。如果我们知道什么样的 k 是合适的,而不想花时间寻找对应于此 k 处的 α 值。

    重投影的显式约束还对优化过程增加了一定的稳定性。

    Hinton et al. (2012b) 尤其推荐由Srebro and Shraibman (2005) 引入的策略:约束神经网络层的权重矩阵每列的范数,而不是限制整个权重矩阵的Frobenius范数

    [深度学习]

    机器学习规则化的拓展

    由于大部分场景下,我们都是对于单目标值进行训练,即求权值向量的L2值(权值向量的模的大小),然而在多目标值训练时,我们要求解权值矩阵的L2值,怎么求?意义是什么?

    [关于线性模型你可能还不知道的二三事(三、特征值与奇异值的魔力)]

    其它相关资料

    [关于线性模型你可能还不知道的二三事(一、样本)

    关于线性模型你可能还不知道的二三事(二、也谈民主)

    关于线性模型你可能还不知道的二三事(三、特征值与奇异值的魔力)]

    from: http://blog.csdn.net/pipisorry/article/details/52108040

    ref: [wikipedia Regularization (mathematics)]

  • 相关阅读:
    delphi多线程加锁
    delphi中pchar、char、string的定义与区别
    delphi指针
    关于delphi函数的调用顺序问题
    easyexcel
    # springcloud-eureka-feign-mybatis-seata ### 整合步奏
    zuul网关
    ## feign远程调用开启熔断
    eureka2
    Eureka
  • 原文地址:https://www.cnblogs.com/cx2016/p/11425531.html
Copyright © 2011-2022 走看看