拉格朗日对偶性(Lagrange duality)

1. 从原始问题到对偶问题

 对偶性是优化理论中一个重要的部分,带约束的优化问题是机器学习中经常遇到的问题,这类问题都可以用如下形式表达
\[
\begin{aligned}
min \;\; &f(x) \\
s.t.\;\; & g_i(x) \le 0 ,\;\; i=1,\cdots, m\\
& h_i(x) = 0,\;\; i=1,\cdots,n\\
\end{aligned}
\]
约束条件减少需要求解的空间,但在机器学习中,约束条件往往比较复杂并且较多。因此先计算约束条件再在约束空间中计算最优值非常不方便。于是用广义拉格朗日函数将带约束优化问题转化为无约束优化问题
\[
L(x,\lambda,\eta) = f(x)+\sum_i^m \lambda_i g_i(x) + \sum_i^n \eta_i h_i(x)
\]
 这时,若按照拉格朗日乘数法直接对\(x、\lambda、\eta\)求偏导的话,结果对简化复杂的约束条件没有益处。我们希望获取一种能够优化原问题,又能简化计算的方法。于是进一步挖掘\(\lambda、\eta\)能够带来的东西,当我们对广义拉格朗日函数作关于\(\lambda、\eta\) 的最大化时
\[
\theta_P(x) = \underset {\lambda \ge 0,\eta} {max}\;L(x,\lambda,\eta)
\]
其中,要求\(\lambda \ge 0\) ,很容易发现,在这个最大化问题中,若\(x\) 不满足原问题中的约束,那么这个最大化的结果一定是正无穷。例如,\(g_i(x)>0\) ,在关于\(\lambda、\eta\) 最大化时,其系数便会趋于无穷大使得整个式子趋于无穷大。而当\(x\) 满足约束时,最大化的结果一定是\(f(x)\) 。依据这个特性,我们可以将原广义拉格朗日函数的极小化问题拆解为两步
\[
\underset x {min} \;L(x,\lambda,\eta) = \underset x {min} \;\theta_P(x) = \underset x {min} \;\underset {\lambda \ge 0,\eta} {max}\;L(x,\lambda,\eta)
\]
拆解后的问题$ \underset x {min} ;\underset {\lambda \ge 0,\eta} {max};L(x,\lambda,\eta)$ 称为广义拉格朗日函数的极小极大问题,它与原问题是完全等价的。在对偶性中,这个问题被称为原始问题(Primal problem)。

  通过原始问题的极小极大问题,可以引出它的对偶问题(Dual problem),其对偶问题就是极小极大问题交换一个位置而已。首先定义
\[
\theta_D(\lambda,\eta) = \underset {x} {min} L(x,\lambda,\eta)
\]
那么其对偶问题就是
\[
\underset {\lambda \ge 0,\eta} {max} \; \theta_D(\lambda,\eta)= \underset {\lambda \ge 0,\eta} {max} \;\underset {x} {min} L(x,\lambda,\eta)
\]
这个问题是广义拉格朗日函数的极大极小问题,将其展开为约束最优化问题得到
\[
\underset {\lambda ,\eta} {max} \; \theta_D(\lambda,\eta)= \underset {\lambda ,\eta} {max} \;\underset {x} {min} L(x,\lambda,\eta)\\
s.t. \lambda_i \ge 0,\;\; i= 1,2,\cdots,k
\]
  可以看出两个函数的变量并不相同,对于原始问题,它的变量是\(x\),而对于对偶问题,它的变量是\(\lambda,\;\eta\) 。并且,这两个问题并不等价,有时候甚至差的有点多。可以理解为其他国家最厉害的乒乓球队员,也没有中国最菜的乒乓球队员厉害,当然这比喻并不准确。

2. 弱对偶与强对偶

  对偶函数可以理解为给原始函数找了一个下界,在原始函数计算困难的时候,可以通过解对偶函数来得到一个近似的值。并且在函数满足一定条件的时候,对偶函数的解与原始函数的解是等价的。具体来说,对偶 函数\(\theta_D(\lambda,\eta)=\underset {x} {min} L(x,\lambda,\eta)\) 确定了原始问题的一个下界,即
\[
\theta_D(\lambda,\eta) =\underset {x} {min} L(x,\lambda,\eta)\le L(x,\lambda,\eta)\le \underset {\lambda \ge 0,\eta} {max}\;L(x,\lambda,\eta)=\theta_P(x) \tag{2-a}
\]

\[
\theta_D(\lambda,\eta) \le \theta_P(x)
\]
其中,\(\theta_d(\lambda,\eta)\)看作其他国家乒乓球运动员,\(\theta_P(x)\)看作中国乒乓球运动员,那么其他国家最厉害的也不一定比得上中国最差的。即
\[
d^* =\underset {\lambda ,\eta} {max} \; \theta_D(\lambda,\eta)\le \underset x {min} \;\theta_P(x)=p^* \tag{2-b}
\]
这个性质便是弱对偶性( weak duality )。弱对偶性对任何优化问题都成立,这似乎是显然的,因为这个下界并不严格,有时候甚至取到非常小,对近似原问题的解没多大帮助。既有弱对偶性,那么便有强对偶性,强对偶性是指
\[
d^* = p^*
\]
显然这是一个令人惊喜的性质,这意味着可以通过求解较简单的对偶问题(因为对偶问题总是一个凸优化问题)来得到原问题的解。不过强对偶性在优化问题中是一个非常高深的问题,对我来说更是如此。因此我只能介绍关于强对偶的两个条件:严格条件和KKT条件。

3. KKT条件

  严格条件是指原始问题是凸函数,约束条件是仿射函数,若此时不等式约束满足严格条件,即不等号是严格不等号,不能取等号,则强对偶性成立。这个条件在SVM中即变成了对任意一个点,都存在超平面能对其正确划分,也就是数据集是线性可分的。严格条件是强对偶性的充分条件,但并不是必要条件。有些不满足严格条件的可能也有强对偶性。

  KKT条件是在满足严格条件的情况下,推导出的变量取值的关系,假设原始问题和对偶问题的极值点分别是\(x^*\)和\(\lambda^*,\eta^*\) ,对应的极值分别是\(p^*\)和\(d^*\) 。由于满足强对偶性,有\(p^*=d^*\) 。将极值点带入得到
\[
d^* = \theta_D(\lambda^*,\eta^*) =\underset x {min} L(x,\lambda^*,\eta^*) \tag{3-a}
\]
这说明\(x^*\)是\(L(x,\lambda^*,\eta^*)\)的一个极值点,那么\(L(x,\lambda^*,\eta^*)\)在\(x^*\)处的梯度为0,即
\[
\triangledown f(x^*)+\sum_i^m\lambda_i g_i(x^*) + \sum_i^n \eta_i h_i(x^*) = 0 \tag{3-b}
\]
由式\((2-a)\) ,
\[
\begin{aligned}
d^* =& \underset x {min} L(x,\lambda^*,\eta^*) \\
\le &L(x^*,\lambda^*,\eta^*)\\
=& f(x^*) + \sum_i^m \lambda_i g_i(x^*) + \sum_i^n \eta_i h_i(x^*)\\
\le & p^* = f(x^*)
\end{aligned} \tag{3-c}
\]
由于\(p^*=d^*\),因此上式不等号应取到等号,再与式\((3-b)\) 得
\[
\sum_i^m \lambda_i g_i(x^*) + \sum_i^n \eta_i h_i(x^*) = 0 \tag{3-d}
\]
由于注意\(x^*\)作为该问题的解,是一定满足\(h(x^*) = 0\)的,因此
\[
\lambda_i g_i(x) = 0,\;\;\;i=1,2,\cdots,m
\]
这个条件叫做互补松弛性(complementary slackness)。

  其中,\(\lambda \ge 0\)称为对偶可行性。并且它似乎可以从原始问题到对偶问题的极小极大问题中总结出。不过这里可以有另一种解释,简化一下,考虑只有不等式约束的问题
\[
\begin{aligned}
min \;\; &f(x) \\
s.t.\;\; & g(x) \le 0 \\
\end{aligned}
\]
其中\(g(x) \le 0\)称为原始可行性,由它确定的区间称为可行域。假设\(x^*\)为该问题的解,那么其位置有两种情况

  • (1) \(g(x^*)<0\)时,解在可行域中取得。这时解称为内部解,约束条件无效,原问题变为无约束问题。

  • (2) \(g(x^*)=0\)时,解在边界上取得, 这时解称为边界解,约束条件有效。

内部解直接由梯度为0即可解得,这里主要讨论边界解。

  对于\(g(x)=0\)的约束问题,建立拉格朗日函数
\[
L(x,\lambda) = f(x) + \lambda g(x)
\]
因为驻点\(x^*\)在其上取得,那么该函数在\(x^*\)处的梯度为0,即
\[
\triangledown f(x^*) + \lambda \triangledown g(x^*) = 0
\]
这里两个梯度的方向应该是可以确定的,\(f(x)\)的极小值在边界取到,那么可行域内部的\(f(x)\)应该都是大于这个极小值的,因此\(\triangledown f\)的方向是可行域内部。而\(\triangledown g\)的方向是可行域外部,因为约束条件是\(g(x)\le 0\),也就是可行域外部都是\(g(x)>0\),所以梯度方向指向函数增加的方向。这说明两个函数的梯度方向相反,那上面这个等式要成立,\(\lambda\)只能是大于等于0。这就是对偶可行性。

  再将其他的条件组合起来,便得到了KKT条件:
\[
\begin{aligned}
\triangledown _x L(x^*,\lambda^*,\eta^*) =0 \\
g_i(x^*) \le 0\\
\lambda_i \ge 0\\
\lambda_i g_i(x^*) =0
\end{aligned}
\]

Reference:

[1] Convex Optimization

[2] Pattern Recognition and Machine Learning.

[3] 统计学习方法

[4] 支持向量机:Duality

[5] KKT条件

拉格朗日对偶性(Lagrange duality)的更多相关文章

  1. A-08 拉格朗日对偶性

    目录 拉格朗日对偶性 一.原始问题 1.1 约束最优化问题 1.2 广义拉格朗日函数 1.3 约束条件的考虑 二.对偶问题 三.原始问题和对偶问题的关系 3.1 定理1 3.2 推论1 3.3 定理2 ...

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

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

  3. 拉格朗日对偶(Lagrange duality)

    拉格朗日对偶(Lagrange duality) 存在等式约束的极值问题求法,比如下面的最优化问题:              目标函数是f(w),下面是等式约束.通常解法是引入拉格朗日算子,这里使用 ...

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

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

  5. Support Vector Machine(2):Lagrange Duality求解线性可分SVM的最佳边界

    在上篇文章<Support Vector Machine(1):线性可分集的决策边界>中,我们最后得到,求SVM最佳Margin的问题,转化为了如下形式: 到这一步后,我个人又花了很长的时 ...

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

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

  7. SVM(支持向量机)(二)—Lagrange Duality(拉格朗日对偶问题)

    (整理自AndrewNG的课件,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) SVM有点让人头疼,但还是要弄明白.把这一大块搞懂了,会很有成就感 ...

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

    转载自https://www.cnblogs.com/90zeng/p/Lagrange_duality.html,本人觉得讲的非常好! 1.原始问题 假设是定义在上的连续可微函数(为什么要求连续可微 ...

  9. 拉格朗日(Lagrange)插值算法

    拉格朗日插值(Lagrange interpolation)是一种多项式插值方法,指插值条件中不出现被插函数导数值,过n+1个样点,满足如下图的插值条件的多项式.也叫做拉格朗日公式.  这里以拉格朗日 ...

随机推荐

  1. 什么是 VxLAN?

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. VLAN 和 ...

  2. 算法详解之最近公共祖先(LCA)

    若图片出锅请转至here 概念 首先是最近公共祖先的概念(什么是最近公共祖先?): 在一棵没有环的树上,每个节点肯定有其父亲节点和祖先节点,而最近公共祖先,就是两个节点在这棵树上深度最大的公共的祖先节 ...

  3. gulp使用详情 及 3.0到4.0的坑

    项目的所有依赖都可以安装,每个都有详细的注释. const gulp = require('gulp'); const sass = require('gulp-sass'); const brows ...

  4. 如何查看jsplumb.js的API文档(YUIdoc的基本使用)

    目录 一.问题描述 二. 处理方法 三. YUIdoc工具介绍 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园地址:<大史住在大前端> ...

  5. HDU 4283:You Are the One(区间DP)

    http://acm.hdu.edu.cn/showproblem.php?pid=4283 题意:有n个数字,不操作的情况下从左到右按顺序输出,但是可以先让前面的数字进栈,让后面的数字输出,然后栈里 ...

  6. js random获取随机数,获取任意范围内随机整数

     壹 ❀ 引 想着好久没做笔试题了,去GitHub找了面试相关的项目,结果被第一道题难住了.....说难其实也不难,而是我忘记了取范围随机整数怎么写了,不可否认如果当时是我在笔试,肯定也凉了,那么就由 ...

  7. 【题解】【合并序列(水题)P1628】

    原题链接 这道题目如果连字符串的基本操作都没学建议不要做. 学了的很简单就可以切,所以感觉没什么难度- 主要讲一下在AC基础上的优化(可能算不上剪枝) 很明显,这道题我们要找的是前缀,那么在字符串数组 ...

  8. thread学习笔记--BackgroundWorker 类

    背景: 在 WinForms 中,有时要执行耗时的操作,比如统计某个磁盘分区的文件夹或者文件数目,如果分区很大或者文件过多的话,处理不好就会造成“假死”的情况,或者报“线程间操作无效”的异常,或者在该 ...

  9. [原创]Rsync搭建和使用

    rsync服务的搭建和使用 ***下载安装: #wget https://download.samba.org/pub/rsync/src/rsync-3.1.2.tar.gz #tar -zxvf ...

  10. TF项目实战(基于SSD目标检测)——人脸检测1

    SSD实战——人脸检测 Tensorflow 一 .人脸检测的困难: 1. 姿态问题 2.不同种族人, 3.光照 遮挡 带眼睛 4.视角不同 5. 不同尺度 二. 数据集介绍以及转化VOC: 1. F ...