凸优化学习(3)——对偶方法、KKT条件、ADMM

🍅 写在前面

👨‍🎓 博主介绍:大家好,这里是hyk写算法了吗,一枚致力于学习算法和人工智能领域的小菜鸟。

🔎个人主页:主页链接(欢迎各位大佬光临指导)

⭐️近期专栏:机器学习与深度学习

LeetCode算法实例

张量分解

凸优化系列知识,详见下方链接:

凸优化学习(1)------什么是凸优化、凸集、凸函数
凸优化学习(2)------梯度类方法求解(gradient descent)
凸优化学习(3)------对偶方法、KKT条件、ADMM

本系列文章主要参考:卡耐基梅隆 凸优化系列课程

目录

综述

对偶方法在优化问题中非常重要,实际上就是实质相同但从不同角度提出不同提法的一对问题。有时候原问题 (Primal Problem) 不太好解,但是对偶问题 (Dual Problem) 却很好解,我们就可以通过求解对偶问题来迂回地解答原问题。其中对偶方法又分为强对偶定理弱对偶定理。弱对偶定理只能确定出原问题的上下界。强对偶定理指的是,在满足某下条件的情况下,可以通过求出对偶问题的解推断出原问题的解。

强弱对偶需要满足的条件

  • 弱对偶:不论原问题是否为凸问题均成立,没有需要满足的特别条件。
  • 强对偶:满足强对偶的条件有很多,这里只介绍常用的几种。
    1、Convex+Slater(强对偶的充分条件)
    (1)原问题必须为一个凸问题,凸问题的定义在第一节已经讲过,大家可以回顾查询一下。
    (2)Slater条件,对于一个凸优化问题,该条件描述如下:
    min ⁡ x f ( x ) s . t . g i ( x ) ≤ 0 , i = 1... , m h j ( x ) = 0 , j = 1... , r \begin{array}{l} {\min _x}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} f(x)\\ s.{\kern 1pt} {\kern 1pt} t.{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {g_i}(x) \le 0,i = 1...,m\\ {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {h_j}(x) = 0,j = 1...,r\\ \end{array} minxf(x)s.t.gi(x)≤0,i=1...,mhj(x)=0,j=1...,r
    对于以上式子,存在可行解x,使得 g i ( x ) < 0 {g_i}(x) <0 gi(x)<0恒成立,并且满足第二个条件
    h j ( x ) = 0 {h_j}(x) = 0 hj(x)=0。那么称该问题满足Slater条件,并且强对偶也成立。
    2、KKT条件
    KKT条件的形式如下:

    需要指出,KKT条件在问题凹凸性不同性质也有所不同。KKT条件对于凸问题是一个充分必要条件,对于非凸问题则是一个必要条件,无法作为一个充分条件来用。

线性规划对偶

对于形如下方的线性规划问题:
min ⁡ x c T x s . t . A x = b G x ≤ h \begin{array}{l} {\min _x}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {c^T}x\\ s.{\kern 1pt} {\kern 1pt} t.{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} Ax = b\\ {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} Gx \le h \end{array} minxcTxs.t.Ax=bGx≤h

其对偶问题形式为:

min ⁡ u . v − b T u − h T v s . t . − A T u − G T v = c v ≥ 0 \begin{array}{l} {\min _{u.v}}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} - {b^T}u - {h^T}v\\ s.{\kern 1pt} {\kern 1pt} t.{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} - {A^T}u - {G^T}v = c\\ {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} v \ge 0 \end{array} minu.v−bTu−hTvs.t.−ATu−GTv=cv≥0

对于LP问题,其对偶性的特性就是只要原问题存在,那么强对偶条件1就一定成立,因此强对偶也成立。

拉格朗日对偶

对于形如下方的凸问题:
min ⁡ x f ( x ) s . t . g i ( x ) ≤ 0 , i = 1... , m h j ( x ) = 0 , j = 1... , r \begin{array}{l} {\min _x}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} f(x)\\ s.{\kern 1pt} {\kern 1pt} t.{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {g_i}(x) \le 0,i = 1...,m\\ {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {h_j}(x) = 0,j = 1...,r\\ \end{array} minxf(x)s.t.gi(x)≤0,i=1...,mhj(x)=0,j=1...,r

则其增广拉格朗日函数为:

L ( x , u , v ) = f ( x ) + ∑ i = 1 m u i g i ( x ) + ∑ j = 1 r v j h j ( x ) ( u i ≥ 0 ) L(x,u,v) = f(x) + \sum\limits_{i = 1}^m {{u_i}{g_i}(x)} + \sum\limits_{j = 1}^r {{v_j}{h_j}(x)({u_i} \ge 0)} L(x,u,v)=f(x)+i=1∑muigi(x)+j=1∑rvjhj(x)(ui≥0)

原问题拉格朗日对偶形式为:
inf ⁡ ( L ( x , u , v ) ) \inf (L(x,u,v)) inf(L(x,u,v))

这里的inf指的是求函数的上界。这里有一个重要性质,任何函数的拉格朗日对偶函数都是凹函数,大家有兴趣可以自己证明一下,比较简单,证明过程如下。

为什么要求出这个拉格朗日对偶函数呢?它和原函数的关系如下:

∀ u ≥ 0 inf ⁡ ( L ( x , u , v ) ) ≤ f ( x ) \forall u \ge 0{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} \inf (L(x,u,v)) \le f(x) ∀u≥0inf(L(x,u,v))≤f(x)

证明起来也很容易,因为u不小于0,g(x)小于等于0,相乘小于0。h(x)又等于0。加上f(x)肯定小于等于f(x)。

所以原问题求f(x)的最小值可转变为求解以下式子:
min ⁡ inf ⁡ ( L ( x , u , v ) ) \min {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} \inf (L(x,u,v)) mininf(L(x,u,v))

使用拉格朗日对偶法求解问题的好处有:

1、参数约束减少了很多,只需要u大于等于0

2、拉格朗日对偶函数一定是一个凹函数,则很多凸优化问题的手段都能用上。

ADMM

ADMM (Alternating Direction Method of Multipliers) 是解决带约束的凸优化问题的一种迭代解法,当初提出这个算法最主要的目的是为了在分布式环境 (Hadoop, MPI 等) 中迭代求解这个问题。

ADMM要解决问题的形式如下:
min ⁡ x = f 1 ( x 1 ) + f 2 ( x 2 ) s . t . A 1 x 1 + A 2 X 2 = b \begin{array}{l} {\min _x} = {f_1}({x_1}) + {f_2}({x_2})\\ s.t.{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {A_1}{x_1} + {A_2}{X_2} = b \end{array} minx=f1(x1)+f2(x2)s.t.A1x1+A2X2=b

则ADMM的迭代公式为:
x 1 ( k ) = arg ⁡ min ⁡ x 1 f 1 ( x 1 ) + ρ 2 ∥ A 1 X 1 + A 2 X 2 ( k − 1 ) − b + w ( k − 1 ) ∥ 2 2 x 2 ( k ) = arg ⁡ min ⁡ x 2 f 2 ( x 2 ) + ρ 2 ∥ A 1 X 1 ( k − 1 ) + A 2 X 2 − b + w ( k − 1 ) ∥ 2 2 w ( k ) = w ( k − 1 ) + A 1 x 1 ( k ) + A 2 X 2 ( k ) − b \begin{array}{l} {x_1}^{(k)} = \arg {\min _{x1}}{f_1}({x_1}) + \frac{\rho }{2}{\left\| {{A_1}{X_1} + {A_2}{X_2}^{(k - 1)} - b + {w^{(k - 1)}}} \right\|_2}^2\\ {x_2}^{(k)} = \arg {\min _{x2}}{f_2}({x_2}) + \frac{\rho }{2}{\left\| {{A_1}{X_1}^{(k - 1)} + {A_2}{X_2} - b + {w^{(k - 1)}}} \right\|_2}^2\\ {w^{(k)}} = {w^{(k - 1)}} + {A_1}{x_1}^{(k)} + {A_2}{X_2}^{(k)} - b\\ \\ \end{array} x1(k)=argminx1f1(x1)+2ρ A1X1+A2X2(k−1)−b+w(k−1) 22x2(k)=argminx2f2(x2)+2ρ A1X1(k−1)+A2X2−b+w(k−1) 22w(k)=w(k−1)+A1x1(k)+A2X2(k)−b

其中ρ是事先选定的参数,可以选择定值和定值,和前一节讲过的学习率性质差不多。

相关推荐
南宫生4 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
sanguine__4 小时前
Web APIs学习 (操作DOM BOM)
学习
数据的世界017 小时前
.NET开发人员学习书籍推荐
学习·.net
四口鲸鱼爱吃盐7 小时前
CVPR2024 | 通过集成渐近正态分布学习实现强可迁移对抗攻击
学习
OopspoO9 小时前
qcow2镜像大小压缩
学习·性能优化
A懿轩A9 小时前
C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·栈和队列
居居飒10 小时前
Android学习(四)-Kotlin编程语言-for循环
android·学习·kotlin
kkflash310 小时前
提升专业素养的实用指南
学习·职场和发展
1 9 J11 小时前
数据结构 C/C++(实验五:图)
c语言·数据结构·c++·学习·算法
6.9412 小时前
Scala——身份证号码查询籍贯
学习·scala