更新、更全的《机器学习》的更新网站,更有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. 解决flutter:unable to find valid certification path to requested target 的问题

    1.问题 周末在家想搞搞flutter,家里电脑是windows的,按照官网教程一步步安装好以后,创建flutter工程,点击运行,一片红色弹出来,WTF? PKIX path building fa ...

  2. GraphQL Java-入门指南

    GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时. GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任 ...

  3. 精品自用IDEA插件吐血推荐

    Alibaba Java Coding Guidelines 该插件集成了Alibaba代码编程规范,可以帮你找出你的代码怪味道 .gitignore 当你使用Git作为版本工具的时候,想要快速的添加 ...

  4. Day003_Linux基础——系统目录结构

    Linux系统的目录结构: 圆型节点代指目录,方型节点代指文件. 图中省去了很多不常用的目录与文件. 稍后单独讲/proc目录与/var目录. /usr 目录. /usr/local 用户个人安装的软 ...

  5. 深入理解SQL Server数据库Select查询原理(一)

    使用SQL Server十年有余,但是一直对其Select查询机制原理一致不明,直到最近有个通讯录表,很简单的一张表(但因简单,所以当时并没有考虑按部门排序问题),结果想查询某个单位所有部门(不重复) ...

  6. 学习 Nginx+IIS 分布式测试

    首先,从Nginx官网(http://nginx.org/en/download.html)下载了一个Window版本,解压后如图: 修改conf文件夹里面的配置文件nginx.conf,默认的808 ...

  7. 数据库常用SQL语句(三):子查询

    一.为什么会使用子查询 虽然可以通过连接查询来实现多表查询数据记录,但不建议使用,因为连接查询的性能很差,为什么呢?我们来进行分析,例如 我们要查询部门表t_dept 和雇员表t_employee中的 ...

  8. NOIP要炸?

    今天起床,翻我的群,突然看见一条消息: “NOIP要被禁赛了!” 莫名奇妙啊...... 于是我就进去看了看,网上疯传,搞得跟真的一样,差点吓到我了. 但好在每个人心中都有一个阿Q,会精神胜利法,于是 ...

  9. FreeSql (二十)多表查询 WhereCascade

    WhereCascade 多表查询时非常方便,有了它可以很轻松的完成类型软删除,租户条件的功能. IFreeSql fsql = new FreeSql.FreeSqlBuilder() .UseCo ...

  10. SQLServer的排序规则(字符集编码)

    SQLServer的排序规则(字符集编码) 一.总结 1.SQLServer中的排序规则就是其他关系型数据库里所说的字符集编码: 2.SQLServer中的排序规则可以在3处设置,如下: 服务器级别( ...