详细请看:交替方向乘子法(Alternating Direction Method of Multipliers) - 凯鲁嘎吉 - 博客园

参考1

交替方向乘子法(ADMM)

交替方向乘子法(ADMM)

交替方向乘子法(ADMM)

交替方向乘子法(ADMM)

交替方向乘子法(ADMM)

参考2

经典的ADMM算法适用于求解如下2-block的凸优化问题( 交替方向乘子法(ADMM) 是最优值,令 交替方向乘子法(ADMM) 表示一组最优解):

交替方向乘子法(ADMM)

Block指我们可以将决策域分块,分成两组变量, 交替方向乘子法(ADMM) 这里面 交替方向乘子法(ADMM)交替方向乘子法(ADMM) 都是凸的。分成2-block是因为3-block及以上的问题性质会差一点,分析起来不太好说清楚(虽然实际当中基本上几个block都可以用,一般都会收敛...)。

那么我们这里就可以写出这个凸优化问题的增广拉格朗日函数(augmented Lagrangian function):

交替方向乘子法(ADMM)

注意到这个增广的意思就是在原来的拉格朗日函数后面加了个平方的正则项(系数 交替方向乘子法(ADMM) ),这个主要是为了不需要 交替方向乘子法(ADMM) 一定要是严格凸(strictly convex)/值域有限(只要是一般的凸函数就行了)然后也能保证收敛性。然后我们对 交替方向乘子法(ADMM) 用dual ascent(对偶上升法),或者也就是拉格朗日乘子法就知道可以有这样一个算法形式:

交替方向乘子法(ADMM)

其实dual ascent原理非常简单,本质上来说就是primal variable迭代方向取拉格朗日函数对primal variable的次微分,dual variable迭代方向取拉格朗日函数对dual variable的次微分(这里的话就是 交替方向乘子法(ADMM) )。这也是所谓拉格朗日乘子法的一般思路(method of multipliers)。当然这边还有一些细节,比如对偶变量迭代步长选了 交替方向乘子法(ADMM) 。所以如果你想从基础打起的话,可以从比如S. Boyd and L. Vandenberghe的凸优化书第五章看起。

那么ADMM,也就是所谓“交替方向”的乘子法就是在原基础上( 交替方向乘子法(ADMM) 一起迭代)改成 交替方向乘子法(ADMM) 单独交替迭代(如果有更多block也是类似)。即,我们的ADMM算法为

交替方向乘子法(ADMM)

本节最后,我们指出ADMM算法形式的另一种等价形式。如果定义所谓的残差(residual)为 交替方向乘子法(ADMM) ,那么注意到再定义 交替方向乘子法(ADMM) 作为所谓scaled dual variable,我们有 交替方向乘子法(ADMM) 即我们可以改写ADMM算法形式为

交替方向乘子法(ADMM)

嗯这个形式就比前面那个更简洁些,我们一般叫前一种形式为ADMM的unscaled形式,而这种就自然是scaled形式了。很多ADMM分析都是基于这个scaled形式的。

参考文献

覃含章:https://www.zhihu.com/question/309568920/answer/580226096

用ADMM实现统计学习问题的分布式计算 · MullOver :http://shijun.wang/2016/01/19/admm-for-distributed-statistical-learning/

《凸优化》中文版PDF+英文版PDF+习题题解:https://pan.baidu.com/s/1oRGp4_LfDVLo86r79pnXvg

相关文章:

  • 2022-12-23
  • 2021-08-26
  • 2022-12-23
  • 2021-10-02
  • 2021-12-15
  • 2021-11-01
  • 2021-08-24
猜你喜欢
  • 2022-01-23
  • 2022-12-23
  • 2021-08-06
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-10
相关资源
相似解决方案