在支持向量机和最大熵模型中都会用到拉格朗日对偶性,主要为解决约束最优化问题,通过将原始问题转换为对偶问题求解。为方便理解,遂记录下简单的概念的结论,有理解不当的地方望多提意见~
先从最简单的求函数最小值开始说起:
求 f(x) 的最小值时 x 的取值, f(x) 在 Rn 上连续可微。这时候我们对 f(x) 求导令导数为0就能取到极值了。若此时加入约束如下:
其中 f(x),ci(x),hj(x)在Rn 上连续可微我们称此约束最优化为原始问题,也是拉格朗日对偶性需要解决的问题。
此时我们直接求导是无法解决了,要是可以将约束条件转换为未知变量或许就可以找到答案了。
为了求解原始问题,我们首先引入广义拉格朗日函数(generalized Lagrange function):
证明:假设某个 x 不满足原始问题的约束条件,即存在某个 i 使得 ci(x)>0 或者存在某个 j 使得 hj(x)=0 那么就有:
θP(x)=maxα,β:αi≥0[f(x)+∑i=1kαici(x)+∑j=1lβjhj(x)]=+∞
因为若某个 i 使约束 ci(x)>0 ,则可令 αi→+∞ ;
若某个 j 使 hj(x)≠0 ,则可令 βj 使 βjhj(x)→+∞ ,而将其余各 αi,βj 均取为 0
所以如果考虑极小化问题:
我们再定义:
若原始问题和对偶问题都有最优值,那么
证明:
对任意的 x,α,β 有
minxL(x,α,β)≤L(x,α,β)≤maxα,β:αi≥0L(x,α,β)
由于原始问题和对偶问题均有最优值,所以:
minxL(x,α,β)≤maxα,β:αi≥0L(x,α,β)
即
d∗=maxα,βminxL(x,α,β)≤minxmaxα,β:αi≥0L(x,α,β)=p∗
也就是说原始问题的最优值不小于对偶问题的最优值,但是我们要通过对偶问题来求解原始问题,就必须使得原始问题的最优值与对偶问题的最优值相等,于是可以得出下面的推论:
设 x∗和α∗,β∗ 分别是原始问题和对偶问题的可行解并且 d∗=p∗ 则 x∗和α∗,β∗ 分别是原始问题和对偶问题的最优解。
对偶问题跟原始问题可以看成本来是两个问题,因为优化的顺序不同而会得出两个不一定相关的值(但是 minxmaxyf(x,y)≥maxymaxxf(x,y) 还是成立的,直观理解的话高中经常用的二次函数就可以了)。
两者的差值就是duality gap,描述了我用另一种方式刻画问题的时候所造成的误差,强对偶的情况下最优值没有差别。
在最优点处将会满足KKT 条件,但是KKT条件本身并不需要问题满足强对偶。关于KKT条件什么时候不满足,有一种另外的理解是他要求各个函数的梯度张成足够大的空间(因为KKT的最后一条本质上是一个Ax=0的问题)。
所以,当原始问题和对偶问题的最优值相等: d∗=p∗ 时,可以用求解对偶问题来求解原始问题(当然是对偶问题求解比直接求解原始问题简单的情况下),但是到底满足什么样的条件才能使 d∗=p∗ 呢,这就是下面要阐述的 KKT 条件。
对原始问题和对偶问题,假设函数 f(x)和ci(x) 是凸函数, hj(x) 为仿射函数,并且不等式约束 ci(x) 是严格可行的,则 x∗和α∗,β∗ 分别是原始问题和对偶问题的解的充要条件是 x∗,α∗,β∗ 满足下面的Karush-Kuhn-Tucker(KKT)条件:
∇xL(x∗,α∗,β∗)=0
∇αL(x∗,α∗,β∗)=0
∇βL(x∗,α∗,β∗)=0
α∗ici(x∗)=0,i=1,2,⋯,k
ci(x∗)≤0,i=1,2,⋯,k
α∗i≥0,i=1,2,⋯,k
hj(x∗)=0,j=1,2,⋯,l
关于KKT 条件的理解:前面三个条件是对于各个变量的偏导数为0(这就解释了一开始为什么假设三个函数连续可微,如果不连续可微的话,这里的偏导数存不存在就不能保证),后面四个条件就是原始问题的约束条件以及拉格朗日乘子需要满足的约束。
仿射函数
f(x)=Ax+b
仿射函数就是一个线性函数,其输入是n维向量,参数 A可以是常数,也可以是m×n的矩阵,b可以是常数,也可以是m维的列向量,输出是一个m维的列向量。在几何上,仿射函数是一个线性空间到另一个线性空间的变换。
拉格朗日对偶性的求解分为两个步骤: