1 前言

  拉格朗日乘子法(Lagrange Multiplier)  和 KKT(Karush-Kuhn-Tucker)  条件是求解约束优化问题的重要方法,在有等式约束时使用拉格朗日乘子法,在有不等约束时使用 KKT 条件。当然,这两个方法求得的结果只是必要条件,只有当目标函数是凸函数的情况下,才能保证是充分必要条件。

1.1 最优化问题三种约束条件

  1:无约束条件

   解决方法通常是函数对变量求导,令导函数等于0的点可能是极值点,将结果带回原函数进行验证。

  2:等式约束条件

  设目标函数为 $f(x)$,约束条件为 $h_k(x)$。s.t. 表示 subject to ,“受限于”的意思。比如:

    $\quad min \quad f(x)$
    $\quad s.t.\quad h_{k}(x)=0 \quad k=1,2,...,l$

  解决方法是 消元法 或者 拉格朗日法,消元法比较简单不在赘述。

  3:不等式约束条件

  设目标函数 $f(x)$,不等式约束为 $g(x)$,有的教程还会添加上等式约束条件 $h(x)$。此时的约束优化问题描述如下:

    $\quad min \quad f(x)$
    $\quad s.t.\quad h_{j}(x)=0 \quad  j=1,2,...,p$
       $\quad \quad \quad g_{k}(x) \le 0 \quad  k=1,2,...,q$

  对于这三种情况均有对应的方法处理:

  1.无约束条件:对变量求导并令其为0,求得极值;
  2.只有等式约束:拉格朗日乘子;
  3.等式约束和不等式约束:KKT条件。

2 拉格朗日乘数法

  在数学最优问题中,拉格朗日乘数法是一种寻找变量受一个或多个条件所限制的多元函数的极值的方法。这种方法将一个有 $n$ 个变量与 $k$ 个约束条件的最优化问题转换为一个有 $n + k$ 个变量的方程组的极值问题,其变量不受任何约束。

2.1 一个等式约束条件下

    $\quad min \quad f(x)$
    $\quad s.t. \quad h(x)=0$

  

  如图示,只有相切的时候才有可能是极值点,在相切的地方 $h(x)$ 的梯度和 $f(x)$ 的梯度应该是在同一条直线上,即在极值点有:
    $\nabla f(x)=\lambda \nabla h(x)$
  根据上述分析,我们将原始优化问题表示为:
    $L(x, \lambda)=f(x)+\lambda h(x)$
  $ \mathrm{L}(x, \lambda) $ 即拉格朗日函数,$ \lambda $ 是拉格朗日乘子。拉格朗日函数对 $x$ 求偏导的结果为 $0$ 时,即为最优解。
  例子:
    $\quad min \quad f(x,y)$
    $\quad s.t. \quad \varphi (x,y)=0$
  设给定二元函数 $z=f(x,y)$ 和附加条件 $\varphi (x,y)=0$,为寻找 $z=f(x,y)$ 在附加条件下的极值点,先做拉格朗日函数$F(x,y,\lambda ) =f(x,y)+\lambda \varphi (x,y)$ ,其中$\lambda$为参数。
  令 $F(x,y,\lambda )$ 对 $x$ 和 $y$ 和 $\lambda$ 的一阶偏导数等于零,即
    $F^{'}_x =f^{'}_x(x,y) +\lambda \varphi ^{'}_x(x,y)=0$
    $F^{'}_y =f^{'}_y(x,y) +\lambda \varphi ^{'}_y(x,y)=0$
    $F^{'}_\lambda = \varphi(x,y)=0$
  由上述方程组解出 $x,y$ 及 $\lambda$,如此求得的 $(x,y)$,就是函数 $z=f(x,y)$ 在附加条件 $ \varphi(x,y)=0$ 下的可能极值点。

2.2 多个等式约束条件下

  该情况通常更为常见,含有多个等式约束,一般形式为:

    $\quad min \quad f(x)$
    $\quad s.t.\quad h_{k}(x)=0 \quad k=1,2,...,l$

  定义拉格朗日函数 $F(x)$

    $F(x,\lambda)=f(x)+\sum \limits _{k=1}^{l} \lambda_kh_k(x)$

  其中 $\lambda_k$ 是各个约束条件的待定系数。

  然后求解各变量的偏导方程:

    $\frac{\partial F}{\partial x} ,...,\frac{\partial F}{\partial \lambda_1} ,...,\frac{\partial F}{\partial \lambda_l}$

  如果有 $n$ 个变量与 $k$ 个约束条件的最优化问题,就应该有 $n+k $ 个方程。求出的方程组的解就可能是最优化值,将结果带回原方程验证就可得到解。

3 KKT条件

  优化问题中既包含等式约束和不等式约束是最复杂也最常见的模型。问题的建模为:
    $\quad min \quad f(x)$
    $\quad s.t.\quad h_{j}(x)=0 \quad j=1,2,...,p$
     $\quad \quad \quad g_{k}(x) \le 0 \quad k=1,2,...,q$
  对于等式约束,可以引入拉格朗日乘子进行转换。我们着重看下不等式约束。
  我们定义不等式约束下的拉格朗日函数 $L$,则 $L$ 表达式为:
    $L(x,\lambda ,\mu )=f(x)+\sum \limits _{j=1}^{p}\lambda _jh_j(x) +\sum \limits _{k=1}^{q}\mu _kg_k(x)$
  其中 $f(x)$ 是原目标函数,$h_j(x)$ 是第 $j$ 个等式约束条件,$λ_j$ 为等式约束引入的拉格朗日乘子;$g_k$ 是不等式约束,$u_k$ 为不等式约束引入的松弛变量,也叫做KKT乘子,注意KKT乘子是大于 $0$ 的。
  求出的极值点 $ x^{*}$ 满足 KKT 条件:
    $\left\{\begin{aligned} \nabla f\left(x^{*}\right)+\sum_{k} \lambda_{j} \nabla h_{k}\left(x^{*}\right)+\sum_{j} \mu_{k} \nabla g_{j}\left(x^{*}\right) &=0 \\ \mu_{k} & \geq 0 \\ \mu_{k} g_{j}\left(x^{*}\right) &=0 \\ g_{j}\left(x^{*}\right) & \leq 0 \end{aligned}\right.$
  注意:$f(x)$,$g(x)$ 都是凸函数。

4 原始问题

  原优化问题:

    $\begin{array}{ll} \min _{x} & f(x) \\ \text { s.t. } h_{i}(x)=0 & i=1,2,3, \ldots, m \\ g_{j}(x) \leq 0 & j=1,2,3, \ldots, n \end{array}$

  拉格朗日函数:

    ${\large L(x, \alpha, \beta)=f(x)+\sum \limits _{i=1}^{m} \alpha_{i} h_{i}(x)+\sum  \limits _{j=1}^{n} \beta_{j} g_{j}(x)} $

  对上式先最大化再最小化:

    ${\large \underset{x}{min} \left[ \underset{\alpha, \beta ; \beta_{j} \geq 0}{max} \   L(x, \alpha, \beta) \right]=\underset{x}{min} \left\{f(x)+ \underset{\alpha, \beta ; \beta_{j} \geq 0}{max} \  \left[\sum \limits_{i=1}^{m} \alpha_{i} h_{i}(x)+\sum \limits _{j=1}^{n} \beta_{j} g_{j}(x)\right]\right\}} $

  在满足 KKT 条件的情况下,该式和原优化问题是等价的。
  将上式分为两部分:
  1. 可行解区域内,原优化问题的约束条件都得到满足。因为 $h_{i}(x)=0$ , 所以不管 $\alpha$ 如 何变化,必然有 $\alpha h_{i}(x)=0$ 。$g_{j}(x)<0$ , 且限定了 $ \beta_{j}>0$ , 则 $\beta_{j} g_{i}(x)$ 最大值为 $0$ 综上, 在可行解区域内:

    ${\large {\large  \underset{\alpha, \beta ; \beta_{j} \geq 0}{max} \ L(x, \alpha, \beta) =f(x)+ \underset{\alpha, \beta ; \beta_{j} \geq 0}{max} \  [\sum \limits_{i=1}^{m} \alpha_{i} h_{i}(x)+\sum \limits _{j=1}^{n} \beta_{j} g_{j}(x)]=f(x)} } $

  2. 可行解区域外, 此时原优化问题的约束条件未满足。若 $h_{i}(x) \neq 0$ , 则最大化 后为 $\infty$ 。 若 $g_{j}(x)>0$ , 则最大化后也为 $ \infty$ 。所以在可行解区域外:

    $ {\large \underset{\alpha, \beta ; \beta_{j} \geq 0}{max} \ L(x, \alpha, \beta) =+\infty} $

  综合上面两个论域, $\mathrm{f}(\mathrm{x})$  在可行解区域内最小化,等于 $ \underset{\alpha, \beta ; \beta_{j} \geq 0}{max} \ L(x, \alpha, \beta) $ 的最小化,而在可行解区域外, $ \underset{\alpha, \beta ; \beta_{j} \geq 0}{max} \ L(x, \alpha, \beta) $无极值。这样当我们尝试对其进行最小化时也就相当于原问题最优化问题了。

5 对偶问题

  定义:

    ${\large \theta_{p}(w)=\underset{\alpha, \beta ; \beta_{j} \geq 0}{max} \ \mathcal{L}(w, \alpha, \beta)} $

  则最小化primal问题与原问题有同样的解:

    ${\large \underset{w}{min}\ \  \theta_{p}(w)=\underset{w}{min} \underset{\alpha, \beta: \alpha_{i} \geq 0}{max}\mathcal{L}(w, \alpha, \beta)} $

  定义dual优化问题如下:

    ${\large \underset{\alpha, \beta: \alpha_{i} \geq 0}{max}\ \ \theta_{\mathcal{D}}(\alpha, \beta)=\underset{\alpha, \beta: \alpha_{i} \geq 0}{max}\underset{w}{min} \mathcal{L}(w, \alpha, \beta)} $

  注意, $\theta_{p}$ 是针对 $ \alpha , \beta $ 的优化,而 $\theta_{\mathrm{D}} $ 是针对 $w$ 的优化。
  我们定义:

    ${\large \begin{array}{l} \mathrm{p}^{*}=\underset{w}{min}\ \  \theta_{p}(w) \text { 为 primal  问题的值} \\ d^{*}=\underset{\alpha, \beta ; \alpha i>0}{max} \theta_{D}(\alpha, \beta) \text { 为 Dual 问题的值 } \end{array}} $

  他们之间满足的满足是:

      ${\large d^{*}=\underset{\alpha, \beta: \alpha_{i} \geq 0}{max} \ \  \underset{w}{min} \mathcal{L}(w, \alpha, \beta) \leq \underset{w}{min}\ \  \underset{\alpha, \beta: \alpha_{i} \geq 0}{max} \ \  \mathcal{L}(w, \alpha, \beta)=p^{*} } $

  只有在KKT条件时,才有: $d^{*}=p^{*} $,此时,我们可以通过求解Dual 问题来求解primal问题。
  证明:  ${\large d^{*}=\underset{\alpha, \beta: \alpha_{i} \geq 0}{max} \ \  \underset{w}{min} \mathcal{L}(w, \alpha, \beta) \leq \underset{w}{min}\ \  \underset{\alpha, \beta: \alpha_{i} \geq 0}{max} \ \  \mathcal{L}(w, \alpha, \beta)=p^{*}}  $
  对任意   $(w, \alpha, \beta)$ ,如下不等式一定成立:

    ${\large \theta_{\mathcal{D}}(\alpha, \beta)=\underset{w}{min}\ \ \ \mathcal{L}(w, \alpha, \beta) \leq \mathcal{L}(w, \alpha, \beta) \leq \underset{\alpha, \beta: \alpha_{i} \geq 0}{max} \ \mathcal{L}(w, \alpha, \beta)=\theta_{\mathfrak{p}}(w)} $

  即:
    ${\large \theta_{\mathcal{D}}(\alpha, \beta) \leq \theta_{\mathfrak{p}}(w)} $
  所以:
    ${\large \underset{\alpha, \beta: \alpha_{i} \geq 0}{max} \  \theta_{\mathcal{D}}(\alpha, \beta) \leq \underset{w}{min}\ \theta_{\mathfrak{p}}(w)} $
  即得到:

    ${\large d^{*}=\underset{\alpha, \beta: \alpha_{i} \geq 0}{max} \ \  \underset{w}{min} \mathcal{L}(w, \alpha, \beta) \leq \underset{w}{min}\ \  \underset{\alpha, \beta: \alpha_{i} \geq 0}{max} \ \  \mathcal{L}(w, \alpha, \beta)=p^{*} } $

参考

1:百度百科——拉格朗日乘数法

2:拉格朗日乘数法解含不等式约束的最优化问题

3:非线性优化中的 KKT 条件该如何理解?

4:KKT 条件

5:支持向量机(SVM)详解

6:[线性分类器](四)万字长文解释拉格朗日乘子与支持向量机

参考视频

1:支持向量机(SVM)详解

机器学习——最优化问题:拉格朗日乘子法、KKT条件以及对偶问题的更多相关文章

  1. 拉格朗日乘子法 - KKT条件 - 对偶问题

    接下来准备写支持向量机,然而支持向量机和其他算法相比牵涉较多的数学知识,其中首当其冲的就是标题中的拉格朗日乘子法.KKT条件和对偶问题,所以本篇先作个铺垫. 大部分机器学习算法最后都可归结为最优化问题 ...

  2. 机器学习笔记——拉格朗日乘子法和KKT条件

    拉格朗日乘子法是一种寻找多元函数在一组约束下的极值方法,通过引入拉格朗日乘子,可将有m个变量和n个约束条件的最优化问题转化为具有m+n个变量的无约束优化问题.在介绍拉格朗日乘子法之前,先简要的介绍一些 ...

  3. 拉格朗日乘子法&KKT条件

    朗日乘子法(Lagrange Multiplier)和KKT(Karush-Kuhn-Tucker)条件是求解约束优化问题的重要方法,在有等式约束时使用拉格朗日乘子法,在有不等约束时使用KKT条件.前 ...

  4. 真正理解拉格朗日乘子法和 KKT 条件

        这篇博文中直观上讲解了拉格朗日乘子法和 KKT 条件,对偶问题等内容.     首先从无约束的优化问题讲起,一般就是要使一个表达式取到最小值: \[min \quad f(x)\]     如 ...

  5. 关于拉格朗日乘子法和KKT条件

    解密SVM系列(一):关于拉格朗日乘子法和KKT条件 标签: svm算法支持向量机 2015-08-17 18:53 1214人阅读 评论(0) 收藏 举报  分类: 模式识别&机器学习(42 ...

  6. 拉格朗日乘子法和KKT条件

    拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush-Kuhn-Tucker)条件是求解约束优化问题的重要方法,在有等式约束时使用拉格朗日乘子法,在有不等约束时使用KKT条件 ...

  7. 重温拉格朗日乘子法和KKT条件

    在求取有约束条件的优化问题时,拉格朗日乘子法(Lagrange Multiplier) 和KKT条件是非常重要的两个求取方法,对于等式约束的优化问题,可以应用拉格朗日乘子法去求取最优值:如果含有不等式 ...

  8. 第99:真正理解拉格朗日乘子法和 KKT 条件

  9. 【机器学习之数学】03 有约束的非线性优化问题——拉格朗日乘子法、KKT条件、投影法

    目录 1 将有约束问题转化为无约束问题 1.1 拉格朗日法 1.1.1 KKT条件 1.1.2 拉格朗日法更新方程 1.1.3 凸优化问题下的拉格朗日法 1.2 罚函数法 2 对梯度算法进行修改,使其 ...

  10. 深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件

    [整理]   在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法.在有等式约束时使用拉格朗日乘子法,在有 ...

随机推荐

  1. 在Linux系统上查找文件

    Find命令 格式:find <指定搜索范围> <指定条件> <指定动作> 其中搜索范围是一个目录名,指定条件包括文件名.文件属性(修改时间所属用户等).所在位置特 ...

  2. Notes about BSD

    FreeBSD: mainly for web server; OpenBSD: mainly for security concerned server;

  3. Clipboard Manager on Xfce

    Clipman-plugin sudo apt-get install xfce4-clipman-plugin No config function. No hotkey. Very basic f ...

  4. Java集合框架详细总结

    一:Collection集合 呼~,历过好几天的奋战终于把集合框架肝完了,b站某马老师讲的是真的非常详细而且动听,原理给你分析得明明白白的,此前也找了许多关于集合这一大章节的视频,发现更多的是针对于使 ...

  5. SQL injection : UNION attacks

    当应用程序易受SQL注入攻击并且查询结果在应用程序的响应中返回时,可以使用UNION关键字从数据库中的其他表检索数据.这将导致SQL注入联合攻击. UNION关键字允许您执行一个或多个附加的SELEC ...

  6. FTP三种访问模式

    FTP匿名访问模式是比较不安全的服务模式,尤其在真实的工作环境中千万不要存放敏感的数据,以免泄露. vsftpd程序默认已经允许匿名访问模式,我们要做的就是开启匿名用户的上传和写入权限,写入下面的参数 ...

  7. Spring源码解析之ConfigurationClassPostProcessor(二)

    上一个章节,笔者向大家介绍了spring是如何来过滤配置类的,下面我们来看看在过滤出配置类后,spring是如何来解析配置类的.首先过滤出来的配置类会存放在configCandidates列表, 在代 ...

  8. Python 读写文件的正确方式

    当你用 Python 写程序时,不论是简单的脚本,还是复杂的大型项目,其中最常见的操作就是读写文件.不管是简单的文本文件.繁杂的日志文件,还是分析图片等媒体文件中的字节数据,都需要用到 Python ...

  9. NOIP 模拟 $29\; \rm 最长不下降子序列$

    题解 \(by\;zj\varphi\) 观察这个序列,发现模数很小,所以它的循环节很小. 那么可以直接在循环节上做最长上升子序列,但是循环节中的逆序对会对拼接后的答案造成影响. 没有必要找逆序对个数 ...

  10. 项目报错:Invalid bound statement (not found):

    出现这种错误有好多种情况,常见的错误有以下这些: 1.检查xml文件所在package名称是否和Mapper interface所在的包名 <mapper namespace="com ...