[ML]交替方向乘子法(ADMM)简明梳理
Posted clouds42
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ML]交替方向乘子法(ADMM)简明梳理相关的知识,希望对你有一定的参考价值。
交替方向乘子法(ADMM)简明梳理
本文对ADMM所涉及的一些数学知识进行简单的讲解, 并在最后汇总, 写出ADMM的基本形式.
本文对推导过程酌情省略.
拉格朗日乘子法
给定二元函数(z=f(x,y))和约束条件(psi(x,y)=0), 求二元函数(z=f(x,y))在约束条件下的极值点. 该问题可以用拉格朗日乘子法解:
首先做拉格朗日函数
其中(lambda)为参数.
令上式对所有自变量的一阶偏导等于零, 即
由上式解出(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))的最小值.
即
写出该问题的拉格朗日函数
其中(y)是拉格朗日乘子, 也称为对偶变量.
对偶函数为
其中inf代表下确界, (f^*)代表(f)的共轭函数.
在满足一定条件的情况下, 对偶问题和原问题的最优值相等. 设原问题最优值为(x^*), 对偶问题最优值为(y^*), 则
则可以通过对偶上升法, 通过梯度上升法迭代求解, 即
增广拉格朗日乘子法
在原拉格朗日乘子法的基础上加入惩罚项, 即为增广拉格朗日乘子法, 形如
其中( ho>0), 称为惩罚参数.
在增广拉格朗日乘子法下, 原问题变为
对偶上升迭代更新为
交替方向乘子法
将原问题推广到多个参数的情形下
其中(xinmathbb{R}^n,zinmathbb{R}^m,cinmathbb{R}^p,Ainmathbb{R}^{p imes n},Binmathbb{R}^{p imes m}).
其拉格朗日函数可以写为
其更新迭代形式为
其中( ho>0).
以上是关于[ML]交替方向乘子法(ADMM)简明梳理的主要内容,如果未能解决你的问题,请参考以下文章
多微电网计及碳排放的基于交替方向乘子法(ADMM)的多微网电能交互分布式运行策略研究(Matlab代码实现)
⚡机器学习⚡交替方向乘数法(Alternating Direction Method of Multipliers,ADMM)