zoukankan      html  css  js  c++  java
  • A-08 拉格朗日对偶性


    更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:https://www.cnblogs.com/nickchen121/p/11686958.html

    拉格朗日对偶性

    在约束最优化问题中,拉格朗日对偶性(Lagrange duality)可以将原始问题转换为对偶问题,然后通过求解对偶问题的解得到原始问题的解。

    一、原始问题

    1.1 约束最优化问题

    假设(f(x),c_i(x),h_j(x))是定义在(R^n)上的连续可微函数,则约束最优化问题的原始问题为

    [egin{align} & underbrace{min}_{xin{R^n}}f(x) \ & s.t. \, c_i(x)leq0,quad{i=1,2,cdots,k} \ & h_j(x)=0,quad{j=1,2,cdots,l} end{align} ]

    如果不考虑约束条件,约束问题就是

    [underbrace{min}_{xin{R^n}}f(x) ]

    因为已经假设(f(x),c_i(x),h_j(x))连续可微,直接对(f(x))求导取0,即可求出最优解,但是这里有约束条件,因此得想办法去掉约束条件,而拉格朗日函数正是干这个的。

    1.2 广义拉格朗日函数

    为了解决上述原始问题,引入广义拉格朗日函数(generalized Lagrange function)

    [L(x,alpha,eta)=f(x)+sum_{i=1}^kalpha_ic_i(x)+sum_{j=1}^leta_jh_j(x) ]

    其中(x=(x^{(1)},x^{(2)},cdots,x^{(n)})^Tin{R^n})(alpha_igeq0,eta_j)是拉格朗日乘子。

    如果把(L(x,alpha,eta))看作是关于(alpha_i,eta_j)的函数,求其最大值,即

    [underbrace{max}_{alpha,eta}L(x,alpha,eta) ]

    由于(alpha_i,eta_j)作为拉格朗日乘子已经可知,因此可以把(L(x,alpha,eta))看作是关于(x)的函数

    [ heta_P(x)=underbrace{max}_{alpha,eta}L(x,alpha,eta) ]

    其中下标(P)表示原始问题。

    1.3 约束条件的考虑

    假设给定某个(x)

    1. 如果(x)违反原始问题的约束条件,即存在某个(i)使得(c_i(w)>0)或存在某个(j)使得(h_j(w) eq0),则有

    [ heta_P{(x)}=underbrace{max}_{alpha,eta:alpha_ileq0}[f(x)+sum_{i=1}^kalpha_ic_i(x)+sum_{i=1}^leta_jh_j(x)] = +infty ]

    因为如果某个(i)使得约束条件(c_i(x)>0),则可以令(alpha_i ightarrow{+infty});如果某个(j)使得(h_j(x) eq0),则可以使得(eta_jh_j(x) ightarrow{+infty})
    2. 如果(x)满足原始问题的约束条件,(h_j(x)=0)并且(alpha_ic_i(x)leq0),因此( heta_P{(x)})的最大值即为(f(x)),即( heta_P{(x)}=f(x))

    通过对约束条件的考虑即可得

    [ heta_P{(x)} = egin{cases} f(x), & ext{$x$满足约束条件} \ +infty, & ext{其他} end{cases} ]

    所以如果考虑极小化问题

    [underbrace{min}_x heta_P{(x)}_{x} = underbrace{min}_{x}\,underbrace{max}_{alpha,eta}L(x,alpha,eta) = underbrace{min}_{x}f(x) ]

    它与原始问题是等价的,其中(underbrace{min}_{x}\,underbrace{max}_{alpha,eta}L(x,alpha,eta))被称作广义拉格朗日函数的极小极大问题。

    通过广义拉格朗日函数的极小极大问题,可以定义原始问题的最优值

    [p^*=underbrace{min}_x heta_P(x) ]

    这一节主要通过使用拉格朗日函数把原始约束问题转化为无约束问题,即将约束问题无约束化。

    二、对偶问题

    定义一个关于(alpha,eta)的函数

    [ heta_D(alpha,eta)=underbrace{min}_xL(x,alpha,eta) ]

    其中等式右边是关于(x)的函数的最小化,即确定了(x)的值,最小值只与(alpha,eta)有关。
    如果极大化( heta_D(alpha,eta)),即

    [underbrace{max}_{alpha,eta} heta_D(alpha,eta)=underbrace{max}_{alpha,eta}underbrace{min}_{x}L(x,alpha,eta) ]

    上述就是原始问题的对偶问题,其中(underbrace{max}_{alpha,eta}underbrace{min}_{x}L(x,alpha,eta))也称为广义拉格朗日函数的极大极小问题。

    该对偶问题的原始问题为

    [underbrace{min}_x heta_P{(x)}_{x} = underbrace{min}_{x}\,underbrace{max}_{alpha,eta}L(x,alpha,eta) ]

    原始问题是先固定(L(x,alpha,eta))中的(x),优化出参数(alpha,eta),再优化(x);对偶问题是先固定(alpha,eta),优化出(x),然后再确定(alpha,eta)
    对偶问题的最优值为

    [d^*=underbrace{max}_{alpha,eta} heta_D(alpha,eta) ]

    三、原始问题和对偶问题的关系

    3.1 定理1

    如果原始问题和对偶问题都有最优解,则

    [d^* = underbrace{max}_{alpha,eta}underbrace{min}_xL(x,alpha,eta)lequnderbrace{min}_xunderbrace{max}_{alpha,eta}L(x,alpha,eta)=p^* ]

    因为对任意的(alpha,eta,x),都有

    [ heta_D(alpha,eta)=underbrace{min}_xL(x,alpha,eta)leq{L(x,alpha,eta)}lequnderbrace{max}_{alpha,eta}L(x,alpha,eta)= heta_P(x) ]

    [theta_D(alpha,eta)leq heta_P(x) ]

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

    [underbrace{max}_{alpha,eta} heta_D(alpha,eta)lequnderbrace{min}_x heta_P(x) ]

    [d^*=underbrace{max}_{alpha,eta}underbrace{min}_xL(x,alpha,eta)lequnderbrace{min}_xunderbrace{max}_{alpha,eta}L(x,alpha,eta)=p^* ]

    上述说明了原始问题的最优值不小于对偶问题的最优值,但是我们要通过对偶问题来求解原始问题,就必须得使原始问题的最优值与对偶问题的最优值相等。

    3.2 推论1

    通过定理1可以推出:假设(x^*,alpha^*,eta^*)分别是原始问题和对偶问题的可行解,如果(d^*=p^*),则(x^*,alpha^*,eta^*)分别是原始问题和对偶问题的最优解。

    当原始问题和对偶问题的最优值相等(d^*=p^*),如果使用对偶问题比求解原始问题简单,则可以用对偶问题求解原始问题。

    3.3 定理2

    对于原始问题和对偶问题,假设函数(f(x))(c_i(x))是凸函数,(h_j(x))是仿射函数(注:仿射函数是一阶多项式构成的函数,(f(x)=Ax+b)(A)是矩阵,(x,b)是向量);并且假设不等式约束(c_i(x))是严格可行的,即存在(x),对所有的(i)(c_i(x)<0),则存在(x^*,alpha^*,eta^*),使(x^*)是原始问题的解,(alpha^*,eta^*)是对偶问题的解,并且会有

    [p^*=d^*=L(x^*,alpha^*,eta^*) ]

    3.4 定理3(KTT条件)

    对于原始问题和对偶问题,假设函数(f(x))(c_i(x))是凸函数,(h_j(x))是仿射函数;并且假设不等式约束(c_i(x))是严格可行的,即存在(x),对所有的(i)(c_i(x)<0),则(x^*)是原始问题的解,(alpha^*,eta^*)是对偶问题的解的充分必要条件是(x^*,alpha^*,eta^*)满足下面的Karush-Kuhn-Tucker(KKT)条件

    [egin{align} & abla_xL(x^*,alpha^*,eta^*)=0 \ & abla_alpha{L(x^*,alpha^*,eta^*)}=0 \ & abla_eta{L(x^*,alpha^*,eta^*)}=0 \ & alpha_i^*c_i(x^*)=0,quad{i=1,2,cdots,k} \ & c_i(x^*)leq0,quad{i=1,2,cdots,k} \ & alpha_i^*geq0,quad{i=1,2,cdots,k} \ & h_j(x^*)=0,quad{j=1,2,cdots,l} end{align} ]

    其中(alpha_i^*c_i(x^*)=0,quad{i=1,2,cdots,k})是KKT的对偶互补条件,由该条件可知:如果(alpha_i^*>0),则(c_i(x^*)=0)

  • 相关阅读:
    Java JDBC 编程指北
    Java 版学生成绩管理系统,附源码!
    【剑指 Java】第 2 弹:剑指大厂,这份数据库面试总结请收好
    手把手教你制作纯手写电子签名
    【剑指 Java】第 1 弹:靠这份 Java 基础知识总结,我拿到了满意的 Offer
    【剑指 Java】第 3 弹:纯干货,计算机网络面试知识点总结
    深入死磕 Java IO 流
    【剑指 Java】第 4 弹:绝对硬货,Spring 面试知识点总结大全
    聊聊技术写作中的那些神兵利器
    关于ply, obj, 3ds 等三维模型文件的Loader
  • 原文地址:https://www.cnblogs.com/nickchen121/p/11686756.html
Copyright © 2011-2022 走看看