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. NTP 集群简略部署指南

    NTP 集群简略部署指南 by 无若 1. NTP 简介 网络时间协议(英语:Network Time Protocol,简称NTP)是在数据网络潜伏时间可变的计算机系统之间通过分组交换进行时钟同步的 ...

  2. 跟我一起写 Makefile(十三)

    五.定义模式规则 你可以使用模式规则来定义一个隐含规则.一个模式规则就好像一个一般的规则,只是在规则中,目标的定义需要有"%"字符."%"的意思是表示一个或多个 ...

  3. 用SamInside破解Windows登录密码

    用小马PE的USB-HDD+格式制作启动优盘: 笔记本启动时按ESC键,选择USB启动: 进入WinPE后,将%SystemRoot%/system32/config全部拷贝出来(WinXP这个文件夹 ...

  4. PLSQL编程及存储过程的创建

    一.PLSQL的初步介绍 PLSQL是使sql具有处理过程的能力,可以分为三个部分:声明部分.可执行部分.异常处理部分 1.如何使用PLSQL打印Hello World! 在sqlplus里中打印   ...

  5. one_gadget的一些姿势

    概要 one_gadget是libc中存在的一些执行execve("/bin/sh", NULL, NULL)的片段,当可以泄露libc地址,并且可以知道libc版本的时候,可以使 ...

  6. 5 秒克隆声音「GitHub 热点速览 v.21.34」

    作者:HelloGitHub-小鱼干 本周特推的 2 个项目都很好用,Realtime-Voice-Clone-Chinese 能让你无需开启变声音,即可获得一个特定声音的语音.这个声音可以是你朋友的 ...

  7. MySQL自定义函数与存储过程的创建、使用、删除

    前言 日常开发中,可能会用到数据库的自定义函数/存储过程,本文记录MySQL对自定义函数与存储过程的创建.使用.删除的使用 通用语法 事实上,可以认为存储过程就是没有返回值的函数,创建/使用/删除都非 ...

  8. noip35

    T1 考场乱搞出锅了... 正解: 把原序列按k往左和往右看成两个序列,求个前缀和,找下一个更新的位置,直接暴跳. Code #include<cstdio> #include<cs ...

  9. Java社区——个人项目开发笔记(一)

    1.maven安装与测试 安装过程略,常用的maven命令行工具: mvn --version 查看maven版本 mvn compile 编译maven工程 mvn clean 删除编译文件 mvn ...

  10. 使用javascript纯前端导出excel

    前言(感谢技术的分享者) 参考博客地址 github地址 由SheetJS出品的js-xlsx是一款非常方便的只需要纯JS即可读取和导出excel的工具库,功能强大,支持格式众多,支持xls.xlsx ...