更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:https://www.cnblogs.com/nickchen121/

拉格朗日对偶性

在约束最优化问题中,拉格朗日对偶性(Lagrange duality)可以将原始问题转换为对偶问题,然后通过求解对偶问题的解得到原始问题的解。

一、原始问题

1.1 约束最优化问题

假设\(f(x),c_i(x),h_j(x)\)是定义在\(R^n\)上的连续可微函数,则约束最优化问题的原始问题为
\[
\begin{align}
& \underbrace{min}_{x\in{R^n}}f(x) \\
& s.t. \, c_i(x)\leq0,\quad{i=1,2,\cdots,k} \\
& h_j(x)=0,\quad{j=1,2,\cdots,l}
\end{align}
\]
如果不考虑约束条件,约束问题就是
\[
\underbrace{min}_{x\in{R^n}}f(x)
\]
因为已经假设\(f(x),c_i(x),h_j(x)\)连续可微,直接对\(f(x)\)求导取0,即可求出最优解,但是这里有约束条件,因此得想办法去掉约束条件,而拉格朗日函数正是干这个的。

1.2 广义拉格朗日函数

为了解决上述原始问题,引入广义拉格朗日函数(generalized Lagrange function)
\[
L(x,\alpha,\beta)=f(x)+\sum_{i=1}^k\alpha_ic_i(x)+\sum_{j=1}^l\beta_jh_j(x)
\]
其中\(x=(x^{(1)},x^{(2)},\cdots,x^{(n)})^T\in{R^n}\),\(\alpha_i\geq0,\beta_j\)是拉格朗日乘子。

如果把\(L(x,\alpha,\beta)\)看作是关于\(\alpha_i,\beta_j\)的函数,求其最大值,即
\[
\underbrace{max}_{\alpha,\beta}L(x,\alpha,\beta)
\]
由于\(\alpha_i,\beta_j\)作为拉格朗日乘子已经可知,因此可以把\(L(x,\alpha,\beta)\)看作是关于\(x\)的函数
\[
\theta_P(x)=\underbrace{max}_{\alpha,\beta}L(x,\alpha,\beta)
\]
其中下标\(P\)表示原始问题。

1.3 约束条件的考虑

假设给定某个\(x\)。

  1. 如果\(x\)违反原始问题的约束条件,即存在某个\(i\)使得\(c_i(w)>0\)或存在某个\(j\)使得\(h_j(w)\neq0\),则有
    \[
    \theta_P{(x)}=\underbrace{max}_{\alpha,\beta:\alpha_i\leq0}[f(x)+\sum_{i=1}^k\alpha_ic_i(x)+\sum_{i=1}^l\beta_jh_j(x)] = +\infty
    \]
    因为如果某个\(i\)使得约束条件\(c_i(x)>0\),则可以令\(\alpha_i\rightarrow{+\infty}\);如果某个\(j\)使得\(h_j(x)\neq0\),则可以使得\(\beta_jh_j(x)\rightarrow{+\infty}\)。
  2. 如果\(x\)满足原始问题的约束条件,\(h_j(x)=0\)并且\(\alpha_ic_i(x)\leq0\),因此\(\theta_P{(x)}\)的最大值即为\(f(x)\),即\(\theta_P{(x)}=f(x)\)。

通过对约束条件的考虑即可得
\[
\theta_P{(x)} =
\begin{cases}
f(x), & \text{$x$满足约束条件} \\
+\infty, & \text{其他}
\end{cases}
\]
所以如果考虑极小化问题
\[
\underbrace{min}_x\theta_P{(x)}_{x} = \underbrace{min}_{x}\,\underbrace{max}_{\alpha,\beta}L(x,\alpha,\beta) = \underbrace{min}_{x}f(x)
\]
它与原始问题是等价的,其中\(\underbrace{min}_{x}\,\underbrace{max}_{\alpha,\beta}L(x,\alpha,\beta)\)被称作广义拉格朗日函数的极小极大问题。

通过广义拉格朗日函数的极小极大问题,可以定义原始问题的最优值
\[
p^*=\underbrace{min}_x\theta_P(x)
\]
这一节主要通过使用拉格朗日函数把原始约束问题转化为无约束问题,即将约束问题无约束化。

二、对偶问题

定义一个关于\(\alpha,\beta\)的函数
\[
\theta_D(\alpha,\beta)=\underbrace{min}_xL(x,\alpha,\beta)
\]
其中等式右边是关于\(x\)的函数的最小化,即确定了\(x\)的值,最小值只与\(\alpha,\beta\)有关。
如果极大化\(\theta_D(\alpha,\beta)\),即
\[
\underbrace{max}_{\alpha,\beta}\theta_D(\alpha,\beta)=\underbrace{max}_{\alpha,\beta}\underbrace{min}_{x}L(x,\alpha,\beta)
\]
上述就是原始问题的对偶问题,其中\(\underbrace{max}_{\alpha,\beta}\underbrace{min}_{x}L(x,\alpha,\beta)\)也称为广义拉格朗日函数的极大极小问题。

该对偶问题的原始问题为
\[
\underbrace{min}_x\theta_P{(x)}_{x} = \underbrace{min}_{x}\,\underbrace{max}_{\alpha,\beta}L(x,\alpha,\beta)
\]
原始问题是先固定\(L(x,\alpha,\beta)\)中的\(x\),优化出参数\(\alpha,\beta\),再优化\(x\);对偶问题是先固定\(\alpha,\beta\),优化出\(x\),然后再确定\(\alpha,\beta\)。
对偶问题的最优值为
\[
d^*=\underbrace{max}_{\alpha,\beta}\theta_D(\alpha,\beta)
\]

三、原始问题和对偶问题的关系

3.1 定理1

如果原始问题和对偶问题都有最优解,则
\[
d^* = \underbrace{max}_{\alpha,\beta}\underbrace{min}_xL(x,\alpha,\beta)\leq\underbrace{min}_x\underbrace{max}_{\alpha,\beta}L(x,\alpha,\beta)=p^*
\]
因为对任意的\(\alpha,\beta,x\),都有
\[
\theta_D(\alpha,\beta)=\underbrace{min}_xL(x,\alpha,\beta)\leq{L(x,\alpha,\beta)}\leq\underbrace{max}_{\alpha,\beta}L(x,\alpha,\beta)=\theta_P(x)
\]

\[
theta_D(\alpha,\beta)\leq\theta_P(x)
\]
由于原始问题和对偶问题都有最优值,所以
\[
\underbrace{max}_{\alpha,\beta}\theta_D(\alpha,\beta)\leq\underbrace{min}_x\theta_P(x)
\]

\[
d^*=\underbrace{max}_{\alpha,\beta}\underbrace{min}_xL(x,\alpha,\beta)\leq\underbrace{min}_x\underbrace{max}_{\alpha,\beta}L(x,\alpha,\beta)=p^*
\]
上述说明了原始问题的最优值不小于对偶问题的最优值,但是我们要通过对偶问题来求解原始问题,就必须得使原始问题的最优值与对偶问题的最优值相等。

3.2 推论1

通过定理1可以推出:假设\(x^*,\alpha^*,\beta^*\)分别是原始问题和对偶问题的可行解,如果\(d^*=p^*\),则\(x^*,\alpha^*,\beta^*\)分别是原始问题和对偶问题的最优解。

当原始问题和对偶问题的最优值相等\(d^*=p^*\),如果使用对偶问题比求解原始问题简单,则可以用对偶问题求解原始问题。

3.3 定理2

对于原始问题和对偶问题,假设函数\(f(x)\)和\(c_i(x)\)是凸函数,\(h_j(x)\)是仿射函数(注:仿射函数是一阶多项式构成的函数,\(f(x)=Ax+b\),\(A\)是矩阵,\(x,b\)是向量);并且假设不等式约束\(c_i(x)\)是严格可行的,即存在\(x\),对所有的\(i\)有\(c_i(x)<0\),则存在\(x^*,\alpha^*,\beta^*\),使\(x^*\)是原始问题的解,\(\alpha^*,\beta^*\)是对偶问题的解,并且会有
\[
p^*=d^*=L(x^*,\alpha^*,\beta^*)
\]

3.4 定理3(KTT条件)

对于原始问题和对偶问题,假设函数\(f(x)\)和\(c_i(x)\)是凸函数,\(h_j(x)\)是仿射函数;并且假设不等式约束\(c_i(x)\)是严格可行的,即存在\(x\),对所有的\(i\)有\(c_i(x)<0\),则\(x^*\)是原始问题的解,\(\alpha^*,\beta^*\)是对偶问题的解的充分必要条件是\(x^*,\alpha^*,\beta^*\)满足下面的Karush-Kuhn-Tucker(KKT)条件
\[
\begin{align}
& \nabla_xL(x^*,\alpha^*,\beta^*)=0 \\
& \nabla_\alpha{L(x^*,\alpha^*,\beta^*)}=0 \\
& \nabla_\beta{L(x^*,\alpha^*,\beta^*)}=0 \\
& \alpha_i^*c_i(x^*)=0,\quad{i=1,2,\cdots,k} \\
& c_i(x^*)\leq0,\quad{i=1,2,\cdots,k} \\
& \alpha_i^*\geq0,\quad{i=1,2,\cdots,k} \\
& h_j(x^*)=0,\quad{j=1,2,\cdots,l}
\end{align}
\]
其中\(\alpha_i^*c_i(x^*)=0,\quad{i=1,2,\cdots,k}\)是KKT的对偶互补条件,由该条件可知:如果\(\alpha_i^*>0\),则\(c_i(x^*)=0\)。

A-08 拉格朗日对偶性的更多相关文章

  1. 3. 支持向量机(SVM)拉格朗日对偶性(KKT)

    1. 感知机原理(Perceptron) 2. 感知机(Perceptron)基本形式和对偶形式实现 3. 支持向量机(SVM)拉格朗日对偶性(KKT) 4. 支持向量机(SVM)原理 5. 支持向量 ...

  2. 拉格朗日对偶性(Lagrange duality)

    目录 拉格朗日对偶性(Lagrange duality) 1. 从原始问题到对偶问题 2. 弱对偶与强对偶 3. KKT条件 Reference: 拉格朗日对偶性(Lagrange duality) ...

  3. 简易解说拉格朗日对偶(Lagrange duality)(转载)

    引言:尝试用最简单易懂的描述解释清楚机器学习中会用到的拉格朗日对偶性知识,非科班出身,如有数学专业博友,望多提意见! 1.原始问题 假设是定义在上的连续可微函数(为什么要求连续可微呢,后面再说,这里不 ...

  4. 简易解说拉格朗日对偶(Lagrange duality)

    引言:尝试用最简单易懂的描述解释清楚机器学习中会用到的拉格朗日对偶性知识,非科班出身,如有数学专业博友,望多提意见! 1.原始问题 假设是定义在上的连续可微函数(为什么要求连续可微呢,后面再说,这里不 ...

  5. 支持向量机(SVM)基础

    版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...

  6. SVM支撑向量机原理

    转自:http://blog.csdn.net/v_july_v/article/details/7624837 目录(?)[-] 支持向量机通俗导论理解SVM的三层境界 前言 第一层了解SVM 1分 ...

  7. 06机器学习实战之SVM

    对偶的概念 https://blog.csdn.net/qq_34531825/article/details/52872819?locationNum=7&fps=1 拉格朗日乘子法.KKT ...

  8. 支持向量机通俗导论(理解SVM的三层境界)(ZT)

    支持向量机通俗导论(理解SVM的三层境界) 原文:http://blog.csdn.net/v_JULY_v/article/details/7624837 作者:July .致谢:pluskid.白 ...

  9. 支持向量机通俗导论(理解SVM的三层境界)【非原创】

    支持向量机通俗导论(理解SVM的三层境界) 作者:July :致谢:pluskid.白石.JerryLead. 出处:结构之法算法之道blog. 前言 动笔写这个支持向量机(support vecto ...

随机推荐

  1. 【JavaWeb】Servlet3.0中注解驱动开发

    一.概述 二.@WebServlet注解 三.共享库/运行时插件 2.1 注册Servlet 2.2 注册监听器 2.3 注册过滤器 一.概述 Servlet3.0中引入了注解开发 二.@WebSer ...

  2. java 代理模式-静态代理与动态代理

    最近在研究SpringAOP,当然要学习AOP就要知道这么健硕.强大的功能的背后究竟隐藏着怎样不可告人的“秘密”?? 接下来就是查阅了许多资料详细的研究了一下Java的代理模式,感觉还是非常非常重要的 ...

  3. Winform中DevExpress的TreeList的入门使用教程(附源码下载)

    场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...

  4. HBase读延迟的12种优化套

    任何系统都会有各种各样的问题,有些是系统本身设计问题,有些却是使用姿势问题.HBase也一样,在真实生产线上大家或多或少都会遇到很多问题,有些是HBase还需要完善的,有些是我们确实对它了解太少. 总 ...

  5. Hessian 接口使用示例总结(转载)

    一.使用hessian接口准备 首先,hessian接口的使用,必须要准备hessian接口的jar包,本文使用的jar包如下:hessian-4.0.7.jar; Hessian接口的使用一般是在两 ...

  6. SpringBoot 2.0 + Nacos + Sentinel 流控规则集中存储

    前言 Sentinel 原生版本的规则管理通过API 将规则推送至客户端并直接更新到内存中,并不能直接用于生产环境.不过官方也提供了一种 Push模式,扩展读数据源ReadableDataSource ...

  7. 为什么一个标准的反相器中 P 管的宽长比要比 N 管的大呢?

    和载流子有关.P 管是空穴导电,而 N 管是电子导电,电子的迁移率大于空穴.所以在同样的电场下,N 管的电流要大于 P 管,因此要增大 P 管的宽长比,使之对称,这样才能使得两者上升下降时间相等.高低 ...

  8. Go微服务容错与韧性(Service Resilience)

    Service Resilience是指当服务的的运行环境出现了问题,例如网络故障或服务过载或某些微服务宕机的情况下,程序仍能够提供部分或大部分服务,这时我们就说服务的韧性很强.它是微服务中很重要的一 ...

  9. DefaultSerializer requires a Serializable payload but received an object of type [model.Admin]

    一.问题描述:   在用redis做二级缓存时,出现如下异常   DefaultSerializer requires a Serializable payload but received an o ...

  10. elasticsearch深度分页问题

    elasticsearch专栏:https://www.cnblogs.com/hello-shf/category/1550315.html 一.深度分页方式from + size es 默认采用的 ...