logo资料库

机器学习中的范数规则化之L0、L1与L2范数.pdf

第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
资料共15页,剩余部分请下载后查看
机器学习中的范数规则化之(一)L0、L1 与 L2 范数 监督机器学习问题就是“minimizeyour error while regularizing your parameters”,也就是在 规则化参数的同时最小化误差。最小化误差是为了让我们的模型拟合我们的训练数据,而规 则化参数是防止我们的模型过分拟合我们的训练数据。 然而参数太多,会导致我们的模型复杂度上升,容易过拟合,也就是我们的训练误差会 很小。但训练误差小并不是我们的最终目标,我们的目标是希望模型的测试误差小,也就是 能准确的预测新的样本。所以,我们需要保证模型“简单”的基础上最小化训练误差,这样得 到的参数才具有好的泛化性能(也就是测试误差也小),而模型“简单”就是通过规则函数来 实现的。 另外,规则项的使用还可以约束我们的模型的特性。这样就可以将人对这个模型的先验 知识融入到模型的学习当中,强行地让学习到的模型具有人想要的特性,例如稀疏、低秩、 平滑等等。要知道,有时候人的先验是非常重要的。对机器学习也是一样。 还有几种角度来看待规则化的。规则化符合奥卡姆剃刀(Occam's razor)原理:在所有可 能选择的模型中,我们应该选择能够很好地解释已知数据并且十分简单的模型。从贝叶斯估 计的角度来看,规则化项对应于模型的先验概率。民间还有个说法就是,规则化是结构风险 最小化策略的实现,是在经验风险上加一个正则化项(regularizer)或惩罚项(penalty term)。 一般来说,监督学习可以看做最小化下面的目标函数: 其中,第一项 L(yi,f(xi;w))衡量我们的模型(分类或者回归)对第 i 个样本的预测值 f(xi;w) 和真实的标签 yi 之前的误差。因为我们的模型是要拟合我们的训练样本的,所以我们要求 这一项最小,也就是要求我们的模型尽量的拟合我们的训练数据。但要保证训练误差最小和 模型测试误差小,所以我们需要加上第二项,也就是对参数 w 的规则化函数 Ω(w)去约束我 们的模型尽量的简单。 其实,机器学习的大部分带参模型都和这个不但形似,而且神似。是的,其实大部分无 非就是变换这两项而已。对于第一项 Loss 函数,如果是 Square loss,那就是最小二乘了; 如果是 Hinge Loss,那就是著名的 SVM 了;如果是 exp-Loss,那就是牛逼的 Boosting 了; 如果是 log-Loss,那就是 Logistic Regression 了;还有等等。不同的 loss 函数,具有不同的 拟合特性,得就具体问题具体分析的。
规则化函数 Ω(w)也有很多种选择,一般是模型复杂度的单调递增函数,模型越复杂, 规则化值就越大。比如,规则化项可以是模型参数向量的范数。然而,不同的选择对参数 w 的约束不同,取得的效果也不同,但我们在论文中常见的都聚集在:零范数、一范数、二范 数、迹范数、Frobenius 范数和核范数等等。不同的范数其作用和意义不同,下面将详细介 绍。 一、L0 范数与 L1 范数 L0 范数是指向量中非 0 的元素的个数。如果我们用 L0 范数来规则化一个参数矩阵 W 的话,就是希望 W 的大部分元素都是 0。就是让参数 W 是稀疏的。 L1 范数是指向量中各个元素绝对值之和,又称“稀疏规则算子”(Lasso regularization)。 为什么 L1 范数会使权值稀疏?因为“L1 范数是 L0 范数的最优凸近似”。完整的回答是: 任何的规则化算子,如果他在 Wi=0 的地方不可微,并且可以分解为一个“求和”的形式,那 么这个规则化算子就可以实现稀疏。这说是这么说,W 的 L1 范数是绝对值,|w|在 w=0 处 是不可微,但这还是不够直观。这里因为我们需要和 L2 范数进行对比分析。关于 L1 范数 的直观理解见第二节。 既然 L0 可以实现稀疏,为什么不用 L0,而要用 L1 呢?个人理解一是因为 L0 范数很 难优化求解(NP 难问题),二是 L1 范数是 L0 范数的最优凸近似,而且它比 L0 范数要容 易优化求解。 一句话总结:L1 范数和 L0 范数可以实现稀疏,L1 因具有比 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 种因素分析更加容易。 二、L2 范数 L2 范数:||W||2,又称“岭回归”(Ridge Regression),“权值衰减 weight decay”。L2 范 数能改善机器学习的过拟合问题(过拟合就是模型训练时候的误差很小,但在测试的时候误 差很大,也就是我们的模型复杂到可以拟合到我们的所有训练样本了,但在实际预测新的样 本的时候,误差很大。通俗的讲就是应试能力很强,实际应用能力很差)。例如下图所示(来 自 Ng 的 course): 上面的图是线性回归,下面的图是 Logistic 回归,也可以说是分类的情况。从左到右分 别是欠拟合(underfitting,也称 High-bias)、合适的拟合和过拟合(overfitting,也称 High variance)三种情况。 可以看到,如果模型复杂(可以拟合任意的复杂函数),它可以让我们的模型拟合所有 的数据点,也就是基本上没有误差。对于回归来说,就是我们的函数曲线通过了所有的数据 点,如上图右。对分类来说,就是我们的函数曲线要把所有的数据点都分类正确,如下图右。 这两种情况很明显过拟合了。
L2 范数是指向量各元素的平方和然后求平方根。以 L2 范数的规则项||W||2 最小,可以 使得 W 的每个元素都很小,都接近于 0,但与 L1 范数不同,它不会让它等于 0,而是接近 于 0,这两者有很大的区别。 而越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象。为什么越小 的参数说明模型越简单?个人理解是:限制了参数很小,实际上就限制了多项式某些分量的 影响很小(看上面线性回归的模型的那个拟合的图),这样就相当于减少参数个数。 一句话总结:通过 L2 范数,我们可以实现了对模型空间的限制,从而在一定程度上避 免了过拟合。 L2 范数的好处是什么呢?分析如下: 1)学习理论的角度: 从学习理论的角度来说,L2 范数可以防止过拟合,提升模型的泛化能力。 2)优化计算的角度: 从优化或者数值计算的角度来说,L2 范数有助于处理 condition number 不好的情况下 矩阵求逆很困难的问题。 优化有两大难题: 1)局部最小值优化需要寻找全局最小值,如果局部最小值太多,优化算法就很容易陷 入局部最小。
2)ill-condition 病态问题。假设我们有个方程组 AX=b,我们需要求解 X。如果 A 或者 b 稍微的改变,会使得 X 的解发生很大的改变,那么这个方程组系统就是 ill-condition 的。 病态问题,具体举例如下: 左边第一行假设是我们的 AX=b,第二行稍微改变下 b,得到的 x 和没改变前的差别很 大,第三行稍微改变下系数矩阵 A,结果的变化也很大。换句话来说,这个系统的解对系数 矩阵 A 或者 b 太敏感了。 一般系数矩阵 A 和 b 是从实验数据里面估计得到的,是存在误差的。如果系统这个误 差太敏感,以至于我们的解的误差更大,那这个解就不优。所以这个方程组系统就是 ill-conditioned 病态的,相反,右边是 well-condition 的。 对于一个 ill-condition 的系统,我的输入稍微改变下,输出就发生很大的改变,表明系 统不能实用。所以如果一个系统是 ill-conditioned 病态的,我们就会对它的结果产生怀疑, 需要一个标准来衡量一定程度、有选择的相信和怀疑这个系统。 condition number 就是拿来衡量 ill-condition 系统的可信度的。condition number 衡量的 是输入发生微小变化的时候,输出会发生多大的变化,也就是系统对微小变化的敏感度。 condition number 值小的就是 well-conditioned 的,大的就是 ill-conditioned 的。 如果方阵 A 是非奇异的,那么 A 的 conditionnumber 定义为: 也就是矩阵 A 的 norm 乘以它的逆的 norm,具体的值根据选择的 norm 来决定。如果方 阵 A 是奇异的,那么 A 的 condition number 就是正无穷大了。 实际上,每一个可逆方阵都存在一个 condition number。但如果要计算它,我们需要先 知道这个方阵的 norm(范数)和 Machine Epsilon(机器的精度)。
范数的广义意义是衡量一个矩阵的大小,对于 condition number 来说,范数可以用来衡 量一个矩阵 A 或者向量 b 变化的时候,其解 x 变化的大小。 经过比较简单的证明(略),对于 AX=b,我们可以得到以下的结论: 上式解释了解 x 的相对变化和 A 或者 b 的相对变化之间的的关系,其中 k(A)的值就相 当于倍率,相当于 x 变化的界。 一句话总结 condition number:condition number 是一个矩阵(或者它所描述的线性系统) 的稳定性或者敏感度的度量,如果一个矩阵的 condition number 在 1 附近,那么它就是 well-conditioned 的,如果远大于 1,那么它就是 ill-conditioned 的。 从优化或者数值计算的角度来说,L2 范数有助于处理 condition number 不好的情况下 矩阵求逆很困难的问题。因为目标函数如果是二次的,对于线性回归来说,那实际上是有解 析解的,求导并令导数等于零即可得到最优解为: 然而,如果当我们的样本 X 的数目比每个样本的维度还要小的时候,矩阵 XTX 将会不 是满秩的,也就是 XTX 会变得不可逆,w*将会有无穷多个解(方程组的个数小于未知数的 个数)。即数据不足以确定一个解,如果我们从所有可行解里随机选一个的话,很可能并不 是真正好的解,即过拟合。 但如果加上 L2 规则项,就变成了下面这种情况,就可以直接求逆了: 求解通过解线性方程组的方式(例如高斯消元法)来实现。考虑没有规则项的时候,也 就是 λ=0 的情况,如果矩阵 XTX 的 condition number 很大的话,解线性方程组就会在数值 上相当不稳定,而这个规则项的引入则可以改善 condition number。 另外,如果使用迭代优化的算法,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。解释如图: 左图,取最优解 w*的地方,如果函数 f(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*周围是非 常平坦的情况的话,我们有可能会找到一个很远的点。但如果“强凸”的话,就能对情况做一 些控制,我们就可以得到一个更好的近似解,控制的好坏取决于 strongly convex 性质中的常 数 α 的大小。 如果要获得 strongly convex 怎么做?最简单的就是往里面加入一项(α/2)*||w||2。 实际上,在梯度下降中,目标函数收敛速率的上界实际上是和矩阵 XTX 的 condition number 有关,XTX 的 condition number 越小,上界就越小,也就是收敛速度会越快。 一句话总结吧:L2 范数不但可以防止过拟合,还可以让我们的优化求解变得稳定和快 速。 L1 和 L2 为什么一个让绝对值最小,一个让平方最小,会有那么大的差别呢?我看到的 有两种几何上直观的解析: 1)下降速度: L1 和 L2 都是规则化的方式,我们将权值参数以 L1 或者 L2 的方式放到代价函数里面 去。然后模型就会尝试去最小化这些权值参数。而这个最小化就像一个下坡的过程,L1 和 L2 的差别就在于这个“坡”不同。 如下图:L1 就是按绝对值函数的“坡”下降的,而 L2 是按二次函数的“坡”下降。所以实 际上在 0 附近,L1 的下降速度比 L2 的下降速度要快。所以会非常快得降到 0。(个人理解, 或许不准确)
分享到:
收藏