引言
在支持向量机和最大熵模型中都会用到拉格朗日对偶性,主要为解决约束最优化问题,通过将原始问题转换为对偶问题求解。为方便理解,遂记录下简单的概念的结论,有理解不当的地方望多提意见~
1. 原始问题
先从最简单的求函数最小值开始说起:
minx∈Rnf(x)
min_{boldsymbol{x} in mathbf{R}^n}f(boldsymbol{x})
求 f(x) f(x)的最小值时 x x的取值,f(x)f(x)在 Rn R^n上连续可微。这时候我们对 f(x) f(x)求导令导数为0就能取到极值了。若此时加入约束如下:
minx∈Rnf(x)
min_{boldsymbol{x} in mathbf{R}^n}f(boldsymbol{x})
s.t.ci(x)≤0,i=1,2,⋯,khj(x)=0,j=1,2,⋯,l
begin{align}mathbb{s.t.}quad &c_i(boldsymbol{x}) le 0,quad i=1,2,cdots,k\&h_j(boldsymbol{x})=0,quad j=1,2,cdots,lend{align}
其中 f(x),ci(x),hj(x)在Rn f(x),c_i(x),h_j(x)在R^n上连续可微我们称此约束最优化为原始问题,也是拉格朗日对偶性需要解决的问题。 此时我们直接求导是无法解决了,要是可以将约束条件转换为未知变量或许就可以找到答案了。
2. 拉格朗日函数
为了求解原始问题,我们首先引入广义拉格朗日函数(generalized Lagrange function):
L(x,α,β)=f(x) ∑i=1kαici(x) ∑j=1lβjhj(x)
L(boldsymbol{x},boldsymbol{alpha},boldsymbol{beta})=f(boldsymbol{x}) sum_{i=1}^k alpha_ic_i(boldsymbol{x}) sum_{j=1}^lbeta_jh_j(boldsymbol{x})
其中 x=(x1,x2,⋯,xn)T∈Rnboldsymbol{x}=(x_1,x_2,cdots,x_n)^T in mathbf{R}^n, αi和βjalpha_i和beta _j是拉格朗日乘子且 αi≥0alpha_ige 0
拉格朗日函数虽然一眼看去十分复杂,但是其实它是将所有的限定条件加上新引入的变量(拉格朗日乘子)构成了一个新的函数,这样就将限定条件转换为了未知变量。
此时我们考虑 xx 的函数:
θP(x)=maxα,β:αi≥0L(x,α,β)
theta_P(boldsymbol{x})=max_{boldsymbol{alpha,beta}:alpha_ige0}L(boldsymbol{x},boldsymbol{alpha},boldsymbol{beta})
下标 PP代表原始问题。
可以证明,如果 xx满足原始问题中约束,那么 θ(x)=f(x)theta(boldsymbol{x})=f(boldsymbol{x})如果 x不满足原始问题中的约束( ci(x)≤0;hj(x)=0c_i(x)le 0;h_j(x)=0),那么 θ(x)= ∞theta(boldsymbol{x})= infty,即:
θP(x)={f(x), ∞,x满足原始问题约束其他
% <![CDATA[ theta_P(boldsymbol{x})=begin{cases}f(boldsymbol{x}),&boldsymbol{x} 满足原始问题约束\ infty,&其他end{cases} %]]>
证明:假设某个 x x不满足原始问题的约束条件,即存在某个ii使得 ci(x)>0 c_i(boldsymbol{x})gt0或者存在某个 j j使得hj(x)=0h_j(boldsymbol{x})=0那么就有: θP(x)=maxα,β:αi≥0[f(x) ∑i=1kαici(x) ∑j=1lβjhj(x)]= ∞ theta_P(boldsymbol{x})=max_{boldsymbol{alpha,beta}:alpha_ige0}Bigg[f(boldsymbol{x}) sum_{i=1}^k alpha_ic_i(boldsymbol{x}) sum_{j=1}^lbeta_jh_j(boldsymbol{x})Bigg]= infty 因为若某个 i i使约束ci(x)>0c_i(boldsymbol{x})gt0,则可令 αi→ ∞ alpha_irightarrow infty; 若某个 j j使hj(x)≠0h_j(boldsymbol{x})neq0,则可令 βj beta_j使 βjhj(x)→ ∞ beta_jh_j(boldsymbol{x})rightarrow infty,而将其余各 αi,βj alpha_i,beta_j均取为 0
所以如果考虑极小化问题:
minxθP(x)=minxmaxα,β:αi≥0L(x,α,β)
min_{boldsymbol{x}}theta_P(boldsymbol{x})=min_{boldsymbol{x}}max_{boldsymbol{alpha,beta}:alpha_ige0}L(boldsymbol{x},boldsymbol{alpha},boldsymbol{beta})
就会发现它是与原始最优化问题等价的,即它们有相同的解。 minxmaxα,β:αi≥0L(x,α,β)min_{boldsymbol{x}}max_{boldsymbol{alpha,beta}:alpha_ige0}L(boldsymbol{x},boldsymbol{alpha},boldsymbol{beta})称为广义拉格朗日函数的极小极大问题。这样一来,就把原始最优化问题表示为广义拉格朗日函数的极小极大问题。我们定义原始问题最优解:
p∗=minxθP(x)
p^*=min_{x}theta_P(x)
总结一下原始问题和拉格朗日函数: 从原始问题开始,通过拉格朗日函数重新定义一个无约束问题,这个无约束问题等价于原来的约束优化问题,从而将约束问题无约束化。也就是将d个变量和k个约束条件的最优化问题转换为d k个变量的最优化问题。到此我们还是无法求解,我们需要将原始问题转换成对偶问题来求解。
3. 对偶问题
我们再定义:
θD(α,β)=minxL(x,α,β)
theta_D(alpha,beta)=min_x L(x,alpha,beta)
并极大化 θDtheta_D,即:
maxα,βθD(α,β)=maxα,βminxL(x,α,β)
max_{alpha,beta}theta_D(alpha,beta)=max_{boldsymbol{alpha,beta}}min_{boldsymbol{x}}L(boldsymbol{x},boldsymbol{alpha},boldsymbol{beta})
maxα,βminxL(x,α,β)max_{boldsymbol{alpha,beta}}min_{boldsymbol{x}}L(boldsymbol{x},boldsymbol{alpha},boldsymbol{beta})为广义拉格朗日函数的极大极小问题( 上一节的是极小极大问题)。这样可以将广义拉格朗日函数的极大极小问题进一步表示为约束最优化问题:
maxα,βθD(α,β)=maxα,βminxL(x,α,β) s.t.αi≥0,i=1,2,⋯,k
max_{alpha,beta}theta_D(alpha,beta)= max_{boldsymbol{alpha,beta}}min_{boldsymbol{x}}L(boldsymbol{x},boldsymbol{alpha},boldsymbol{beta}) mathbb{s.t.}quadalpha_ige0,quad i=1,2,cdots,k
我们将上面的问题称为原始问题的对偶问题。定义对偶问题的最优值
d∗=maxα,βθD(α,β)
d^* = max_{alpha,beta}theta_D(alpha,beta)
对比原始问题,对偶问题是先固定 α,βalpha,beta,求最优化 xx的解,在确定参数α,βalpha,beta;
原始问题是先固定 xx,求最优化α,βalpha,beta的解,再确定 xx。
4. 原始问题和对偶问题的关系
若原始问题和对偶问题都有最优值,那么
d∗=maxα,βminxL(x,α,β)≤minxmaxα,β:αi≥0L(x,α,β)=p∗
d^*=max_{boldsymbol{alpha,beta}}min_{boldsymbol{x}}L(boldsymbol{x},boldsymbol{alpha},boldsymbol{beta})lemin_{boldsymbol{x}}max_{boldsymbol{alpha,beta}:alpha_ige0}L(boldsymbol{x},boldsymbol{alpha},boldsymbol{beta})=p^*
证明: 对任意的 x,α,β x,alpha,beta有 minxL(x,α,β)≤L(x,α,β)≤maxα,β:αi≥0L(x,α,β) min_{boldsymbol{x}}L(boldsymbol{x},boldsymbol{alpha},boldsymbol{beta})le L(boldsymbol{x},boldsymbol{alpha},boldsymbol{beta})le max_{boldsymbol{alpha,beta}:alpha_ige0}L(boldsymbol{x},boldsymbol{alpha},boldsymbol{beta}) 由于原始问题和对偶问题均有最优值,所以: minxL(x,α,β)≤maxα,β:αi≥0L(x,α,β) min_{boldsymbol{x}}L(boldsymbol{x},boldsymbol{alpha},boldsymbol{beta})le max_{boldsymbol{alpha,beta}:alpha_ige0}L(boldsymbol{x},boldsymbol{alpha},boldsymbol{beta}) 即 d∗=maxα,βminxL(x,α,β)≤minxmaxα,β:αi≥0L(x,α,β)=p∗ d^*=max_{boldsymbol{alpha,beta}}min_{boldsymbol{x}}L(boldsymbol{x},boldsymbol{alpha},boldsymbol{beta})lemin_{boldsymbol{x}}max_{boldsymbol{alpha,beta}:alpha_ige0}L(boldsymbol{x},boldsymbol{alpha},boldsymbol{beta})=p^*
也就是说原始问题的最优值不小于对偶问题的最优值,但是我们要通过对偶问题来求解原始问题,就必须使得原始问题的最优值与对偶问题的最优值相等,于是可以得出下面的推论:
设 x∗和α∗,β∗ x^*和alpha^*,beta^*分别是原始问题和对偶问题的可行解并且 d∗=p∗ d^*=p^*则 x∗和α∗,β∗ x^*和alpha^*,beta^*分别是原始问题和对偶问题的最优解。
对偶问题跟原始问题可以看成本来是两个问题,因为优化的顺序不同而会得出两个不一定相关的值(但是 minxmaxyf(x,y)≥maxymaxxf(x,y) mathop{min}_{x}mathop{max}_{y}f(x,y) geq mathop{max}_{y}mathop{max}_{x}f(x,y) 还是成立的,直观理解的话高中经常用的二次函数就可以了)。 两者的差值就是duality gap,描述了我用另一种方式刻画问题的时候所造成的误差,强对偶的情况下最优值没有差别。
在最优点处将会满足KKT 条件,但是KKT条件本身并不需要问题满足强对偶。关于KKT条件什么时候不满足,有一种另外的理解是他要求各个函数的梯度张成足够大的空间(因为KKT的最后一条本质上是一个Ax=0的问题)。 所以,当原始问题和对偶问题的最优值相等: d∗=p∗ d^*=p^*时,可以用求解对偶问题来求解原始问题(当然是对偶问题求解比直接求解原始问题简单的情况下),但是到底满足什么样的条件才能使 d∗=p∗ d^*=p^*呢,这就是下面要阐述的 KKT 条件。
5. KTT条件
对原始问题和对偶问题,假设函数 f(x)和ci(x) f(x)和c_i(x)是凸函数, hj(x) h_j(x)为仿射函数,并且不等式约束 ci(x) c_i(x)是严格可行的,则 x∗和α∗,β∗ x^*和alpha^*,beta^*分别是原始问题和对偶问题的解的充要条件是 x∗,α∗,β∗ x^*,alpha^*,beta^*满足下面的Karush-Kuhn-Tucker(KKT)条件:
∇xL(x∗,α∗,β∗)=0 nabla_boldsymbol{x}L(boldsymbol{x}^*,boldsymbol{alpha}^*,boldsymbol{beta}^*)=0 ∇αL(x∗,α∗,β∗)=0 nabla_boldsymbol{alpha}L(boldsymbol{x}^*,boldsymbol{alpha}^*,boldsymbol{beta}^*)=0 ∇βL(x∗,α∗,β∗)=0 nabla_boldsymbol{beta}L(boldsymbol{x}^*,boldsymbol{alpha}^*,boldsymbol{beta}^*)=0 α∗ici(x∗)=0,i=1,2,⋯,k alpha_i^*c_i(boldsymbol{x}^*)=0,quad i=1,2,cdots,k ci(x∗)≤0,i=1,2,⋯,k c_i(boldsymbol{x}^*)le0,quad i=1,2,cdots,k α∗i≥0,i=1,2,⋯,k alpha_i^*ge0,quad i=1,2,cdots,k hj(x∗)=0,j=1,2,⋯,l h_j(boldsymbol{x}^*)=0,quad j=1,2,cdots,l
关于KKT 条件的理解:前面三个条件是对于各个变量的偏导数为0(这就解释了一开始为什么假设三个函数连续可微,如果不连续可微的话,这里的偏导数存不存在就不能保证),后面四个条件就是原始问题的约束条件以及拉格朗日乘子需要满足的约束。
仿射函数 f(x)=Ax b f(boldsymbol{x})=boldsymbol{A}boldsymbol{x} b 仿射函数就是一个线性函数,其输入是n维向量,参数 A可以是常数,也可以是m×n的矩阵,b可以是常数,也可以是m维的列向量,输出是一个m维的列向量。在几何上,仿射函数是一个线性空间到另一个线性空间的变换。
6. 总结
拉格朗日对偶性的求解分为两个步骤:
- 把原始的约束问题通过拉格朗日函数转化为无约束问题。
- 在满足KKT的条件下用求解对偶问题来代替求解原始问题,使得问题求解更加容易。
参考文献
- 李航,统计学习方法
- 周志华,机器学习(西瓜书)
- https://www.cnblogs.com/90zeng/p/Lagrange_duality.html
- https://www.zhihu.com/question/58584814
- https://zhuanlan.zhihu.com/p/26514613