凸优化学习(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

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

相关推荐
Chef_Chen2 小时前
从0开始学习R语言--Day18--分类变量关联性检验
学习
键盘敲没电2 小时前
【IOS】GCD学习
学习·ios·objective-c·xcode
海的诗篇_3 小时前
前端开发面试题总结-JavaScript篇(一)
开发语言·前端·javascript·学习·面试
AgilityBaby3 小时前
UE5 2D角色PaperZD插件动画状态机学习笔记
笔记·学习·ue5
AgilityBaby3 小时前
UE5 创建2D角色帧动画学习笔记
笔记·学习·ue5
武昌库里写JAVA4 小时前
iview Switch Tabs TabPane 使用提示Maximum call stack size exceeded堆栈溢出
java·开发语言·spring boot·学习·课程设计
一弓虽5 小时前
git 学习
git·学习
Moonnnn.7 小时前
【单片机期末】串行口循环缓冲区发送
笔记·单片机·嵌入式硬件·学习
viperrrrrrrrrr78 小时前
大数据学习(131)-Hive数据分析函数总结
大数据·hive·学习
fen_fen8 小时前
学习笔记(26):线性代数-张量的降维求和,简单示例
笔记·学习·算法