更新、更全的《机器学习》的更新网站,更有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. VS Code 前端开发常用快捷键插件

    一.vs code 的常用快捷键 1.注释:a) 单行注释:[ctrl+k,ctrl+c] 或 ctrl+/ b) 取消单行注释:[ctrl+k,ctrl+u] (按下ctrl不放,再按k + u) ...

  2. webstrom 内存溢出,软件崩溃卡死解决的方法

    今天用gulp搭建了一个工程,准备做一个体育h5的项目,其中需要用到sass代码压缩,加版本号等功能. gulpfile.js和package.json都是已经写好的.我用CMD命令窗口cnpm安装n ...

  3. VM安装后没有桥链接协议解决方法

    从昨天到今天各种折腾的.网络就是各种不通,能使用的手段都上了,还是不行.奇怪的连DNS都ping不通. ping DNS时一致报:  Destination Host Unreachable ... ...

  4. Servlet+jsp用户登录加上验证码

    最近公司有个项目被客户拿去进行漏洞扫描,发现用户登录太简单,容易被暴力破解.当然发现的问题很多,什么反射型XSS,存储型XSS,敏感信息泄露等等.但是我们今天不讲这么多,就说说如何修复暴力破解的问题. ...

  5. AutoCompleteTextView自动完成文本框

    AutoCompleteTextView是从EditText派生出来的,比普通编辑框多了一个功能,当用户输入一定字符后,自动完成文本框会显示一个下拉单,供用户选择,当选中一个后,被选中的内容会显示在文 ...

  6. Java 内省(Introspector)和 BeanUtils

    人生若只如初见,何事秋风悲画扇. 概述 内省(Introspector) 是Java 语言对 JavaBean 类属性.事件的一种缺省处理方法. JavaBean是一种特殊的类,主要用于传递数据信息, ...

  7. 在网站中添加 https 百度分享

    博客地址:http://www.moonxy.com 一.前言 百度分享是一个提供网页地址收藏.分享及发送的 WEB2.0 按钮工具,借助百度分享按钮,网站的浏览者可以方便的分享内容到人人网.开心网. ...

  8. 解决ie6上碰到的css兼容问题

    ie6上css碰到的坑 前两天在给一个项目做东西的时候,碰到一个有意思的项目,是需要兼容ie6,有一些碰到并且解决的问题,给大家写下来,方便大家以后碰到类似的问题哈- 喜欢的话还请点赞! 1.impo ...

  9. Day 23 系统服务之救援模式

    1.CentOS6与Centos 7启动流程 4.运行级别C6&C7 0 关机 1 单用户模式 (超级权限 必须面对实体硬件) 2 暂未使用 3 字符界面(黑框) 4 暂未使用 5 图形界面 ...

  10. Flink cep的初步使用

    一.CEP是什么 在应用系统中,总会发生这样或那样的事件,有些事件是用户触发的,有些事件是系统触发的,有些可能是第三方触发的,但它们都可以被看做系统中可观察的状态改变,例如用户登陆应用失败.用户下了一 ...