zoukankan      html  css  js  c++  java
  • 拉格朗日乘子法

    拉格朗日乘子法

    约束优化问题

    考虑约束最优化问题:
    $f(x), c_i(x), h_j(x)$是定义在$R^n$空间上的连续可微函数,称

    min_{x in R^n} quad f(x)
    
    s.t. quad c_i(x) le 0 quad i = 1,2,...,k
    
    quad quad h_j(x) = 0 quad j = 1,...,l
    

    为约束优化问题的原问题。

    拉格朗日极小极大问题

    为了解决以上问题,首先引入广义拉格朗日函数(generalized Lagrange function)

    L(x, alpha, eta) = f(x) + sum_{i=1}^{k} alpha_i c_i(x) + 
    sum_{j=1}^{l} eta_j h_j(x)
    

    其中,$alpha_i ge 0$

    可以证明,无约束优化问题

    min_{x in R^n} max_{alpha,eta}L(x, alpha, eta) 
    

    等价于原问题,称为广义拉格朗日函数的极小极大问题。

    证明

    	heta(x)=max_{alpha,eta}L(x,alpha,eta)
    
    =max_{alpha,eta} { f(x) + sum_{i=1}^{k} alpha_i c_i(x) + 
    sum_{j=1}^{l} eta_j h_j(x) }
    

    a. 若$x$不满足约束条件,也即

    c_i(x) > 0
    
    h_j(x) 
    e 0 
    

    $ heta(x)=+infty$,因此不可能是极小极大问题

    min_{x in R^n} quad 	heta(x)
    

    的解。
    b. 若x满足约束条件,也即

    c_i(x) le 0
    
    h_j(x) = 0 
    

    	heta(x)=f(x)
    

    min_{x in R^n} quad 	heta(x) = min_{x in R^n} f(x)
    

    综上所述,拉格朗日极小极大问题的解就是原问题的解。

    对偶问题

    令原问题为

    p^{*}=min_{x in R^n} 	heta(x)=min_{x in R^n}max_{alpha,eta} L(x,alpha,eta)
    

    则其对偶问题为

    d^{*}=max_{alpha,eta}	heta(alpha,eta)=max_{alpha, eta} min_{x in R^n}L(x, alpha, eta)
    

    可以证明,$d^{*} le q^{*}$,当且仅当满足KKT条件时,等号成立,且对偶问题的解就是原问题的解。

    KKT条件
    对于原问题和对偶问题,$f(x)$$c_i(x)$为凸函数,$h_j(x)$为仿射函数,且$c_i(x)$严格可行,也即$exists x, forall{i}, c_i(x) < 0$,则$x^{*},alpha^{*},eta^{*}$是原问题和对偶问题的解的充分必要条件

    
    abla_{x} L(x^{*},alpha^{*},eta^{*})=0
    
    
    abla_{alpha} L(x^{*},alpha^{*},eta^{*})=0
    
    
    abla_{eta} L(x^{*},alpha^{*},eta^{*})=0
    
    c_i(x^{*}) le 0, quad i = 1,2,...,k
    
    h_j(x^{*}) = 0, quad j = 1,2,...,l
    
    alpha_{i}^{*} ge 0, quad i = 1,2,...,k
    
    alpha_{i}^{*}c_i(x^{*}) = 0, quad i = 1,2,...,k
    

    其中,最后一个条件称为KKT对偶互补条件。

    通常情况下,可以先求解对偶问题,得到最优解$alpha^{*}, eta^{*}$,然后通过KKT条件,解得原问题的解$x^{*}$,这个就是SVM的求解思路。

  • 相关阅读:
    Zabbix触发器支持的函数说明
    Zabbix Trigger表达式实例
    Nginx 504 Gateway Time-out问题解决
    题外话:我想立刻辞职,然后闭关学习编程语言,我给自己3个月时间学习C语言!这样行的通吗
    Vim快捷键分类
    [转]运维工作解释
    Cobbler的Web管理和维护
    使用 Cobbler 自动化和管理系统安装
    NTP时间服务器
    自动化部署必备技能—搭建YUM仓库
  • 原文地址:https://www.cnblogs.com/zjgtan/p/10138095.html
Copyright © 2011-2022 走看看