拉格朗日对偶性(Lagrance duality) 推导与简单理解

引言

在支持向量机和最大熵模型中都会用到拉格朗日对偶性,主要为解决约束最优化问题,通过将原始问题转换为对偶问题求解。为方便理解,遂记录下简单的概念的结论,有理解不当的地方望多提意见~

1. 原始问题

先从最简单的求函数最小值开始说起:

minxRnf(x)

f(x) 的最小值时 x 的取值,f(x) Rn 上连续可微。这时候我们对 f(x) 求导令导数为0就能取到极值了。若此时加入约束如下:

minxRnf(x)
s.t.ci(x)0,i=1,2,,khj(x)=0,j=1,2,,l

其中 f(x),ci(x),hj(x)Rn 上连续可微我们称此约束最优化为原始问题,也是拉格朗日对偶性需要解决的问题。
此时我们直接求导是无法解决了,要是可以将约束条件转换为未知变量或许就可以找到答案了。

2. 拉格朗日函数

为了求解原始问题,我们首先引入广义拉格朗日函数(generalized Lagrange function):

L(x,α,β)=f(x)+i=1kαici(x)+j=1lβjhj(x)

其中 x=(x1,x2,,xn)TRn αiβj 是拉格朗日乘子且 αi0
拉格朗日函数虽然一眼看去十分复杂,但是其实它是将所有的限定条件加上新引入的变量(拉格朗日乘子)构成了一个新的函数,这样就将限定条件转换为了未知变量。
此时我们考虑 x 的函数:
θP(x)=maxα,β:αi0L(x,α,β)

下标 P 代表原始问题。
可以证明,如果 x满足原始问题中约束,那么 θ(x)=f(x) 如果 x不满足原始问题中的约束( ci(x)0;hj(x)=0 ),那么 θ(x)=+ ,即:
θP(x)={f(x),+,x

证明:假设某个 x 不满足原始问题的约束条件,即存在某个i使得 ci(x)>0 或者存在某个 j 使得hj(x)=0那么就有:

θP(x)=maxα,β:αi0[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

所以如果考虑极小化问题:

minxθP(x)=minxmaxα,β:αi0L(x,α,β)

就会发现它是与原始最优化问题等价的,即它们有相同的解。 minxmaxα,β:αi0L(x,α,β) 称为广义拉格朗日函数的极小极大问题。这样一来,就把原始最优化问题表示为广义拉格朗日函数的极小极大问题。我们定义原始问题最优解:
p=minxθP(x)

总结一下原始问题和拉格朗日函数: 从原始问题开始,通过拉格朗日函数重新定义一个无约束问题,这个无约束问题等价于原来的约束优化问题,从而将约束问题无约束化。也就是将d个变量和k个约束条件的最优化问题转换为d+k个变量的最优化问题。到此我们还是无法求解,我们需要将原始问题转换成对偶问题来求解。

3. 对偶问题

我们再定义:

θD(α,β)=minxL(x,α,β)

并极大化 θD ,即:
maxα,βθD(α,β)=maxα,βminxL(x,α,β)

maxα,βminxL(x,α,β) 为广义拉格朗日函数的极大极小问题( 上一节的是极小极大问题)。这样可以将广义拉格朗日函数的极大极小问题进一步表示为约束最优化问题:
maxα,βθD(α,β)=maxα,βminxL(x,α,β)  s.t.αi0,i=1,2,,k

我们将上面的问题称为原始问题的对偶问题。定义对偶问题的最优值
d=maxα,βθD(α,β)

对比原始问题,对偶问题是先固定 α,β ,求最优化 x 的解,在确定参数α,β
原始问题是先固定 x ,求最优化α,β的解,再确定 x

4. 原始问题和对偶问题的关系

若原始问题和对偶问题都有最优值,那么

d=maxα,βminxL(x,α,β)minxmaxα,β:αi0L(x,α,β)=p

证明:
对任意的 x,α,β

minxL(x,α,β)L(x,α,β)maxα,β:αi0L(x,α,β)

由于原始问题和对偶问题均有最优值,所以:
minxL(x,α,β)maxα,β:αi0L(x,α,β)


d=maxα,βminxL(x,α,β)minxmaxα,β:αi0L(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 条件。

5. KTT条件

对原始问题和对偶问题,假设函数 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
αi0,i=1,2,,k
hj(x)=0,j=1,2,,l

关于KKT 条件的理解:前面三个条件是对于各个变量的偏导数为0(这就解释了一开始为什么假设三个函数连续可微,如果不连续可微的话,这里的偏导数存不存在就不能保证),后面四个条件就是原始问题的约束条件以及拉格朗日乘子需要满足的约束。

仿射函数

f(x)=Ax+b

仿射函数就是一个线性函数,其输入是n维向量,参数 A可以是常数,也可以是m×n的矩阵,b可以是常数,也可以是m维的列向量,输出是一个m维的列向量。在几何上,仿射函数是一个线性空间到另一个线性空间的变换。

6. 总结

拉格朗日对偶性的求解分为两个步骤:

  1. 把原始的约束问题通过拉格朗日函数转化为无约束问题。
  2. 在满足KKT的条件下用求解对偶问题来代替求解原始问题,使得问题求解更加容易。

参考文献

  1. 李航,统计学习方法
  2. 周志华,机器学习(西瓜书)
  3. https://www.cnblogs.com/90zeng/p/Lagrange_duality.html
  4. https://www.zhihu.com/question/58584814
  5. https://zhuanlan.zhihu.com/p/26514613
拉格朗日对偶法是一种优化算法,用于求解带有约束条件的优化问题。它通过构建拉格朗日函数,并通过对偶问题的求解来近似原始问题的最优解。 在Matlab中,可以使用优化工具箱中的函数来实现拉格朗日对偶法。具体步骤如下: 1. 定义原始问题的目标函数和约束条件。 2. 构建拉格朗日函数,将约束条件引入目标函数中,并引入拉格朗日乘子。 3. 求解拉格朗日函数的最小值,得到对偶问题。 4. 求解对偶问题,得到对偶变量的最优解。 5. 根据对偶变量的最优解,计算原始问题的最优解。 以下是一个简单的示例代码,演示了如何使用Matlab实现拉格朗日对偶法: ```matlab % 定义原始问题的目标函数和约束条件 f = @(x) x(1)^2 + x(2)^2; % 目标函数 g1 = @(x) x(1) + x(2) - 1; % 约束条件1 g2 = @(x) x(1) - x(2) - 1; % 约束条件2 % 构建拉格朗日函数 syms lambda1 lambda2; L = f([x1; x2]) + lambda1 * g1([x1; x2]) + lambda2 * g2([x1; x2]); % 求解拉格朗日函数的最小值,得到对偶问题 dual_problem = min(L, [lambda1, lambda2]); % 求解对偶问题,得到对偶变量的最优解 dual_solution = solve(dual_problem); % 根据对偶变量的最优解,计算原始问题的最优解 x_optimal = [x1; x2]; x_optimal = subs(x_optimal, [lambda1, lambda2], [dual_solution.lambda1, dual_solution.lambda2]); optimal_value = f(x_optimal); % 输出结果 disp("原始问题的最优解:"); disp(x_optimal); disp("原始问题的最优值:"); disp(optimal_value); ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值