约束最优化:lagrange 对偶函数

学SVM的时候你会经常听到拉格朗日对偶。拉格朗日对偶是凸优化问题中比较常见的一个手段,关于凸优化,强烈建议Boyd的《凸优化》这本书,总结的很好

lagrange 对偶的基本思想,是将原目标函数,通过对其约束条件的加权求和,变成一个广义的目标函数。从而将一个M个变量N个约束的目标函数转换成一个M+N个变量的目标函数,再得到这个函数的对偶函数

这个对偶函数非常有用,因为他有几个重要性质:

  1. 无论原始问题是不是凸的,对偶问题一定是凸的,可以证明
  2. 对偶问题给出了原始问题的一个下界,可以证明
  3. 当满足一定条件时,对偶问题的解和原问题的解是等价的,可以证明

1)对偶的形式化定义

考虑一个标准的最优化问题:

\begin{aligned} \min \qquad & f_0 (x) \\ s.t. \qquad & f_i (x) \le 0, i = 1, ..., m \\ & h_i (x) = 0, i = 1,..., p \end{aligned}

它的广义拉格朗日函数是:

L(x,\lambda,v) = f_0 (x) + \sum\limits_{i=1}^{m} \lambda_i f_i (x) + \sum\limits_{i=1}^p v_i h_i (x)

它的拉格朗日对偶函数是:

g(\lambda,v) = \min\limits_{x} L(x,\lambda,v) = \min\limits_x \left ( f_0 (x) + \sum\limits_{i=1}^{m} \lambda_i f_i (x) + \sum\limits_{i=1}^p v_i h_i (x) \right )

简单来说,就是说对于任意的一组(α,β),都要找到一个x使得L最小,不同的(α,β)对应不同的g函数值。这个理解起来有点费脑筋,但是想清楚非常重要

2)示例:最小二乘

假设我们要优化一个最小二乘问题,比如

\begin{aligned} \min \ & x^{T} x \\ s.t. \qquad & Ax=b \end{aligned}

这个问题没有不等式约束,有 p 个(线性)等式约束,其 lagrange 函数L(x,v) = x^T x + v^T (Ax-b),对偶函数是g(v) = \min\limits_x L(x,v)

因为L是关于x的二次凸函数,所以可以通过求极值,得到L函数的最小值,如下

\bigtriangledown_x L(x,v) = 2x + A^T v = 0

可见,L函数在点 x = -1/2 A^T v 处,总能得到最小值,因此对偶函数为

g(v) = L(-(1/2)A^T v, v) = -(1/4)v^T AA^T v - b^T v

这个函数就是原目标函数的一个下界

-(1/4)v^T AA^T v - b^T v \le \min\limits_x{(x^T x | Ax = b)}

3)证明:对偶问题是原始问题的下界

假设p^*是原问题最优解的集合,对于任意的\lambda \ge 0和任意的v,下式都是成立的:

g(\lambda, v) \le p^*

这个非常容易证明

假设\bar{x}是原问题的一个最优解,即f_i(\bar{x}) \le 0h_i(\bar{x}) = 0,根据假设\lambda \ge 0,我们有:

\sum\limits_{i=1}^{m} \lambda_i f_i (\bar{x}) + \sum\limits_{i=1}^p v_i h_i (\bar{x}) \le 0

因为左边第一项是负数,第二项为0,因此,必然有:

L(\bar{x},\lambda,v) = f_0 (\bar{x}) + \sum\limits_{i=1}^{m} \lambda_i f_i (\bar{x}) + \sum\limits_{i=1}^p v_i h_i (\bar{x}) \le f_0 (\bar{x})

所以:

g(\lambda,v) = \min\limits_{x} L(x,\lambda,v) \le L(\bar{x},\lambda,v) \le f_0 (\bar{x})

4)证明:对偶函数是一个凹函数

f(x)函数满足定义:\forall x_1,x_2 \in I, 有f[(x_1 + x_2)/2] \ge \frac {f(x_1) + f(x_2)} {2}

则f(x)就是凸函数,-f(x)就是凹函数,如下图,左边是凸函数,右边是凹函数

5)证明:对偶问题是一个凸问题

6)KKT 条件

xx

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注