监督机器学习问题无非就是“minimize your error while regularizing your parameters”,也就是在规则化参数的同时最小化误差。最小化误差是为了让我们的模型拟合我们的训练数据,而规则化参数是防止我们的模型过分拟合我们的训练数据。因为参数太多,会导致我们的模型复杂度上升,容易过拟合,也就是我们的训练误差会很小。但训练误差小并不是我们的最终目标,我们的目标是希望模型的测试误差小,也就是能准确的预测新的样本。所以,我们需要保证模型“简单”的基础上最小化训练误差,这样得到的参数才具有好的泛化性能(也就是测试误差也小),而模型“简单”就是通过规则函数来实现的。另外,规则项的使用还可以约束我们的模型的特性。这样就可以将人对这个模型的先验知识融入到模型的学习当中,强行地让学习到的模型具有人想要的特性,例如稀疏、低秩、平滑等等。
规则化符合奥卡姆剃刀(Occam's razor)原理。不过它的思想很平易近人:在所有可能选择的模型中,我们应该选择能够很好地解释已知数据并且十分简单的模型。
从贝叶斯估计的角度来看,规则化项对应于模型的先验概率。
统计学习角度
统计学习理论的核心为泛化方程,也就是
\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,那么测试集上的效果就和训练集上的效果一致,这时,学习机就具有了绝对的泛化能力。然而实际上,我们很难找到一个模型,其在训练集上损失小并且同时泛化复杂度也小。
言归正传,我们对于线性模型或者说更为广泛意义下的线性模型(比如前馈神经网络可以看做一种层叠的线性模型),有如下泛化方程:
\mathcal{R}_{ept} \le \mathcal{R}_{emp} + (RL)^{K-1}ln^{\frac{3}{2}(K-1)}(m)\sqrt{\frac{R^2N^2}{m}} + \sqrt{\frac{ln(\delta^{-1})}{m}}
其中:
R=||\vec w||_l
,
L为神经为神经网络激活函数的李普希兹系数,N为样本的最大范数,m 为训练集样本数,K为神经网络层数,其中,一般的感知器可看做 1 层神经网络(K=1)。依据我们上述对统计泛化的描述,我们知道右边的第二项应该越小越好,越小的话,学习机泛化能力越强,测试集上的效果就越有保证!所以我们必须最小化 R,也就是最小化
||\vec w||_l
,这就是从统计泛化角度解释了权系数范数的作用。
最小化权系数范数
\min ||\vec w||_l
的统计学习本质是提高泛化能力。
求解可逆性角度,条件数,解的稳定性
线性回归有 closed-form 解法,例如 如下是 最小二乘法(严谨点是 ORDINARY least square,简写OLS) 求解线性回归时用到的 mse loss
L = \frac{1}{N}|Y - XW|^2
由于 L 是凸的,所以直接求导可以得出W的最优解,
W = (X^TX)^{-1}X^TY
这里需要求个 逆, 然而若干年前的统计学家在实际操作中经常发现由于ill-conditioned problem**这个逆求不了, 也就是说下面这个行列式是等于0的,
|X^TX| = 0
那不妨稍稍修整一下,得到了下面这个L
L = \frac{1}{N}|Y-XW|^2 + \lambda|W|^2
就是加了个 L2 norm,然后 L还是凸的,继续求导得到W如下
W = (X^TX - \lambda I)^{-1}X^TY
这样就好比是在之前行列式等于0的那个矩阵的对角线上减去了
\lambda
,希望可以求逆,可得到伪逆解。
规则化是结构风险最小化策略的实现,是在经验风险上加一个正则化项(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范数会使权值稀疏?有人可能会这样给你回答“它是L0范数的最优凸近似”。实际上,还存在一个更美的回答:任何的规则化算子,如果他在Wi=0的地方不可微,并且可以分解为一个“求和”的形式,那么这个规则化算子就可以实现稀疏。这说是这么说,W的L1范数是绝对值,|w|在w=0处是不可微,但这还是不够直观。这里因为我们需要和L2范数进行对比分析。
既然L0可以实现稀疏,为什么不用L0,而要用L1呢?个人理解
一是因为L0范数很难优化求解(NP难问题),
二是L1范数是L0范数的最优凸近似,而且它比L0范数要容易优化求解。
所以大家才把目光和万千宠爱转于L1范数。
OK,来个一句话总结: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个wi都非0,医生面对这1000种因素,累觉不爱。
二、L2范数
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)学习理论的角度:
从学习理论的角度来说,L2范数可以防止过拟合,提升模型的泛化能力。
2)优化计算的角度:
从优化或者数值计算的角度来说,L2范数有助于处理 condition number不好的情况下矩阵求逆很困难的问题。
优化有两大难题,一是:局部最小值,二是: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尽量输出我们期待的值,例如0。那假如我们遇到一个样本x’,这个样本和训练样本x差别很小,面对他,系统本应该输出和上面的y差不多的值的,例如0.00001,最后却给我输出了一个0.9999,这很明显不对呀。就好像,你很熟悉的一个人脸上长了个青春痘,你就不认识他了,那你大脑就太差劲了,哈哈。所以如果一个系统是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(机器的精度)。为什么要范数?范数就相当于衡量一个矩阵的大小,我们知道矩阵是没有大小的,当上面不是要衡量一个矩阵A或者向量b变化的时候,我们的解x变化的大小吗?所以肯定得要有一个东西来度量矩阵和向量的大小吧?对了,他就是范数,表示矩阵大小或者向量长度。OK,经过比较简单的证明,对于AX=b,我们可以得到以下的结论:
也就是我们的解x的相对变化和A或者b的相对变化是有像上面那样的关系的,其中k(A)的值就相当于倍率,看到了吗?相当于x变化的界。
对condition number来个一句话总结:condition number是一个矩阵(或者它所描述的线性系统)的稳定性或者敏感度的度量,如果一个矩阵的condition number在1附近,那么它就是well-conditioned的,如果远大于1,那么它就是ill-conditioned的,如果一个系统是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周围是非常平坦的情况的话,我们有可能会找到一个很远的点。但如果我们有“强凸”的话,就能对情况做一些控制,我们就可以得到一个更好的近似解。至于有多好嘛,这里面有一个bound,这个 bound 的好坏也要取决于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。不过我觉得这里解释的不太中肯,当然了也不知道是不是自己理解的问题。
L1在江湖上人称Lasso,L2人称Ridge。不过这两个名字还挺让人迷糊的,看上面的图片,Lasso的图看起来就像ridge,而ridge的图看起来就像lasso。
2)模型空间的限制:
实际上,对于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 不行的原因了。
因此,一句话总结就是:L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。Lasso在特征选择时候非常有用,而Ridge就只是一种规则化而已。
三、核范数
核范数 ||W||* 是指矩阵奇异值的和,英文称呼叫Nuclear Norm。这个相对于上面火热的L1和L2来说,可能大家就会陌生点。那它是干嘛用的呢?霸气登场:约束Low-Rank(低秩)。OK,OK,那我们得知道Low-Rank是啥?用来干啥的?
我们先来回忆下线性代数里面“秩”到底是啥?举个简单的例子吧:
对上面的线性方程组,第一个方程和第二个方程有不同的解,而第2个方程和第3个方程的解完全相同。从这个意义上说,第3个方程是“多余”的,因为它没有带来任何的信息量,把它去掉,所得的方程组与原来的方程组同解。为了从方程组中去掉多余的方程,自然就导出了“矩阵的秩”这一概念。
既然秩可以度量相关性,而矩阵的相关性实际上有带有了矩阵的结构信息。如果矩阵之间各行的相关性很强,那么就表示这个矩阵实际可以投影到更低维的线性子空间,也就是用几个向量就可以完全表达了,它就是低秩的。所以我们总结的一点就是:如果矩阵表达的是结构性信息,例如图像、用户-推荐表等等,那么这个矩阵各行之间存在这一定的相关性,那这个矩阵一般就是低秩的。
如果X是一个m行n列的数值矩阵,rank(X)是X的秩,假如rank (X)远小于m和n,则我们称X是低秩矩阵。低秩矩阵每行或每列都可以用其他的行或列线性表出,可见它包含大量的冗余信息。利用这种冗余信息,可以对缺失数据进行恢复,也可以对数据进行特征提取。
好了,低秩有了,那约束低秩只是约束rank(w)呀,和我们这节的核范数有什么关系呢?他们的关系和L0与L1的关系一样。因为rank()是非凸的,在优化问题里面很难求解,那么就需要寻找它的凸近似来近似它了。对,你没猜错,rank(w)的凸近似就是核范数||W||*。
四、规则化参数的选择
现在我们回过头来看看我们的目标函数:
里面除了loss和规则项两块外,还有一个参数λ。它也有个霸气的名字,叫hyper-parameters(超参)。你不要看它势单力薄的,它非常重要。它的取值很大时候会决定我们的模型的性能,事关模型生死。它主要是平衡loss和规则项这两项的,λ越大,就表示规则项要比模型训练误差更重要,也就是相比于要模型拟合我们的数据,我们更希望我们的模型能满足我们约束的Ω(w)的特性。反之亦然。举个极端情况,例如λ=0时,就没有后面那一项,代价函数的最小化全部取决于第一项,也就是集全力使得输出和期待输出差别最小,那什么时候差别最小啊,当然是我们的函数或者曲线可以经过所有的点了,这时候误差就接近0,也就是过拟合了。它可以复杂的代表或者记忆所有这些样本,但对于一个新来的样本泛化能力就不行了。毕竟新的样本会和训练样本有差别的嘛。
1.png
L1范数正则项使解稀疏的解释
L2正则项使解收缩的解释
如何让神经网络收敛得更快.pdf
矩阵求导.pdf
L1正则化的另一个新意在于引入了稀疏性,从而给模型带来了解释性(Model interpretability),即根据非零系数所对应的基的实际意义来解释模型的实际意义
稀疏表达的作用:
1. 稀疏表达的意义在于降维,且这个降维并不局限于节省空间,稀疏表达后的特征向量各维之间的依赖性变低,更为独立。
2. 稀疏表达求取时所加的稀疏约束,使得计算后得到的各个“基”对于解释数据具有相同的重要性,其目的正是尝试找出隐藏在数据背后的解释因子。
在Machine Learning,Signal/Image Processing等众多领域,很多反问题(Inverse Problem)都是不适定/病态的(under-determined, ill-posed)。如
y = Ax + \varepsilon, x \in \mathbb{R}^n, A:\mathbb{R}^n \to \mathbb{R}^m, y\in\mathbb{R}^m, m 为了能获得比较好的解,人们需要x的先验知识。而稀疏性便是众多先验知识中,最为主要的一种。这种降维主要表现于虽然原始信号x的维度很高,但实际的有效信息集中在一个低维的空间里。这种性质使得不适定的问题变得适定(well-posed),进而获得“好的解”成为可能。 [1] E. J. Candès, J. Romberg, T. Tao, Robust uncertainty principles: Exact signal reconstruction from highly incomplete frequency information**, IEEE Transactions on Information Theory 梯度下降为什么不适合求解稀疏问题? 降维和稀疏表达的本质区别 inverse problem方面,sparse presentation往往有更加优异的表现.
[2] D. L. Donoho, Compressed Sensing, IEEE Transactions on Information Theory
稀疏问题一般加一范数正则项,而一范数不可导,所以就要用次梯度来替代。
L1虽然是convex但是不differentiable(不可导)。所以无法直接按照常规的descent来做。比如steepest descent,你需要gradient。
解决L1的方法有很多。比较popular的包括Lasso,把L1 constraint(或者sparse constraint)做成一个regularizer。proximal descent是基于gradient descent但是又兼顾了L1 regularizer。
降维是将原space里的数据在某一个subspace里进行表达;而稀疏表达则relax了subspace这一条,变成在a union of subspaces里进行表达。
Sparse Model相对于Subspace Model(比如降维)而言,更加relaxed,因而具有更强的表达能力。再加上自然信号,天然具备可稀疏性,所以在很多问题中,Sparsity是一个更有效的regularizier。
作者:jiandanjinxin
链接:https://www.jianshu.com/p/8025b6c9f6fa
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。