Lagrangian乘子法与对偶上升法(Dual Ascent)

Lagrangian乘子法

考虑等式约束的凸优化问题:
min ⁡ f ( x )   s . t .   A x = b (1) \min f(x) \ s.t.\ Ax=b \tag{1} minf(x) s.t. Ax=b(1)
其中向量 x ∈ R n x\in\mathbb{R}^n xRn,矩阵 A ∈ R m × n A\in \mathbb{R}^{m\times n} ARm×n,函数 f ( x ) : R n → R f(x):\mathbb{R}^n→\mathbb{R} f(x):RnR是凸函数。
Lagrangian乘子法将其变为无约束最小化问题,其Lagrangian目标函数为:
L ( x , λ ) = f ( x ) + λ T ( A x − b ) L(x,\lambda)=f(x)+\lambda^T(Ax-b) L(x,λ)=f(x)+λT(Axb)
注意,到这里Lagrangian乘子法就算是结束了。到这一步之后,可以令 L ( x , λ ) = 0 L(x,\lambda)=0 L(x,λ)=0,求出一些 x x x,然后取使得 f ( x ) f(x) f(x)最小的 x x x值作为最终解,因为一阶导为0是一个必要条件而非充要条件,可以参见这篇文章

对偶上升法

对于 L ( x , λ ) = 0 L(x,\lambda)=0 L(x,λ)=0难以解出等的情况,可以用对偶上升法来做优化。
原始优化问题的对偶目标函数为:
g ( λ ) = inf ⁡ x L ( x , λ ) = − f ∗ ( − A T λ ) − b T λ g(\lambda)=\inf_x L(x,\lambda)=-f^*(-A^T\lambda)-b^T\lambda g(λ)=xinfL(x,λ)=f(ATλ)bTλ
这里的对偶目标函数就是我们一般讲的对偶问题,是一个关于Lagrangian乘子的问题, inf ⁡ \inf inf表示最大下界,正是对偶问题的最优化目标。而第二个等号成立的原因是,线性约束下凸函数的对偶函数可以用其共轭函数表示。 f ( x ) 的 f(x)的 f(x)共轭函数 f ∗ ( y ) f^*(y) f(y)定义为:
f ∗ ( y ) = sup ⁡ x ∈ D ( y T x − f ( x ) ) f^*(y)=\sup_{x\in D}(y^Tx-f(x)) f(y)=xDsup(yTxf(x))
其中 y ∈ R n y\in \mathbb{R}^n yRn sup ⁡ \sup sup表示最小上界。下面证明 g ( λ ) = − f ∗ ( − A T λ ) − b T λ g(\lambda)=-f^*(-A^T\lambda)-b^T\lambda g(λ)=f(ATλ)bTλ
g ( λ ) = inf ⁡ x L ( x , λ ) = inf ⁡ x ( f ( x ) + λ T ( A x − b ) ) = − λ T b + inf ⁡ x ( f ( x ) + λ T A x ) ( 将 与 x 无 关 的 项 提 取 出 ) = − λ T b − sup ⁡ x ( − f ( x ) − λ T A x ) ( 函 数 最 大 下 界 等 于 取 反 之 后 的 最 小 上 界 ) = − λ T b − f ∗ ( − A T λ ) ( 共 轭 函 数 的 定 义 ) = − b T λ − f ∗ ( − A T λ ) ( 得 证 ) g(\lambda)=\inf_x L(x,\lambda)=\inf_x (f(x)+\lambda^T(Ax-b))\\ =-\lambda^Tb+\inf_x(f(x)+\lambda^TAx)(将与x无关的项提取出)\\ =-\lambda^Tb-\sup_x(-f(x)-\lambda^TAx)(函数最大下界等于取反之后的最小上界)\\ =-\lambda^Tb-f^*(-A^T\lambda)(共轭函数的定义)\\ =-b^T\lambda-f^*(-A^T\lambda)(得证) g(λ)=xinfL(x,λ)=xinf(f(x)+λT(Axb))=λTb+xinf(f(x)+λTAx)x=λTbxsup(f(x)λTAx)=λTbf(ATλ)=bTλf(ATλ)
因此借助Lagrangian乘子法,原始等式约束极小化问题变成了对偶极大化问题:
max ⁡ λ g ( λ ) = − f ∗ ( − A T λ ) − b T λ (2) \max_{\lambda}g(\lambda)=-f^*(-A^T\lambda)-b^T\lambda \tag{2} λmaxg(λ)=f(ATλ)bTλ(2)
对偶上升法采用了梯度上升法来求解公式 ( 2 ) (2) (2)。假设强对偶性满足,则原问题最优解与对偶问题最优解相同。此时公式 ( 1 ) (1) (1)的最优解点 x ∗ x^* x可以由下式恢复:
x ∗ = arg min ⁡ x L ( x , λ ∗ ) x^*=\argmin_xL(x,\lambda^*) x=xargminL(x,λ)
对偶上升法主要由两个步骤组成:
x k + 1 = arg min ⁡ x L ( x , λ k ) λ k + 1 = λ k + μ k ∂ L ( x , λ ) ∂ λ ∣ x = x k + 1 , λ = λ k = λ k + μ k ( A x k + 1 − b ) x_{k+1}=\argmin_xL(x,\lambda_k)\\ \lambda_{k+1}=\lambda_k+\mu_k\frac{\partial L(x,\lambda)}{\partial \lambda}|_{x=x_{k+1},\lambda=\lambda_k}=\lambda_k+\mu_k(Ax_{k+1}-b) xk+1=xargminL(x,λk)λk+1=λk+μkλL(x,λ)x=xk+1,λ=λk=λk+μk(Axk+1b)
这里的 μ k \mu_k μk为更新 λ \lambda λ的步长。

总结

对偶上升法的重要假设是强对偶成立,对偶上升法有两层含义,一是对偶变量 λ \lambda λ的更新采用梯度上升法,二是通过步长 μ k \mu_k μk的适当选择保证 g ( λ k + 1 ) > g ( λ k ) g(\lambda_{k+1})>g(\lambda_k) g(λk+1)>g(λk)

本文主要来自张贤达《矩阵分析与应用(第二版)》第4.7.1节,并参考了这篇博客。该博客说对偶上升法也适用于不等式约束的情况,张书中并无此说,这一点我暂时存疑。

  • 10
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
拉格朗日乘子法是一种优化问题的求解方,通常用于对约束条件进行建模。要使用 Matlab 对拉格朗日乘子法进行求解,首先需要确定优化问题的目标函数和约束条件。设目标函数为 f(x)。 然后,建立拉格朗日函数 L(x,λ)。其中 λ 是拉格朗日乘子,其值随问题而变化。拉格朗日函数可表示为: L(x,λ) = f(x) - λ·g(x) 其中 g(x) 为约束条件。Matlab 提供了函数“fmincon”来实现使用拉格朗日乘子法的优化问题求解。 要使用“fmincon”函数,需要指定两个输入参数。第一个输入参数是目标函数的句柄,即在 Matlab 中定义的函数的名称。第二个输入参数是最小化过程的约束条件。这个约束条件可以是几个函数的向量,每个函数描述一个约束条件。对于以上讨论的使用拉格朗日乘子法的优化问题,约束条件函数可以写成: g(x) = 0 完整的用拉格朗日乘子法求解优化问题的 Matlab 代码如下所示: function [x, fval] = lagrangian(f,g,x0) options = optimoptions('fmincon','Algorithm','sqp'); lambda = 1; L = @(x,lambda) f(x) + lambda*g(x); [x, fval] = fmincon(@(x) L(x,lambda), x0, [], [], [], [], [], [], @(x) g(x), options); 在这个函数中, “options”包含其他优化参数,来指定使用什么算和优化选项,以及 x0 是初始解向量。 使用“lagrangian()”函数可以在 Matlab 中解决使用拉格朗日乘子法的优化问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值