拉格朗日对偶详解

问题简述

对偶,是解决最优化问题的一种常用的手段。它能够将一个最优化问题转化成另一个更容易求解的对偶问题。对偶研究中常用的方法是拉格朗日对偶。拉格朗日对偶有以下几个良好的特点:

  • 无论原问题是否为凸问题,对偶问题都是凸优化问题
  • 对偶问题至少给出了原问题最优解的下界
  • 在满足一定条件的时候,对偶问题与原问题的解完全等价
  • 对偶问题通常更容易求解

基于这样的特点,拉格朗日对偶经常被用来求解最优化问题,而机器学习的背后都是优化问题。所以,拉格朗日对偶非常适合来求解机器学习问题。应用拉格朗日对偶方法的一个典型例子就是支持向量机算法(SVM)。SVM训练时,求解的原问题是一个凸优化问题,经过拉格朗日对偶变换后,可以将目标函数转化为凸函数。

凸优化

拉格朗日对偶的目标就是将带约束的优化问题转化为不带约束或约束较简单的凸优化问题。所以,了解什么是凸优化是理解拉格朗日对偶的前提。
我们知道,求解一般函数的全局最优值是十分困难的,在机器学习实践中也是如此,算法经常被困在局部最优点动弹不得,无法收敛到全局最优。但是,如果对原问题加以限定,那么问题就会迎刃而解。对于凸优化来说即为:

  • 目标函数是凸函数
  • 优化变量的可行域是一个凸集

我们先来探讨凸集的概念。

凸集

对于 n n n维空间中的点集 C C C来说,如果对集合中的任意两点 x x x y y y,以及实数 0 ≤ θ ≤ 1 0\leq\theta\leq1 0θ1,都有:

θ + ( 1 + θ ) y ∈ C \theta +(1+\theta)y \in C θ+(1+θ)yC

则成该集合为凸集。这个定义看似复杂,直观上很好理解:将集合中的任意两个点连接起来,其直线上的点都在这个集合中。如果将这个点集画出来,那么就会得到一个全凸的几何图形。
相应的,

θ + ( 1 + θ ) y \theta +(1+\theta)y θ+(1+θ)y

称为 x x x y y y的凸组合。
有了凸集的概念,我们就可以知道以下约束的集合空间是凸集。

  1. 仿射子空间。这个空间其实是由所有的等式约束构成的,也就是:

{ x ∈ R : A x = b } \{x\in R:Ax = b\} {xR:Ax=b}

  1. 多面体。这个空间是由所有的不等式约束组成的。

{ x ∈ R : A x ≤ b } \{x\in R:Ax \leq b\} {xR:Axb}

书上给出了证明两个空间为凸集的证明过程,这里不再赘述。
关于凸集,有这样一个性质:多个凸集的交集仍然是凸集。这也证明了,由多个等式或不等式的约束组合成的约束空间仍然是一个凸集。

凸函数

假设一个函数 f ( x ) f(x) f(x),对于任意的实数,都满足如下条件:

f ( θ x + ( 1 − θ ) y ) ≤ θ f ( x ) + ( 1 − θ ) f ( y ) f(\theta x +(1-\theta)y)\leq\theta f(x)+(1-\theta)f(y) f(θx+(1θ)y)θf(x)+(1θ)f(y)

则该函数是凸函数。这个定义的几何意义是:函数上的任意两点构成的线段,始终处于函数图像的上方。从几何直观角度来说,就是函数图像是向下凸的。
和凸集类似的,凸函数的非负线性组合是凸函数。

凸优化

如果一个最优化问题的可行域是凸集,并且目标函数是凸函数,那么该问题是凸优化问题。如下述函数就是一个凸优化问题:
m i n i m i z e f ( x ) s u b j e c t   t o . g i ( x ) ≤ 0 , i = 1 , 2 , . . . , m h i ( x ) = 0 , i = 1 , 2 , . . . , p \begin{aligned} &minimize\quad f(x)\\ subject\ to.\quad &g_i(x) \leq 0,i = 1,2,...,m\\ &h_i(x) = 0,i = 1,2,...,p\\ \end{aligned} subject to.minimizef(x)gi(x)0,i=1,2,...,mhi(x)=0,i=1,2,...,p
凸优化问题有一个重要的特征:所求得的局部最优解一定是全局最优解。这极大地简化了问题的求解,同时也解决了梯度下降法困在局部最优点的问题。
然而,我们面对的机器学习问题很多情况下不是凸问题,这就要求我们寻找一种方法,将非凸问题转化为凸问题进而求解。拉格朗日对偶就是这样的方法。

拉格朗日对偶法

我们研究如下的优化问题:
m i n i m i z e f ( x ) s . t . g i ( x ) ≤ 0 , i = 1 , 2 , . . . , m h i ( x ) = 0 , i = 1 , 2 , . . . , p \begin{aligned} &minimize\quad f(x)\\ s.t.\quad &g_i(x) \leq 0,i = 1,2,...,m\\ &h_i(x) = 0,i = 1,2,...,p\\ \end{aligned} s.t.minimizef(x)gi(x)0,i=1,2,...,mhi(x)=0,i=1,2,...,p
注意到,其形式上和凸优化问题很像;然而,这个优化问题不一定是凸优化问题,因为虽然其约束是凸集,但其目标函数不一定是凸函数。接下来,我们将用拉格朗日对偶将这个问题转化为对偶的凸问题。我们假设此问题的最优解是 p ∗ p^* p

拉格朗日函数

拉格朗日对偶法的第一步是按照拉格朗日乘数法构造拉格朗日函数。其形式如下:

L ( x , λ , v ) = f ( x ) + ∑ i = 1 m λ i g i ( x ) + ∑ i = 1 p v i h i ( x ) L(x,\lambda,v) = f(x)+\sum_{i=1}^m\lambda_ig_i(x)+\sum_{i=1}^pv_ih_i(x) L(x,λ,v)=f(x)+i=1mλigi(x)+i=1pvihi(x)

注意到,拉格朗日函数是一个关于 x , λ , v x,\lambda,v x,λ,v的函数。其中, x x x是原问题的自变量; λ , v \lambda,v λ,v称为拉格朗日乘子,是标量。
在这个式子中,第一项是原优化问题的目标函数 f ( x ) f(x) f(x),第二项是所有不等式约束的线性组合,第三项是所有等式约束的线性组合。其中,拉格朗日乘子 λ i \lambda_i λi必须满足 λ i ≥ 0 \lambda_i\geq0 λi0的约束。

通过拉格朗日函数,我们可以通过下述式子来求解最优解 p ∗ p^* p

θ P ( x ) = max ⁡ λ , v , λ ≥ 0 L ( x , λ , v ) \theta_P(x) = \max_{\lambda,v,\lambda\geq 0}L(x,\lambda,v) θP(x)=λ,v,λ0maxL(x,λ,v)
p ∗ = min ⁡ x θ P ( x ) p^* = \min_x \theta_P(x) p=xminθP(x)

接下来我们证明,上述式子$ \min_x \theta_P(x) 和 原 问 题 和原问题 minf(x) 有 着 相 同 的 解 有着相同的解 p^*$。

  1. 首先讨论满足约束的情况。在满足约束的情况下,拉格朗日的最大值就是 f ( x ) f(x) f(x);原因是拉格朗日函数第二项必小于等于零,第三项必等于零;
  2. 接下来讨论不满足约束的情况。在此条件下, g i ( x ) g_i(x) gi(x)大于零,拉格朗日函数的最大值是 + ∞ +\infty +

也就是说, θ P ( x ) \theta_P(x) θP(x)的表达式可以写作如下形式:

θ P ( x ) = { f ( x ) , g i ( x ) ≤ 0   h i ( x ) = 0 + ∞ . o t h e r w i s e \theta_P(x) = \begin{cases} f(x), &g_i(x) \leq 0\ h_i(x) = 0 \\ +\infty. &otherwise \end{cases} θP(x)={f(x),+.gi(x)0 hi(x)=0otherwise

那么, min ⁡ x θ P ( x ) = min ⁡ x f ( x ) \min_x \theta_P(x) = \min_x f(x) minxθP(x)=minxf(x),也即和原问题有着相同的解   p ∗ \ p^*  p
构造拉格朗日函数的目的是将所有的约束整合到目标函数上。在下一节中我们会看到,使用拉格朗日函数是如何将求解原问题的过程转化成求解凸问题的过程的。

对偶函数及对偶问题

讨论完原问题的拉格朗日函数和拉格朗日问题之后,我们构造拉格朗日对偶函数及对偶问题。正如上述所讲,拉格朗日函数是一个关于 x , λ , v x,\lambda,v x,λ,v的函数。观察最开始的优化问题,导致优化问题不一定是凸问题的原因是目标函数 f ( x ) f(x) f(x),所以我们自然想到,能不能摆脱自变量 x x x,如此一来问题不就转换成了好研究的凸问题了吗?拉格朗日对偶函数就是基于这样的思想构造出来的,其形式如下:

θ D ( λ , v ) = min ⁡ x L ( x , λ , v ) \theta_D(\lambda,v) = \min_{x} L(x,\lambda,v) θD(λ,v)=xminL(x,λ,v)

上述式子称为拉格朗日对偶函数。拉格朗日对偶函数是一个对变量 λ , v \lambda,v λ,v求函数 L L L的最小值的问题。可以证明,拉格朗日对偶函数是一个凹函数。同时我们知道,极大化一个凹函数的问题是一个凸问题,所以我们可以构造这样如下一个问题:
max ⁡ λ , v , λ ≥ 0 θ D ( λ , v ) s . t . λ i ≥ 0 \begin{aligned} \max_{\lambda,v,\lambda\geq 0}\quad \theta_D(\lambda,v)\\ s.t.\quad \lambda_i\geq 0\\ \end{aligned} λ,v,λ0maxθD(λ,v)s.t.λi0

此线性规划问题被称作拉格朗日对偶问题。拉格朗日对偶问题的目标函数是极大化拉格朗日对偶函数,这使得此问题一定为一个凸问题。

假设此对偶问题的局部(全局)最优解为   d ∗ \ d^*  d,可以证明   d ∗ ≤ p ∗ \ d^*\leq p^*  dp。证明过程如下:
对于任意的 x , λ , v x,\lambda,v x,λ,v,有:

θ D ( λ , v ) = min ⁡ x L ( x , λ , v ) ≤ L ( x , λ , v ) \theta_D(\lambda,v) = \min_{x} L(x,\lambda,v)\leq L(x,\lambda,v) θD(λ,v)=xminL(x,λ,v)L(x,λ,v)

同样的,

θ P ( x ) = max ⁡ λ , v , λ ≥ 0 L ( x , λ , v ) ≥ L ( x , λ , v ) \theta_P(x) = \max_{\lambda,v,\lambda\geq 0}L(x,\lambda,v)\geq L(x,\lambda,v) θP(x)=λ,v,λ0maxL(x,λ,v)L(x,λ,v)

也即:

θ D ( λ , v ) ≤ L ( x , λ , v ) ≤ θ P ( x ) \theta_D(\lambda,v)\leq L(x,\lambda,v)\leq \theta_P(x) θD(λ,v)L(x,λ,v)θP(x)

由于原问题和对偶问题的最优值均存在,则:

max ⁡ λ , v , λ ≥ 0 θ D ( λ , v ) ≤ min ⁡ x θ P ( x ) \max_{\lambda,v,\lambda\geq 0}\theta_D(\lambda,v)\leq \min_x \theta_P(x) λ,v,λ0maxθD(λ,v)xminθP(x)

也即:

  d ∗ ≤ p ∗ \ d^*\leq p^*  dp

这样,我们虽然没有直接求得原问题的最优解   p ∗ \ p^*  p,但是通过研究凸问题——拉格朗日对偶问题,我们获得了原问题最优解的一个下界   d ∗ \ d^*  d。我们称

  d ∗ − p ∗ \ d^*-p^*  dp

为“对偶间隙”,代表下界和原问题的距离。我们称:   d ∗ < p ∗ \ d^*< p^*  d<p的情况为若对偶,   d ∗ = p ∗ \ d^*=p^*  d=p的情况为强对偶。

实际上,拉格朗日对偶问题和原问题只是交换了极大化和极小化的运算次序,写成下述格式便一目了然了:

P = min ⁡ x θ P ( x ) = min ⁡ x max ⁡ λ , v , λ ≥ 0 L ( x , λ , v ) P=\min_x \theta_P(x)= \min_x\max_{\lambda,v,\lambda\geq 0}L(x,\lambda,v) P=xminθP(x)=xminλ,v,λ0maxL(x,λ,v)
D = max ⁡ λ , v , λ ≥ 0 θ D ( λ , v ) = max ⁡ λ , v , λ ≥ 0 min ⁡ x L ( x , λ , v ) D=\max_{\lambda,v,\lambda\geq 0} \theta_D(\lambda,v) = \max_{\lambda,v,\lambda\geq 0}\min_xL(x,\lambda,v) D=λ,v,λ0maxθD(λ,v)=λ,v,λ0maxxminL(x,λ,v)

当然,下界不一定是有意义的。当对偶间隙过大时,只考虑下界变得十分粗糙。所幸的是,在满足一定条件的时候,原问题的解和对偶问题的解完全等价。也即对偶间隙为0。下面我们来研究这一条件。

KKT条件

在上一节中,我们讨论了对偶问题和原问题解的关系,即对偶问题的解是原问题解的下界。事实上,如果原问题是一个完全等式约束的最优化问题,那么对偶间隙一定为0;可以用拉格朗日乘数法进行求解。对于添加了不等式约束的问题,我们引入KKT条件,满足KKT条件的最优化问题为强对偶问题。KKT条件如下:
在最优解 x ∗ x^* x处,若满足如下条件:
∇ x L ( x ∗ , λ ∗ , v ∗ ) = 0 λ i g i ( x ∗ ) = 0 g i ( x ∗ ) ≤ 0 λ i ≥ 0 h i ( x ∗ ) = 0 \begin{aligned} &\nabla_xL(x^*,\lambda^*,v^*) &=& 0\\ &\lambda_ig_i(x^*)&=&0\\ &g_i(x^*)&\leq&0\\ &\lambda_i&\geq&0\\ &h_i(x^*)&=&0 \end{aligned} xL(x,λ,v)λigi(x)gi(x)λihi(x)===00000
可以看出,KKT约束和上述方法差不多,唯一多了一项 λ i g i ( x ∗ ) = 0 \lambda_ig_i(x^*)=0 λigi(x)=0,这一项的意义是:

  1. 如果 g i ( x ∗ ) = 0 g_i(x^*)=0 gi(x)=0,则 λ i \lambda_i λi的取值自由,此时最优解在边界处取得;
  2. 如果如果 g i ( x ∗ ) < 0 g_i(x^*)<0 gi(x)<0,则 λ i = 0 \lambda_i = 0 λi=0,此时最优解在可行域内部取得。

总的来说,就是只要目标函数和约束函数可微,对任一原始问题和对偶问题的解都是满足KKT条件的。

你可能感兴趣的:(机器学习)