zoukankan      html  css  js  c++  java
  • 约束优化问题的转化——拉格朗日对偶性

    总结

    首先,约束最优化(min f(x),st:c(x)leq0,h(x)=0)——原始问题,可以转化为等价的拉格朗日极小极大的无约束问题(min max(L(x,α,β)),α,β为拉格朗日乘子,st:alpha _{i}geq0)——等效原始问题

    若原问题棘手,在满足KKT(充要)条件可以通过拉格朗日对偶性原问题的优化(x约束,c(x)leq0,h(x)=0转化为其拉格朗日对偶形式的优化(参数alpha _{i}约束,仅有alpha _{i}geq0

    推论1.

    若原始问题与其拉格朗日的极大极小函数(对偶)均有解,且使拉格朗日的极大极小与极大相等,则此可行解x*,α*,β*是原始问题和对偶问题的最优解。

    定理1

    (若f(x),c(x)是凸函数且h(x)是仿射函数(形如h(x)=rx+m),且存在x使所有的i都有c(x)<0(严格约束),则存在x*是原始问题的解,存在α*,β*是对偶问题的解,且使原问题的拉格朗日极小极大值(原始问题)与其对偶问题极大极小值相等。

    定理2

    若f(x),c(x)是凸函数且h(x)是仿射函数(形如h(x)=rx+m),且存在x使所有的i都有c(x)<0(严格约束),那么x*,α*,β*是原始问题和对偶问题的最优解的充要条件即KKT条件。

    一共七个条件:后三个就是原始问题的约束,前三个是指拉格朗日函数对分别对x,α,β的梯度向量都为0,第四个条件给拉格朗日函数的而第二项加了一个强约束,要求解α*,x*对任意ialpha _{i}c_{i}(x^{*})=0

    解释:

    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 的推导中用到.



  • 相关阅读:
    iOS开发UI篇—UITabBarController简单介绍
    iOS 开发 UI 搭建心得(一)—— 驾驭 StoryBoard
    The Swift Programming Language--语言指南--协议
    Swift 委托/代理设计模式
    Ping azure
    leetcode先刷_Maximum Subarray
    AsyncHandler
    HDU 1026 Ignatius and the Princess I 迷宫范围内的搜索剪枝问题
    Design Pattern Command 命令设计模式
    logstash高速入口
  • 原文地址:https://www.cnblogs.com/Henry-ZHAO/p/12725293.html
Copyright © 2011-2022 走看看