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


称为约束最优化问题的原始问题。
现在如果不考虑约束条件,原始问题就是:

因为假设其连续可微,利用高中的知识,对
求导数,然后令导数为0,就可解出最优解,很easy. 那么,问题来了(呵呵。。。),偏偏有约束条件,好烦啊,要是能想办法把约束条件去掉就好了,bingo! 拉格朗日函数就是干这个的。
引进广义拉格朗日函数(generalized Lagrange function):

不要怕这个式子,也不要被拉格朗日这个高大上的名字给唬住了,让我们慢慢剖析!这里
,
是拉格朗日乘子(名字高大上,其实就是上面函数中的参数而已),特别要求
.
现在,如果把
看作是关于
的函数,要求其最大值,即

再次注意
是一个关于
的函数,经过我们优化(不要管什么方法),就是确定
的值使得
取得最大值(此过程中把
看做常量),确定了
的值,就可以得到
的最大值,因为
已经确定,显然最大值
就是只和
有关的函数,定义这个函数为:

其中 
下面通过
是否满足约束条件两方面来分析这个函数:
- 考虑某个
违反了原始的约束,即
或者
,那么:

注意中间的最大化式子就是确定
的之后的结果,若
,则令
,如果
,很容易取值
使得
- 考虑
满足原始的约束,则:
,注意中间的最大化是确定
的过程,
就是个常量,常量的最大值显然是本身.
通过上面两条分析可以得出:

那么在满足约束条件下:

即
与原始优化问题等价,所以常用
代表原始问题,下标 P 表示原始问题,定义原始问题的最优值:

原始问题讨论就到这里,做一个总结:通过拉格朗日这位大神的办法重新定义一个无约束问题(大家都喜欢无拘无束),这个无约束问题等价于原来的约束优化问题,从而将约束问题无约束化!
2.对偶问题
定义关于
的函数:

注意等式右边是关于
的函数的最小化,
确定以后,最小值就只与
有关,所以是一个关于
的函数.
考虑极大化
,即

这就是原始问题的对偶问题,再把原始问题写出来:

形式上可以看出很对称,只不过原始问题是先固定
中的
,优化出参数
,再优化最优
,而对偶问题是先固定
,优化出最优
,然后再确定参数
.
定义对偶问题的最优值:

3. 原始问题与对偶问题的关系
定理:若原始问题与对偶问题都有最优值,则
证明:对任意的
和
,有

即

由于原始问题与对偶问题都有最优值,所以

即

也就是说原始问题的最优值不小于对偶问题的最优值,但是我们要通过对偶问题来求解原始问题,就必须使得原始问题的最优值与对偶问题的最优值相等,于是可以得出下面的推论:
推论:设
分别是原始问题和对偶问题的可行解,如果
,那么
分别是原始问题和对偶问题的最优解。
所以,当原始问题和对偶问题的最优值相等:
时,可以用求解对偶问题来求解原始问题(当然是对偶问题求解比直接求解原始问题简单的情况下),但是到底满足什么样的条件才能使的
呢,这就是下面要阐述的 KKT 条件
4. KKT 条件
定理:对于原始问题和对偶问题,假设函数
和
是凸函数,
是仿射函数(即由一阶多项式构成的函数,f(x)=Ax + b, A是矩阵,x,b是向量);并且假设不等式约束
是严格可行的,即存在
,对所有
有
,则存在
,使得
是原始问题的最优解,
是对偶问题的最优解,并且
定理:对于原始问题和对偶问题,假设函数
和
是凸函数,
是仿射函数(即由一阶多项式构成的函数,f(x)=Ax + b, A是矩阵,x,b是向量);并且假设不等式约束
是严格可行的,即存在
,对所有
有
,则
分别是原始问题和对偶问题的最优解的充分必要条件是
满足下面的Karush-Kuhn-Tucker(KKT)条件:
关于KKT 条件的理解:前面三个条件是由解析函数的知识,对于各个变量的偏导数为0(这就解释了一开始为什么假设三个函数连续可微,如果不连续可微的话,这里的偏导数存不存在就不能保证),后面四个条件就是原始问题的约束条件以及拉格朗日乘子需要满足的约束。
特别注意当
时,由KKT对偶互补条件可知:
,这个知识点会在 SVM 的推导中用到.
5. 总结
一句话,某些条件下,把原始的约束问题通过拉格朗日函数转化为无约束问题,如果原始问题求解棘手,在满足KKT的条件下用求解对偶问题来代替求解原始问题,使得问题求解更加容易。
简易解说拉格朗日对偶(Lagrange duality)(转载)的更多相关文章
- 简易解说拉格朗日对偶(Lagrange duality)(转载)
转载自https://www.cnblogs.com/90zeng/p/Lagrange_duality.html,本人觉得讲的非常好! 1.原始问题 假设是定义在上的连续可微函数(为什么要求连续可微 ...
- 简易解说拉格朗日对偶(Lagrange duality)
引言:尝试用最简单易懂的描述解释清楚机器学习中会用到的拉格朗日对偶性知识,非科班出身,如有数学专业博友,望多提意见! 1.原始问题 假设是定义在上的连续可微函数(为什么要求连续可微呢,后面再说,这里不 ...
- 拉格朗日对偶性(Lagrange duality)
目录 拉格朗日对偶性(Lagrange duality) 1. 从原始问题到对偶问题 2. 弱对偶与强对偶 3. KKT条件 Reference: 拉格朗日对偶性(Lagrange duality) ...
- SVM小白教程(2):拉格朗日对偶
在上一篇文章中,我们推导出了 SVM 的目标函数: \[ \underset{(\mathbf{w},b)}{\operatorname{min}} ||\mathbf{w}|| \\ \operat ...
- Support Vector Machine(2):Lagrange Duality求解线性可分SVM的最佳边界
在上篇文章<Support Vector Machine(1):线性可分集的决策边界>中,我们最后得到,求SVM最佳Margin的问题,转化为了如下形式: 到这一步后,我个人又花了很长的时 ...
- 拉格朗日对偶(Lagrange duality)
拉格朗日对偶(Lagrange duality) 存在等式约束的极值问题求法,比如下面的最优化问题: 目标函数是f(w),下面是等式约束.通常解法是引入拉格朗日算子,这里使用 ...
- SVM(支持向量机)(二)—Lagrange Duality(拉格朗日对偶问题)
(整理自AndrewNG的课件,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) SVM有点让人头疼,但还是要弄明白.把这一大块搞懂了,会很有成就感 ...
- 拉格朗日(Lagrange)插值算法
拉格朗日插值(Lagrange interpolation)是一种多项式插值方法,指插值条件中不出现被插函数导数值,过n+1个样点,满足如下图的插值条件的多项式.也叫做拉格朗日公式. 这里以拉格朗日 ...
- 3. SVM分类器求解(1)——Lagrange duality
先抛开上面的二次规划问题,先来看看存在等式约束的极值问题求法,比如下面的最优化问题: 目标函数是f(w),下面是等式约束.通常解法是引入拉格朗日算子,这里使用来表示算子,得到拉格朗日公式为 是等式约束 ...
随机推荐
- XAML特殊字符
此部分只限制在XAML中,代码中不受此类限制. 1.特殊字符转义 XAML 特殊字符转义 特殊字符 转义 小于号 < < 大于号 > > 取址符 & & 引号 ...
- Spring原来属于这家公司
Spring几年前被VMware公司收购,如今Spring版权隶属于Pivotal.Pivotal ONE对Spring提供整合.Greenplum提供了大数据服务,GEMFIRE内存集群技术帮助12 ...
- iOS学习之Object-C语言内存管理
一.内存管理的方式 1.iOS应用程序出现Crash(闪退),90%的原因是因为内存问题. 2.内存问题: 1)野指针异常:访问没有所有权的内存,如果想要安全的访问,必须 ...
- [shell基础]——I/O重定向
文件标识符(FD) 1. Linux使用文件标识符(FD)来标识一个进程正在访问的特定文件 2. 当打开一个文件或创建一个文件时,Linux将返回一个文件标识符供其他操作引用 3. 文件标识符是一个小 ...
- 自定义 tabBar (默认 tabBar 为可读不可写类型)
KVC 方法 //由于 tabBar是只读 不能够直接操作,如果要修改 可以使用KVC let mainTabBar = MainTabBar() //KVC 赋值 setValue(mainTab ...
- linux查看端口是否已开启和查看文件数
查看端口是否开启 lsof -i:80 查看文件数 ls | wc -w
- 关于 Google Chrome 中的全屏模式和 APP 模式
前言:我一直在纠结这篇文章是否应该归类在「前段开发」的范围内,哈哈! 前段时间做了一个项目,涉及到一个要全屏模式去访问网页的需求,因为 Google Chrome 的效率不错,而且专门为 Chrome ...
- 使用JavaScript+Html创建win8应用(二)
向我们的应用中添加JavaScript 的 Windows 库控件,首先我们接着上一个demo把一个评分控件添加进来 与 HTML 控件不同的是,适用于 JavaScript 的 Windows 库控 ...
- elasticsearch-查询的基本语法
elasticsearch的查询有两部分组成:query and filter. 两者的主要区别在于:filter是不计算相关性的,同时可以cache.因此,filter速度要快于query. 先记录 ...
- 【Path Sum II】cpp
题目: Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the give ...
分别是原始问题和对偶问题的可行解,如果
是凸函数,
是仿射函数(即由一阶多项式构成的函数,f(x)=Ax + b, A是矩阵,x,b是向量);并且假设不等式约束
有
,则存在
是原始问题的最优解,
是对偶问题的最优解,并且
