🍅 写在前面
👨🎓 博主介绍:大家好,这里是hyk写算法了吗,一枚致力于学习算法和人工智能领域的小菜鸟。
🔎个人主页:主页链接(欢迎各位大佬光临指导)
⭐️近期专栏:机器学习与深度学习
凸优化系列知识,详见下方链接:
凸优化学习(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
其中ρ是事先选定的参数,可以选择定值和定值,和前一节讲过的学习率性质差不多。