存在即有理---拉格朗日乘子法(Lagrange Multiplier Method)

拉格朗日乘子法是为了解决有约束的优化(最大最小化)问题。html

网上不少博客论坛将KKT条件与不等式优化的乘子法混淆了,而且有不少对于这个概念混沌的地方。我就写一篇梳理一遍思路。git

已知一个问题的目标与参数的关系是y=x^2,那么咱们很容易知道当x=0时,最优的目标y=min \ x^2=0.可是若是咱们给这个优化过程添加一条约束:x-1 \geq 0,也就是x必须知足这一约束的状况下,求解原函数的最小值。则这个问题就得换种思路解决。咱们在此时咱们便引入了拉格朗日乘子法(Lagrange Multiplier Method),有的地方也叫拉格朗日乘数法github

先来看一个最简单的例子

单个等式约束条件下的拉格朗日乘子法,这种状况下最简单,咱们必定要注意计算过程,不眼高手低,我举一个完整的例子该你们看:机器学习

\max_{x,y} \; f(x,y)=x^2y \quad
s.t. \quad g(x,y): \ x^2+y^2-3 = 0

单约束问题示意图

咱们设拉格朗日乘子为\lambda,则有以下拉格朗日函数:函数

L(x,y,\lambda)=x^2y-\lambda(x^2+y^2-3)

接下来对x,y,\lambda三个变量分别求偏微分:post

\nabla_{x,y,\lambda}L(x,y,\lambda)=\left( \frac{\partial L}{\partial x},\frac{\partial L}{\partial y},\frac{\partial L}{\partial \lambda}  \right)
=(2xy+2 \lambda x,x^2+2 \lambda y,x^2+y^2-3)

令偏微分都为0,则有:学习

\nabla_{x,y,\lambda}L(x,y,\lambda)=0  \;  \iff \begin{cases} 2xy+2\lambda x =0, \quad (i) \\ 
x^2+2 \lambda y=0, \quad (ii) \\
x^2+y^2-3=0, \quad (iii)
\end{cases}

解出L优化

(\pm \sqrt 2,1,-1);(\pm \sqrt 2,-1;1);(0, \pm \sqrt 3,0)

代入f(x,y)中解得最终f(x,y)几种可能的值分别为2,-2,0,则此为最大最小值的集合,可知\max_{x,y} \; f(x,y) =2,上图已经彻底解释了我这一串计算过程。cdn

再看看不等式约束与KKT条件

状况会稍微复杂一点。对于不等式约束,只要知足必定的条件,依然可使用拉格朗日乘子法解决,这里的条件即是KKT条件(Karush–Kuhn–Tucker conditions)。KKT条件是以人名命名的,因此没必要关注其命名的背后含义。我看不少论坛博客上写的等式约束使用拉格朗日乘子法,不等式约束使用KKT条件法,这是不严谨的。KKT条件只是一个条件而已,并非一种方法。等式和不等式约束优化问题所采用的方法都是拉格朗日乘子法。htm

咱们看这样一个不等式约束的问题:

\min_x \;f(x) \qquad s.t. \; g(x)\leq0

其对应的拉格朗日函数以下所示:

L(x,\lambda)=f(x)+ \lambda g(x)

这时可行解必须落在约束区域之内,下图给了目标函数的等高线以及约束:

这里红色的区域表明的是不等式的区域,蓝色表明的原函数的等高线,这里咱们能够将其想象成一个碗状的三维图形。值得一提的是,咱们这里暂时只针对凸函数问题,因此咱们能够看到这个蓝色圆心即是最优解。

那么如今咱们只会有两种状况了:一种是原函数的最优解就已经在约束范围内;另外一种是原函数的最优解在约束范围边界上或者以外。咱们来看下面两图:

咱们看第一个图就表明了第一种状况,蓝色圆心在红色圆内。这样约束条件没有起到约束做用,约束以后的最优解仍是原来的最优解。对于第二个图,咱们看到蓝色圆心在红色区域以外。固然这也包括了恰好在红色边界上的状况。为何这两种状况归为一类呢?咱们接着看:咱们必需要知足约束条件,也就是咱们必需要在红色范围内找到一个最优解。即便这个最优解并非原函数最优的。因为原函数是一个凸函数,因此是平滑单个极值。那么理论上说,咱们在极值往外任意方向上,都是离极值越近,那个值就越优。因此咱们即可知,这个最优值会在约束的边界上。也就是g(x)=0的时候。这时候就又变成了等式约束了。

以上两种状况就是说,要么可行解落在约束边界上即得g(x)=0,要么可行解落在约束区域内部,此时约束不起做用,令 \lambda = 0 消去约束便可,因此不管哪一种状况都会获得:

λg(x)=0

而在这种状况下,咱们的不等式约束是和等式约束同解的。这种状况,就是咱们所说的KKT条件下。因此咱们总结出此问题的KKT条件:

\begin{cases} 
\nabla_x L(x,\lambda) =0, \quad (I) \\ 
λg(x)=0, \quad (II) \\
g(x) \leq 0, \quad (III)  \\
\lambda \geq0, \quad (IV) \\ 
\end{cases}

总结:KKT是咱们将不等式约束直接化成等式约束的必要条件,也是这个不等式约束的必要条件。在凸函数优化问题中,升级为充要条件。通常的,KKT条件很容易知足,咱们论证一下就可使用乘子法解决问题。在拉格朗日对偶中,KKT条件也是十分重要的条件,判断原问题与对偶问题是否有一致解。这个在《拉格朗日对偶》里面细说。

上式须要知足的要求是拉格朗日乘子\lambda\geq0,这个问题能够举一个形象的例子,假设你去登山,目标是山顶,但有一个障碍挡住了通向山顶的路,因此只能沿着障碍爬到尽量靠近山顶的位置,而后望着山顶叹叹气,这里山顶即是目标函数的可行解,障碍即是约束函数的边界,此时的梯度方向必定是指向山顶的,与障碍的梯度同向,下图描述了这种状况 :

固然更通常的问题:

\min_{x\in R^n}\ f(x)
s.t. \quad c_{i}(x)\leq0 \ ,\quad i=1,2,...,k
\quad \qquad h_{j}(x)=0 \ ,\quad j=1,2,...,l

咱们有更为完整的KKT条件:

\begin{cases} 
\nabla_x L(x,\alpha_i,\beta_i) =0, \qquad \qquad \quad (1) \\ 
\alpha_i c_i(x) = 0, \quad i=1,2,...,k \quad(2) \\
h_j(x) = 0, \qquad  j=1,2,...,l \quad  (3)  \\
c_i(x) \leq0, \quad  i=1,2,...,k \qquad(4) \\ 
\alpha_i \geq0, \quad \quad \  i=1,2,...,k \qquad(5) \\ 
\end{cases}

知足 KKT 条件后极小化 Lagrangian 便可获得在不等式约束条件下的可行解。 KKT 条件看起来不少,其实很好理解:

  1. 拉格朗日取得可行解的必要条件;
  2. 这就是以上分析的一个比较有意思的约束,称做松弛互补条件;
  3. 初始的约束条件;
  4. 初始的约束条件;
  5. 不等式约束的 Lagrange Multiplier需知足的条件。

主要的KKT条件即是 (3) 和 (5) ,只要知足这俩个条件即可直接用拉格朗日乘子法, SVM 中的支持向量即是来自于此,须要注意的是 KKT 条件与对偶问题也有很大的联系

拉格朗日乘子法是怎么想出来的

拉格朗日乘子法的思路是:给予违反约束适当的惩罚,使得无约束的拉格朗日函数的解与原优化函数的解一致。拉格朗日乘子法的策略是将有约束的问题转化成无约束的优化问题

考虑多个约束条件的原始最优化问题:

\min_{x\in R^n}\ f(x)
s.t. \quad c_{i}(x)\leq0 \ ,\quad i=1,2,...,k
\quad \qquad h_{j}(x)=0 \ ,\quad j=1,2,...,l

咱们对这种多维约束条件,有以下拉格朗日函数:

L(x,\alpha,\beta)=f(x)+ \sum_{i=1}^k \alpha_{i} c_{i}(x)+\sum_{j=1}^l\beta_{j}h_{j}(x)

假设给定某个x,若是x违反原始问题的约束条件,即存在某个i使得c_{i}(w)>0或者存在某个j使得h_{j}(w) \neq0,那么就有

\max_{\alpha,\beta:\alpha_{i} \geq0} \left[ f(x)+\sum_{i=1}^k \alpha_{i}c_{i}(x)+ \sum_{j=1}^l\beta_{j}h_{j}(x)  \right]=\infty

由于若某个i使约束c_{i}>0,则可令\alpha_{i} \rightarrow+ \infty,若某个j使得约束h_{j}(x) \neq0,则令\beta_{j}使得\beta_{j}h_{j}(x) \rightarrow +\infty,而将其他的\alpha_{i},\beta_{j}均取为0。这样使得不知足约束条件的都取成\infty,而相反的,知足约束条件的咱们让\alpha,\beta置0,使得拉格朗日函数与原函数解相同。

以上陈述详细的说明了拉格朗日乘子法的思想。

固然,除了拉格朗日乘子法,还有其余思路去求解这个约束的最优化问题的。能够,咱们能够不像拉格朗日同样给以违反以惩罚,从侧面解出,而是顺着约束条件去找这个最优值。可是咱们的现实问题很是复杂,有时候连有没有最有值或者最优值可不可行都没法得知,这类方法也就不适用了。

因此:

存在即有理。有啥理? 答曰:解决这一类问题的已知最有效方法。


手推对偶中的KKT条件已经移至《拉格朗日对偶》,有兴趣的朋友能够过去看看。

参考文献:

[1].《统计学习方法》 李航 2012年3月第1版

[2].约束优化方法之拉格朗日乘子法与KKT条件

[3].【直观详解】拉格朗日乘法和KKT条件

[4].拉格朗日乘子法和KKT条件

[5].《机器学习》 周志华 2016年1月第1版

相关文章
相关标签/搜索