强对偶性、弱对偶性以及KKT条件的证明(对偶问题的几何证明)
目录
- 1.原问题
- 2.对偶问题
- 2.1弱对偶性的一般证明
- 2.2弱对偶性的几何证明
- 2.3强对偶性的几何表示以及条件
- 2.4 slater condition
- 3.KKT条件的证明
- 3.1可行条件
- 3.2互补松弛条件
- 3.3偏导为0条件
1.原问题
首先给出问题的一般形式:
上式表明我们一共有M+N个约束条件,对于不是求最小值或者约束条件大于等于0的情况,我们添加一个负号就可以变成上面这种形式。
上述问题我们一般称之为带约束的原问题。
利用拉格朗日乘子法,我们构造一个新的函数以及约束条件如下:
其中:
我们称上面的问题为无约束的原问题(对x不再有约束)。上述L是拉格朗日乘子法的基本形式,这个就不再证明。
2.对偶问题
对于无约束的原问题,我们先直接给出它的对偶问题形式(其实就是简单交换min和max):
上述问题我们称之为原问题的对偶问题。
2.1弱对偶性的一般证明
所谓弱对偶性,指的是:
在再谈SVM(hard-margin和soft-margin详细推导、KKT条件、核技巧)中,我们大致口头证明了弱对偶性的成立,即“凤尾”>=“鸡头”。何谓“凤尾”?我先选出最强的一批人(maxf\max fmaxf),然后组成实验班,实验班倒数第一就是minmaxf\min \ \max fmin maxf;何谓“鸡头”?我先选出最弱的一批人(minf\min fminf),然后在这批比较弱的人当中选出最强的那个人,也即是maxminf\max \ \min fmax minf,那么“鸡头”与“凤尾”孰强孰弱,是显而易见的。
现在我们利用数学推导来大致证明一下弱对偶性。
对于L(x,λ,η)L(x,\lambda,\eta)L(x,λ,η)这个函数,我们知道下面这个不等式一定成立:
上面这个不等式很好理解,中间L(x,λ,η)L(x,\lambda,\eta)L(x,λ,η)我们可以理解为L的值域,值域里面的任何一个数,必然是大于等于它的最小值,小于等于它的最大值。其实这一步已经证明出弱对偶性了,不过为了更容易理解,我们可以进一步说明。
上述不等式最左边的表达式最后是关于λ,η\lambda,\etaλ,η的一个函数,而最右边是一个关于xxx的函数,因此我们又令:
因此我们有:
证毕。
2.2弱对偶性的几何证明
为了使问题简化,同时方便证明,我们去掉原问题中等式的约束条件,同时不等式约束条件只保留一个,即原问题变成:
那么拉格朗日函数就变成:
我们又令:
即p∗p^*p∗是原问题的最优解,d∗d^*d∗是对偶问题的最优解。证明弱对偶性实际上就是证明d∗≤p∗d^*\leq p^*d∗≤p∗。
我们令区域G的表达形式为:
D是原问题的定义域,G表示一个个点的集合,点的横坐标是约束条件u=m1(x)u=m_{1}(x)u=m1(x),纵坐标是原函数t=f(x)t=f(x)t=f(x)。
有了上述集合G的定义之后,我们就可以对p∗,d∗p^*,d^*p∗,d∗进行变式。
首先对p∗p^*p∗进行变式:
因为t=f(x)t=f(x)t=f(x),所以p∗p^*p∗实际上就是t的最小值,反映到集合G中去就是指一个点的纵坐标,这个点要满足两个条件:一是肯定要在G中,二是m1(x)≤0m_{1}(x)\leq0m1(x)≤0也就是该点的横坐标小于等于0。
如下图所示:
我们对u≤0u\leq0u≤0那部分,也就是图中阴影部分上的每个点,找到一个最低的点,它的纵坐标就是p∗p^*p∗。
接着对d∗d^*d∗进行变形:
上述t+λut+\lambda ut+λu的来源为:
对变形后d∗d^*d∗我们令:
我们先找到g(λ)g(\lambda)g(λ)在图中的位置:我们知道t+λut+\lambda ut+λu实际上也是一个值,我们不妨令t+λu=kt+\lambda u=kt+λu=k,该式表示一条斜率为−λ-\lambda−λ并过(0,k)的直线,我们要找的是t+λut+\lambda ut+λu的最小值,实际上就是k的最小值,实际上就是该直线与纵轴交点的最小值。而在求minxt+λu\min \limits_{x}\ t+\lambda uxmin t+λu的最小值时,λ\lambdaλ是固定的,因此斜率−λ-\lambda−λ也是固定的:
我们保持斜率不变移动直线,不断往上移动,则该直线与纵轴交点的纵坐标k也不断增大,因为限制条件还有一个就是(u,t)∈G(u,t)\in G(u,t)∈G,因此该直线必须经过区域G,我们一直往上移动,直到直线第一次与G相交,记下相应的k值为k1k_{1}k1,再继续往上也都满足条件,知道该直线与G不再相交,但是现在我们求得是最小值,那么最小值其实就是k1k_{1}k1,即g(λ)g(\lambda)g(λ)就等于k1k_{1}k1。
进一步,我们要求:
这里要重点注意:上一步我们求得了g(λ)g(\lambda)g(λ)就等于k1k_{1}k1,但是这种情况只是一种情况,在上一步求g(λ)g(\lambda)g(λ)时,我们假若改变斜率−λ-\lambda−λ,那么k1k_{1}k1的值是会变的,如下所示:
我们换一个λ\lambdaλ固定时,g(λ)g(\lambda)g(λ)也就是k1k_{1}k1自然也就在变。
第二步要干的其实就是让我们求这个g(λ)g(\lambda)g(λ)的最大值。那什么时候是最大的?实际上就是以G的最低点为轴,我们旋转直线,直到与左上方最低点相交时,g(λ)g(\lambda)g(λ)是最大的。如下所示:
可能很多人就有疑问了:我为什么不可以让斜率继续增大?让直线穿过G?这里有疑问的同学不妨回忆一下第一个步骤:
我们在确定g(λ)g(\lambda)g(λ)的时候,第一次相切我们就停止了,而后改变斜率继续相切:如上图所示,假如你继续增大斜率,那么该直线就不跟G的最低点相切了。我们是先推第一步再推第二步,而推第二步的时候肯定必须满足第一步的条件,所以d∗d^*d∗只能是在那个位置。
从上图也可以看出来:d∗≤p∗d^*\leq p^*d∗≤p∗,也就是对偶问题的解是小于等于原问题的解的,也即是说满足弱对偶性。因此这里我们进一步证明了弱对偶性。
2.3强对偶性的几何表示以及条件
什么是强对偶性?就是指原问题的解与对偶问题的解是相同的,也即是:d∗=p∗d^*=p^*d∗=p∗。
画个图:
假设G是一个凸集,那么根据上面找d∗d^*d∗和p∗p^*p∗的思路,我们很容易知道这个时候二者是相等的,也就是满足强对偶关系。
那上面这句话的意思就是说:只要是凸集就一定满足强对偶关系。这句话不是正确的,不是所有的凸集都满足强对偶关系,但是加上slater条件就一定满足。
2.4 slater condition
先直接给出slater条件的定义:对于x的定义域D,如果它存在一个内点(不是边界上的点)x∗x^*x∗满足对任意的mi(x)<0,i=1,2,...,Mm_{i}(x)\lt0,i=1,2,...,Mmi(x)<0,i=1,2,...,M,则说明该问题满足slater条件。
对slater条件做两点说明:
- 对于大多数的凸优化问题来说,slater condition都是成立的
- 放松的slater条件:如果约束函数mi(x),i=1,2,...,Mm_{i}(x),i=1,2,...,Mmi(x),i=1,2,...,M中有K个是仿射函数,则我们只需要那M-K个约束函数满足第一个条件,我们也说该问题满足slater条件。
- 什么是仿射函数?仿射函数,即最高次数为1的多项式函数。常数项为零的仿射函数称为线性函数。简单来说,就是比较简单的函数。
对第一个条件进一步说明:为什么我们要满足这个条件?第一个条件放在G中的意思就是:G在u<0部分必须有点存在:
假设纵坐标左边没有点,那么在我们寻找g(λ)g(\lambda)g(λ)时,那条直线实际上就会是纵坐标轴。
3.KKT条件的证明
通过上面的推导我们知道了:
满足强对偶关系之后我们就得到一个结论:d∗=p∗d^*=p^*d∗=p∗,但是也到此为止了,我们肯定得解出那些未知最优参数(带 * 的变量),KKT条件就是干这件事。
KKT条件有三部分:可行条件、互补松弛条件以及偏导为0条件,我们一个一个推导。
3.1可行条件
所谓可行条件,指的是一开始就满足的一些条件:
这三个条件肯定得满足,这个没啥可说的,天然满足。
3.2互补松弛条件
我们知道:
带星号的都是最优解的意思。根据可行条件我们知道:λi≥0,mi≤0\lambda_{i}\geq0,m_{i}\leq0λi≥0,mi≤0,所以λimi≤0\lambda_{i}m_{i}\leq0λimi≤0,所以上面继续变换:
因为最后一步等于第一步,所以中间推导步骤中的≤\leq≤都应该变成=,倒数第三步等于倒数第二步,所以我们有:
而前面我们又知道λimi≤0\lambda_{i}m_{i}\leq0λimi≤0,所以互补松弛条件如下:
3.3偏导为0条件
继续看这个推导,第二、三步之间应该用等号连接,即:
意思就是说L在x=x∗x=x^*x=x∗处有最小值,于是偏导为0条件就出来了:
于是KKT条件为:
证毕。
强对偶性、弱对偶性以及KKT条件的证明(对偶问题的几何证明)相关推荐
- 强对偶性与KKT条件
强对偶性与KKT条件 1. 强对偶性: 强对偶性意味着原问题与对偶问题的最优值达到相等,没有对偶间隙. 强对偶性不总是成立(即使是对于凸问题).凸问题usually (but not always)有 ...
- 拉格朗日乘子法 KKT条件
目录 1. 拉格朗日乘子法用于最优化的原因 2. 最优化问题三种情况 2.1 无约束条件 2.2 等式约束条件:拉格朗日乘子法 2.3 不等式约束条件:KKT 3. Lagrange对偶函数 3.1 ...
- SVM中拉格朗日乘子法、KKT条件、对偶问题详解
SVM中拉格朗日乘子法.KKT条件.对偶问题详解 创作目的 1.SVM回顾 2.拉格朗日乘子法 3.KKT条件 4.对偶问题 强对偶性证明 总结 创作目的 我是机器学习初学者,目前正在上机器学习课,老 ...
- 陈宝林《最优化理论与算法》超详细学习笔记 (五)————最优性条件 之 KKT条件
陈宝林<最优化理论与算法>超详细学习笔记 (五)----最优性条件 之 KKT条件 Lagrange对偶问题 原问题 Lagrange函数 Lagrange对偶函数 强/弱对偶性 弱对偶性 ...
- 最优化——对偶问题的性质(弱对偶性,强对偶性),对偶问题形式的书写(对偶规则)
文章目录 对偶性质 弱对偶性 强对偶性 对偶问题解之间的关系 线性规划与其对偶规则的关系 互补松弛定理 对偶性质 弱对偶性 原对偶问题任何可行解的目标值都是另一问题最优目标值的界.(推论:原对 偶问题 ...
- SVM——(三)对偶性和KKT条件(Lagrange duality and KKT condition)
之前说到过拉格朗日乘数法以及推导过程,那么今天要说的就是拉格朗日对偶性以及KKT条件 1.Lagrange multipliers 一句话说,拉格朗日乘数法就是用来解决条件极值的一个方法,且约束条件都 ...
- 拉格朗日乘子法、KKT条件、拉格朗日对偶性
拉格朗日乘子法.KKT条件.拉格朗日对偶性 转载于http://blog.csdn.net/sinat_17496535/article/details/52103852 笔记主要来源于维基百科和&l ...
- 转 机器学习系列 08:深入理解拉格朗日乘子法、KKT 条件和拉格朗日对偶性
深度理解拉格朗日乘子法.KKT条件与线性规划对偶理论的微妙关系 https://blog.csdn.net/benzhujie1245com/article/details/85270058?utm_ ...
- SVM支持向量机-手写笔记(超详细:拉格朗日乘数法、KKT条件、对偶性质、最优化、合页损失、核函数...)
SVM支持向量机-手写笔记 作者:某丁 日期:2021.05.21 写完了,发现想要真正理解SVM还需要继续深入学习,以上所写只不过是冰山一角,我的管中窥豹而已. 参考 [1] 一文搞懂支持向量机(S ...
- SVM中的KKT条件和拉格朗日对偶
首先,我们要理解KKT条件是用来干嘛的? KKT条件用来判断一个解是否属于一个非线性优化问题. 求最优解: 约束条件分为 1.等式约束 2.不等式约束 对于等式约束的优化问题,可以直接应用拉格朗日乘子 ...
最新文章
- 使用 EOLINKER 进行接口测试的最佳路径 (下)
- 多通道ADC一致性的高精度测量方法
- java.lang.IllegalArgumentException异常处理的一种方法
- 人工构造迭代次数高度简并的神经网络训练集
- poj3667 区间合并,找最左边的空余块
- 演练 制作百度音乐标签页面 0929
- 'display','position'和'float'相互关系
- SpringBoot 集成 Jsp、Thymeleaf 模板引擎 + Thymeleaf 基本使用
- 【Android】proguard混淆代码
- Android电池驱动【转】
- MVC去掉传参时的验证:从客户端中检测到有潜在危险的Request.QueryString值
- 缠中说禅重新编排版《论语》(整理版)
- android 混淆成功,Android 混淆APK并检查是否混淆成功
- 局域网自定义域名H5站点移动设备测试时的代理设置
- python中怎么取小数点后两位函数_python中round函数保留两位小数的方法
- 作为一名投资人,我经常会问创业者 8 个问题
- Android 屏蔽Power键 Home键
- 安装geth时:解决Error(while upgrading Bor): build github.com/ethereum/go-ethereum/cmd/geth: cannot load ha
- 费马小定理 (证明)
- 个人愚见: React 和 Vue 区别