阅读 3239

约束优化方法(Constrained Optimization )

 在优化问题中,往往会有约束条件,即我们希望在约束条件下求得优化问题的最优解。对于等式约束的优化问题,我们可以直接应用拉格朗日乘子法去求取最优值;对于含有不等式约束的优化问题,则可以转化为在满足 KKT 约束条件下应用拉格朗日乘子法求解。

约束优化

无约束优化

我们首先来看一个无约束的优化问题:

\min_x f(x)	\tag{1}

其中,x\in R^Nf(x)是凸函数,这种问题求解很简单,只需要找到令 \nabla_xf(x) =0x 点即可.

等式约束

下面,我们给优化问题加上一个等式约束:

\begin{align}
&\min_x f(x)	\\
&s.t \quad h_i(x) = 0 , \quad i=1,2,...,m
\end{align}	\tag{2}

其中,xn 维向量. 为了直观地看这个问题,我们下面假设这是一个二维的等式约束优化问题,如下图所示:

等式约束

图中虚线是 f(x,y) 的等值线,而约束条件 h(x,y)=0 是约束条件. 我们知道 f(x,y) 的最优化问题需要在 h(x,y) = 0 的条件下求解,即图中虚线要与绿线相交或相切. 而显然我们可以看到,当虚线与绿线相切时,在约束条件 h(x,y) =0 下, f(x,y) 取得最小值.

这时,我们看到,两函数的法向量是平行的,即有:

\nabla_{x,y} f(x,y) + \alpha\nabla_{x,y}h(x,y) = 0	\\	\tag{3}

拓展到 n 维有:

\nabla_{x} f(x) + \alpha\nabla_{x}h(x) = 0	\\	\tag{4}

又有 h_{i}(x) = 0,联立即得此优化问题的最优解.

于是,我们可以令原函数:

L(x,\alpha) =  f(x) + \sum^m_{i=1} \alpha_i h_i(x)	\tag{5}

即问题转化为了求函数 L(x) 的最优解. 即:

\begin{align}
\nabla_xL(x,\alpha) = 0	\\
\nabla_\alpha L(x,\alpha) = 0
\end{align}	\tag{6}

求得 x\alpha 后,将 x 代入 f(x) 中即得到可行解,这便是拉格朗日乘子法(Lagrangian Multiplier Method),其中 \alpha=\alpha_1^T,\alpha_2^T,...,\alpha_m^T 称为拉格朗日乘子.

不等式约束

那么,如果加入不等式约束:

\begin{align}
&\min_x f(x)	\\
&s.t \quad g_i(x) \le 0 , \quad i=1,2,...,m
\end{align}	\tag{7}

同样的,我们把问题简化为二维:

不等式约束

显然,可行解有可能落在 g(x) \le 0 里面或者是边界上,即如下两种情况:

两种情况

可见:

  • 当可行解 x 落在 0<g(x)<0 的区域内,此时直接极小化 f(x) 即可;
  • 当可行解 x 落在 g(x)=0 即边界上,此时等价于等式约束优化问题.

于是,我们可以得到:

\beta g(x) = 0	\tag{8}

即当 \beta =0 时,此时约束不起作用; \beta \neq 0 时,等价于等式约束.

另外,在等式约束中,我们并没有对乘子加以约束,但在不等式约束中,有:

梯度方向

从图中可以看到,若要最小化 f(x),约束域 g(x) \le 0 的法向量应当与 f(x) 的负梯度同向,即:

\begin{align}
-\nabla_x f(x) &= \beta \nabla_x g(x)	\\
\beta &\ge 0
\end{align}	\tag{9}

于是,与等式约束优化问题类似,不等式约束的优化问题,在满足一定条件下,便可以用拉格朗日乘子法解决,此条件即为KKT条件(Karush-Kuhn-Tucker conditions).

我们给出形式化的约束优化问题:

\begin{align}
\min_x &f(x)	\\
s.t. \ &h_i(x) = 0, \qquad i=1,2,...,m\\
	&g_j(x) \le 0, \qquad j=1,2,...,k\\
\end{align}	\tag{10}

写出拉格朗日函数:

L(x,\alpha,\beta) = f(x) + \sum^m_{i=1}\alpha_i h_i(x) + \sum^k_{j=1}\beta g_i(x)	\tag{11}

综合上面的分析,我们有以下的KKT条件

\begin{align}
\nabla_x L(x,\alpha,\beta) = 0	\\
\beta_j g_j(x) =0 \\
h_i(x) = 0	\\
g_j(x) \le 0  \\
\beta_j \ge0
\end{align}	\tag{12}

满足 KKT 条件后极小化拉格朗日函数,即可得到在不等式约束条件下的可行解。

对偶问题

在优化理论中,对目标函数 f(x) 的在约束条件下的最优化问题,可以转化为一个与之对应的对偶问题(dual problem),而原来的问题称为原始问题(primal problem),而对偶问题有如下几个良好的性质:

  • 对偶问题的对偶是原始问题;
  • 无论原始问题是否是凸的,对偶问题都是凸优化问题
  • 对偶问题可以给出原始问题一个下界;
  • 当满足一定条件时,原始问题与对偶问题的解是完全等价的.

原始问题

我们给定不等式约束优化问题:

\begin{align}
\min_x &f(x)	\\
s.t. \ &h_i(x) = 0, \qquad i=1,2,...,m\\
	&g_j(x) \le 0, \qquad j=1,2,...,k\\
\end{align}

定义一个拉格朗日函数:

L(x,\alpha,\beta) = f(x) + \sum^m_{i=1}\alpha_i h_i(x) + \sum^k_{j=1}\beta_j g_j(x)

我们知道 h_i(x) =0,且 \beta_j \ge0 ,g_j(x)\le0\beta_j g_i(x) \le0,所以有:

f(x) = \max_{\alpha,\beta;\beta\ge0} L(x,\alpha,\beta) > L(x,\alpha,\beta)	\tag{13}

于是我们的优化问题转化为:

\min_x f(x) = \min_x \max_{\alpha,\beta;\beta\ge0} L(x,\alpha,\beta)	\tag{14}

这便是我们的原始问题.

对偶问题

我们将原始问题的解记为 p^{\ast},这里定义一个对偶函数

D(\alpha,\beta) = \min_xL(x,\alpha,\beta)	\tag{15}

然后我们定义对偶问题:

\max_{\alpha,\beta;\beta\ge0} \min_x L(x,\alpha,\beta)	\tag{16}

接着我们定义对偶问题的最优解为

d^{*} =\max_{\alpha,\beta;\beta\ge0}D(\alpha,\beta)	\tag{17}

易有:

d^* \le p^*	\tag{18}

我们把这个性质叫做弱对偶性(weak duality),对所有优化问题都成立,即使原始问题非凸. 之前我们提到过,无论原始问题是什么形式,对偶问题总是凸的,所以由弱对偶性,我们通过求解对偶问题可以得到原始问题的一个下界.

与弱对偶性相对的有一个强对偶性(strong duality),即

d^* = p^*		\tag{19}

于是,满足具有强对偶性的问题,我们可以通过求解对偶问题得到原始问题的解. 但我们需要一些条件,使得强对偶性成立,比如Slater条件和KKT条件.

  • Slater条件:存在x,使得不等式约束 g(x)\le0 严格成立,即 g(x) <0.

    如果原始问题是凸优化问题并且满足 Slater 条件的话,那么强对偶性成立。需要注意的是,这里只是指出了强对偶成立的一种情况,并不是唯一的情况。例如,对于某些非凸优化的问题,强对偶也成立.

    (SVM 中的原始问题 是一个凸优化问题(二次规划也属于凸优化问题), Slater 条件在 SVM 中指的是存在一个超平面可将数据分隔开 ).

  • 但为了保证 d^{_*} 是最优解, 还需要满足KKT条件

    我们假设 x^{\ast}\alpha^{\ast},\beta^{\ast} 分别是原始问题(并不一定是凸的)和对偶问题的最优解,且满足强对偶性,则相应的极值的关系满足:

\begin{aligned}  f(x^*) &= d^* = p^* =D(\alpha^*,\beta^*)  \\  &=\min_x f(x)+ \sum_{i = 1}^m \alpha_i^*h_i(x) + \sum_{j=1}^n\beta_j^*g_j(x) \\  & \le f(x^*)+ \sum_{i = 1}^m \alpha_i^*h_i(x^*) + \sum_{j=1}^n\beta_j^*g_j(x^*) \\ &\le f(x^*)  \end{aligned}	\tag{20}

看到第一个不等式,我们知道 h_i(x)=0 , 可以得到:

\sum_{j=1}^n\beta_j^*g_j(x^*) \ge 0	\tag{21}

又有:\sum_{j=1}^n\beta_j^\ast g_j(x^\ast) \le 0 , 所以

\sum_{j=1}^n \beta_j^*g_j(x^*) = 0 	\tag{22}

由因为 x^{\ast}f(x) 的极小值点,所以

\nabla_x L(x,\alpha,\beta) = 0	\tag{23}

结合上述和一开始的约束条件,有:

\begin{align}
\nabla_x L(x,\alpha,\beta) = 0	\\
\beta_j g_j(x) =0 \\
h_i(x) = 0	\\
g_j(x) \le 0  \\
\beta_j \ge0
\end{align}	\tag{24}

KKT条件.

参考资料:

[1] ooon. 博客园:约束优化方法之拉格朗日乘子法与KKT条件[EB/OL]. www.cnblogs.com/ooon/p/5721… , 2016-07-30/2018-7-30.

[2] ooon. 博客园:拉格朗日对偶[EB/OL]. www.cnblogs.com/ooon/p/5723… , 2016-07-31/2018-7-30.

[3] feilong_csdn. CSDN:支持向量机(SVM)必备知识(KKT、slater、对偶)[EB/OL]. blog.csdn.net/feilong_csd…, 2017-03-16/2018-7-30.

文章分类
人工智能