更新、更全的《机器学习》的更新网站,更有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. Java 网络编程:必知必会的 URL 和 URLConnection

    java.net.URL 类将 URL 地址进行了封装,并提供了解析 URL 地址的基本方法,比如获取 URL 的主机名和端口号.java.net.URLConnection 则代表了应用程序和 UR ...

  2. 使用FreePBX和第三方线路对接

    首先搭建好相关环境 在FreePBX的web-gui控制界面进行操作. 通信接口连接--->中继  先创建一条中继线路: 创建中继 设置这条线路 优先级为0 中继名: 设置一个名字 Outgoi ...

  3. Mybatis系列(三)XML

    Mybatis系列(三)XML 1.pom.xml依赖: <?xml version="1.0" encoding="UTF-8"?> <pr ...

  4. FreeSql (十五)查询数据

    FreeSql在查询数据下足了功能,链式查询语法.多表查询.表达式函数支持得非常到位. IFreeSql fsql = new FreeSql.FreeSqlBuilder() .UseConnect ...

  5. Android中px dpi dip density densityDpi 的相关说明

    转自:http://www.cnblogs.com/wader2011/archive/2011/11/29/2267490.html 概念解释 名词 解释 Px (Pixel像素) 不同设备显示效果 ...

  6. 2010年NOIP普及组复赛题解

    题目及涉及的算法: 数字统计:入门题: 接水问题:基础模拟题: 导弹拦截:动态规划.贪心: 三国游戏:贪心.博弈论. 数字统计 题目链接:洛谷 P1179 这道题目是一道基础题. 我们只需要开一个变量 ...

  7. thinkphp6.0 集成Alipay 手机和电脑端支付的方法

    本文由 BI8EJM 原创,转载请注明出处! 第一步 下载 Alipay 的PHP SDK  :https://docs.open.alipay.com/54/103419/ 第二步 解压下载都到的压 ...

  8. JAVA WEB中的Servlet过滤器

    实现一个Servlet过滤器,可以对用户登录情况进行控制.要求如下: 1)访问路径是admin下的资源,需要登录,如果用户没有登录,自动转向用户登录页面.用户登录成功后,再次访问admin下的资源不需 ...

  9. MOOC C++笔记(四):运算符重载

    第四周:运算符重载 基本概念 运算符重载,就是对已有的运算符(C++中预定义的运算符)赋予多重的含义,使同一运算符作用于不同类型的数据时导致不同类型的行为. 运算符重载的目的是:扩展C++中提供的运算 ...

  10. mysql安装和配置环境

    第一步:打开网址,https://www.mysql.com,点击downloads之后跳转到https://www.mysql.com/downloads 第二步 :跳转至网址https://dev ...