zoukankan      html  css  js  c++  java
  • [ML]交替方向乘子法(ADMM)简明梳理

    交替方向乘子法(ADMM)简明梳理

    本文对ADMM所涉及的一些数学知识进行简单的讲解, 并在最后汇总, 写出ADMM的基本形式.

    本文对推导过程酌情省略.

    拉格朗日乘子法

    给定二元函数(z=f(x,y))和约束条件(psi(x,y)=0), 求二元函数(z=f(x,y))在约束条件下的极值点. 该问题可以用拉格朗日乘子法解:

    首先做拉格朗日函数

    [L(x,y,lambda)=f(x,y)+lambdapsi(x,y) ]

    其中(lambda)为参数.

    令上式对所有自变量的一阶偏导等于零, 即

    [egin{cases} frac{partial L(x,y,lambda)}{partial x}=0\ frac{partial L(x,y,lambda)}{partial y}=0\ frac{partial L(x,y,lambda)}{partiallambda}=0 end{cases} ]

    由上式解出(x), (y)(lambda), 如此求得的((x,y)), 就是函数(z=f(x,y))在约束条件(psi(x,y)=0)下的可能极值点. 若这样的点只有一个, 由实际问题可直接确定此点即所求的点.

    对偶上升法

    首先需要简单介绍一下凸函数的定义. 凸函数比较直观的含义即为函数上任意两点的连线都在函数值之上, 二维上的典型是(y=x^2), 形如下凸的曲线, 三维上的典型是(z=x^2+y^2), 形如山谷.

    接下来提出一个基础问题:

    设函数(f(x))是一个凸函数, 约束条件为(Ax=b), 求函数(f(x))的最小值.

    [ ext{min} f(x)\ ext{s.t.} Ax=b ]

    写出该问题的拉格朗日函数

    [L(x,y)=f(x)+y^T(Ax-b) ]

    其中(y)是拉格朗日乘子, 也称为对偶变量.

    对偶函数为

    [g(x)=mathop{ ext{inf}}limits_xL(x,y)=-f^*(-A^Ty)-b^Ty ]

    其中inf代表下确界, (f^*)代表(f)的共轭函数.

    在满足一定条件的情况下, 对偶问题和原问题的最优值相等. 设原问题最优值为(x^*), 对偶问题最优值为(y^*), 则

    [x^*=mathop{ ext{arg min}}limits_xL(x,y^*) ]

    则可以通过对偶上升法, 通过梯度上升法迭代求解, 即

    [x^{k+1}=mathop{ ext{arg min}}limits_xL(x,y^k)\ y^{k+1}=y^k+alpha_k(Ax^{k+1}-b) ]

    增广拉格朗日乘子法

    在原拉格朗日乘子法的基础上加入惩罚项, 即为增广拉格朗日乘子法, 形如

    [L_ ho(x,y)=f(x)+y^T(Ax-b)+frac{ ho}{2}Vert Ax-bVert_2^2 ]

    其中( ho>0), 称为惩罚参数.

    在增广拉格朗日乘子法下, 原问题变为

    [mathop{ ext{min}}limits_xf(x)+frac{ ho}{2}Vert Ax-bVert_2^2\ ext{s.t.} Ax=b ]

    对偶上升迭代更新为

    [x^{k+1}=mathop{ ext{arg min}}limits_xL_ ho(x,y^k)\ y^{k+1}=y^k+ ho(Ax^{k+1}-b) ]

    交替方向乘子法

    将原问题推广到多个参数的情形下

    [mathop{ ext{min}}limits_xf(x)+g(z)\ ext{s.t.} Ax+Bz=c ]

    其中(xinmathbb{R}^n,zinmathbb{R}^m,cinmathbb{R}^p,Ainmathbb{R}^{p imes n},Binmathbb{R}^{p imes m}).

    其拉格朗日函数可以写为

    [L_ ho(x,z,y)=f(x)+g(z)+y^T(Ax+Bz-c)+frac{ ho}{2}Vert Ax+Bz-cVert_2^2 ]

    其更新迭代形式为

    [x^{k+1}=mathop{ ext{arg min}}limits_xL_ ho(x,z^k,y^k)\ z^{k+1}=mathop{ ext{arg min}}limits_zL_ ho(x^{k+1},z,y^k)\ y^{k+1}=y^k+ ho(Ax^{k+1}+Bz^{k+1}-c) ]

    其中( ho>0).

  • 相关阅读:
    sql server 2005中的用户自定义函数
    sql去除读出来的字段中的空格
    分割字符串
    VS2008 安装失败(microsoft visual studio web 创作组件 安装失败)的解决方法
    SAXParserFactory之求解
    Sql中的decimal
    设置fileupload上传文件的大小
    通过正则表达式来判断字符串是否为数字组成的
    ERP,CRM,BI的定义
    英语基本句型
  • 原文地址:https://www.cnblogs.com/Clouds42/p/13221722.html
Copyright © 2011-2022 走看看