机器学习算法中经常使用拉格朗日乘子法求解最优化问题,如PCA,SVM等。有时候还会用到拉格朗日的对偶问题(SVM中通过求解对偶问题得到原始问题的解)。这几天看了周志华西瓜书的附录和凸优化这本书的相关章节,现对拉格朗日及其对偶问题总结如下。
拉格朗日函数及KKT条件
优化问题都可以化成以下标准形式:
minf(x) s.t.hi(x)=0i=1,2,3,⋯,p gj(x)≤0j=1,2,3,⋯,q为简化问题,现将等式约束和不等式约束分开考虑
一个等式约束
在高维空间中,一组等式约束确定的是一个超平面。假如只有一个等式约束h(x)=0,原始空间维数是n,则h(x)=0确定的就是一个n−1维的超平面。假设只有一个等式约束。即:
minf(x) s.t.h(x)=0那么,存在一下两条性质:
- 点x在超平面h(x)=0上的梯度方向垂直于超平面方向
- 如果f(x)的最优值在x∗处取得,则f(x)在该点的梯度必垂直与超平面h(x)=0
要理解第一点,需要理解梯度的概念,梯度指明了一个方向,沿着这个方向走函数值上升最快。假如我们的函数是f(x)=(x1−2)2+x22,函数梯度是∂f(x)∂x=[∂f(x)∂x1,∂f(x)∂x2]T=[2(x1−2),2x2]T,即梯度向量与圆心(2,0)到(x1,x2)的向量平行,所以任意一点的梯度在该点处与圆垂直。
下面图形可方便理解:
这个图形中一圈一圈的是等值线,越往外函数值越大,在(2,1)这个点,求得的梯度是(0,2)T,垂直于圆,沿着(0,2)T这个方向函数值上升最快。
对于第二点,我们假设我们的超平面是二维平面上的一条直线h(x)=x1+x2+√2=0,我们的目标函数f(x)=x21+x22,则可以得到以下图形:
f(x)在直线与圆相切时的切点处取得最小值,这是直线的梯度方向如红色箭头所示,圆的梯度如蓝色箭头所示。
通过以上两条性质我们可知,当函数在超平面h(x)=0 上一点x∗处取得最小值时,∇f(x∗) 与 ∇h(x∗)方向相反或相同,如果用数学的语言来描述这个结论就是,存在一个λ,使得:
∇f(x∗)+λ∇h(x∗)=0我们定义拉格朗日函数:
L(x,λ)=f(x)+λg(x)上述等式实际上就是:
∂L(x,λ)∂x=∇f(x)+λ∇h(x)=0如果再对λ求偏导并令其等于0,实际就得到了原始的等式约束:
∂L(x,λ)∂λ=h(x)=0所以等式约束问题(1)可以通过联立(5)(6)求解
多个等式约束
当存在多个等式约束时,拉格朗日函数定义为:
L(x,λ)=f(x)+∑iλihi(x)它对x求偏导后有:
∂L(x,λ)∂x=∇f(x)+∑iλi∇hi(x)=0(8)和(5)虽然看起来不一样,但同样可以用解释(5)的方式来解释(8)。实际上,每个等式确定的超平面梯度方向的加和必定与多个等式确定的超平面垂直。我们可以举个简单例子来验证这一点,比如我们有两个等式,两个等式确定的平面都是一个二维面,那么这两个等式联合确定的超平面就是条直线,由高中知识(不知道的去翻书)可知,这条直线垂直于这两个平面的法向量所确定的平面。
也就是说多个等式约束问题,同样可以通过联立方程来解。
不等式约束
假设只有不等式约束:
minf(x) s.t.gj(x)≤0j=1,2,3,⋯,q其拉格朗日函数形式是:
L(x,μ)=f(x)+∑jμjgj(x)多个不等式构成的可行域不再是一个超平面,而是一个体。这样的话令f(x)取最优的点x∗有两种情况:
- x∗出现在体中
- x∗出现在体表面上
如果x∗出现在体中,因为对于体中的任意一点x,都有gi(x)<0,故约束不起作用,所以函数f(x)的最优值可以直接通过求导得到,即可令μ=0,然后然后令∇L(x,μ)=0求得。
如果x∗出现在体的表面上,则必有一个或多个(如果x∗出现在交点处)不等式等号成立,其他等号不成立,对于等号成立的部分,问题转化成等式约束问题,对于等号不成立的部分,约束条件可以忽略。
对于等式成立的部分,μ一定大于0,即f(x)在x∗处的梯度方向与超平面在x∗处的方向相反,为什么?
因为梯度的方向是函数值升高的方向,所以超平面的梯度方向一定向外(体内gi(x)<0,体表gi(x)=0),而f(x)的梯度一定向里, 因为x∗在体表取得,体内f(x)>f(x∗)
综上两种情况有:
{μi≥0 gi(x)≤0 μigi(x)=0KKT 条件
前两节我们分别对等式和不等式进行了分析,现在我们考虑这两种约束都存在的情况。对于标准形式的优化问题(1),拉格朗日函数为:
L(x,λ,μ)=f(x)+p∑i=1λihi(x)+q∑j=1μjgi(x)则优化问题(1)取得最优值时须满足KKT最优性条件:
{∇L(x∗,λ,μ)=∇f(x∗)+∑pi=1λi∇hi(x∗)+∑qj=1μj∇gi(x∗)=0 hi(x∗)=0 μj≥0 gj(x)≤0 μjgj(x)=0拉格朗日对偶
对偶函数的定义
对于式(12)所示的拉格朗日函数,其对偶函数定义为:
g(λ,μ)=infx L(x,λ,μ)=infx {f(x)+p∑i=1λihi(x)+q∑j=1μjgj(x)}其中inf表示下界的意思。因为hi(x)=0,gj(x)≤0,故对于μ≥0,λ总有:
g(λ,μ)≤f(x∗)≤f(x)即对偶函数给出了问题(1)的一个下界。
对偶问题定义
既然对偶函数(14)给出了原始问题(1)的一个下界,那我们自然就想知道这个下界到底有多好,这就是拉格朗日对偶问题:
maxg(λ,μ) s.t.μ≥0下面我们通过两个例子讲解下怎么推导拉格朗日对偶问题:
1. 线性方程组的最小二乘解
minxTx s.t.Ax=b该问题的拉格朗日函数是:
L(x)=xTx+λT(Ax−b)从前面的讲解知道,这种只有等式约束的问题可以通过令∇L(x)=0求解,而且L(x)是一个二次凸函数,其有唯一解,即:
∇L(x)=2xT+λTA=0→x=−12ATλ关于矩阵求导方法,请参考矩阵求导
将x=−12ATλ代入(18)即可得到原始问题的拉格朗日对偶函数:
g(λ)=−14λTAATλ−bTλ那么,拉格朗日对偶问题为:
max −14λTAATλ−bTλ2. 标准形式的线性规划
mincTx s.t.Ax=b x≥0该问题的拉格朗日函数是:
L(x,λ,μ)=cTx+λT(Ax−b)−μTx=(c+ATλ−μ)Tx−λTb这是一个线性函数,只有在c+ATλ−μ=0时,L(x,λ,μ)才有平凡的下界−λTb,否则下界为−∞。
故阿朗格朗日对偶问题是:
max−λTb s.t.c+ATλ−μ=0 μ≥0对偶问题求解总结
求解对偶问题,就是通过KKT条件(线性方程最小二乘解问题)或者直接观察(标准线性规划问题)将拉格朗日函数中的原始问题的参数消掉,只剩下拉格朗日乘子的过程。同时要满足KKT条件。
强弱对偶
我们费了这么半天劲绕到对偶问题上到底是为了啥?
因为原始问题有时候往往不好解,而对偶问题一定是一个凸优化问题(式16中极大化目标是凹函数,约束集是凸集),好解。
特别地,当对偶问题满足强对偶性时,对偶问题的最优解即是原始问题的最优解。假设对偶问题的最优解为 d∗,原始问题的最优解为p∗,则总有:
d∗≤p∗如果上式中等号成立,则满足强对偶性,即:
d∗=p∗否则认为其满足弱对偶性。
Slater约束准则
一般情况下,强对偶性不成立,但是如果原问题是凸问题,即是如下形式:
minf(x) s.t.gi(x)≤0,i=1,2,⋯,m Ax=b其中f,gi(x)是凸函数。并且满足一些约束准则,如Slater准则时,强对偶性成立。
Slater准则:当存在一个相对内点使得所有gi(x)<0严格成立时,强对偶性成立。如果gi(x)中是仿射函数(f(x)=cTx+t这种函数),则不需要限制。