详细介绍ADMM交替方向乘子法

宇宙微尘
2024-12-12 11:44:46
运筹优化
技术教程
本帖最后由 宇宙微尘 于 2025-1-23 17:23 编辑


前言



交替方向乘子法(Alternating Direction Method of Multipliers,ADMM)是一种求解具有可分离性的凸优化问题的计算框架, 由于其是对偶分解法和增广拉格朗日乘子法的结合,使该算法有分解性的同时保证了良好的收敛性,处理速度快。ADMM适用于求解分布式凸优化问题,主要应用在解空间规模很大的情况,可以进行分块求解,而且解的绝对精度要求不是太高。


ADMM以先分解再结合的形式求解问题,即先把原问题分解成若干个相对原问题较简单的子问题,再把子问题的解结合起来得到原问题的全局解。


注意:本文适合有一点点凸优化理论基础的读者阅读,一点点就ok。




一、预备知识


1. 对偶上升(Dual Ascent)


考虑等式约束凸优化问题





其中变量x ∈ R n  , A ∈ R m × n  , 并且函数f : R n → R 是凸的。


那么(1)式的拉格朗日函数( Lagrangian)可以写为:



上式的对偶函数(Dual Function)为



其中y叫做对偶变量(Dual variable)或者拉格朗日乘子(Lagrange multiplier),y ∈ R m,f 是f的共轭函数(Conjugate function)注 1 。


注1:这里简单介绍一下共轭函数以及上式中对偶函数的推导,如想深入理解对偶函数的意义请参考Boyd 《Convex Optimization》中的3.3节。
函数 f ( x )的共轭函数为:



则公式(3)的推导如下



此时将(1)式的优化问题转化为其对偶问题:



需要注意的是,这里我们假设式(1)和(4)是满足强对偶条件的(如 slater条件,此处不展开介绍),即原问题(1)和对偶问题(4)的解是相等的,即我们可以通过对偶问题的解(最优点)y 得到原问题的解(最优点):



由于对偶问题(4)是max,所以要用梯度上升而不是梯度下降来优化,这就是 “对偶上升” 名字的由来。假设对偶函数h 是可导的,即∇ h ( y )存在,那么对偶上升法的迭代更新过程如下:



其中α k > 0表示步长。公式(6)称为x-minimization step,公式(7)被称为 dual variable update。这里特别提一下,这个更新过程能够正常工作的前提是f ( x )需要满足一些强条件,比如f ( x )必须要严格凸的或者有界的;再比如如果f ( x )是线性的即f ( x ) = k x + b 类似的函数,那么(6)式是找不到极小值点的,就无法更新x了。后面会介绍如何解决这个问题(增广拉格朗日)。


2. 对偶分解(Dual Decomposition)



现在我们假设目标函数f 是可分的,即f ( x ) 可以写成



其中x = ( x 1 , . . . , x N ) , x i ∈ R n i 是x 的子向量(subvector)。这样f之间相互独立,自变量x之间也没有关系,我们就可以并行的去计算每一个f i ( x i ) 的最小值。然后,我们在将A 按列分块,即



 


所以,很自然地,拉格朗日函数也可进行分解,即



公式(10)意味着我们在做公式(6)x-minimazation的时候,可以并行来做。即



在以上两个公式(11)和(12)的迭代过程中,我们需要“广播”(broadcast)和 “聚合”(gather)操作。通俗的讲,一方面,A i 的值需要聚合在一起得到( A x k + 1 − b ) (这个也被称为残差residual);另一方面,当得到对偶变量y k + 1的值后,它得被广播到每一个x i  -minimization step中。


3. 增广拉格朗日乘子法(Augmented Lagrangians and the Method of Multipliers)


我们把公式(2)的拉格朗日函数加上一个二次正则项,便将其升级为增广拉格朗日乘子法



其中ρ > 0称为惩罚系数(penalty parameter)。
现在我们来理解一下这个增广拉格朗日乘子法的作用:


(1)有了后面这个二次项,我们不再需要假设f ( x )是严格凸的或者有界的了,比如此时即使f ( x )是线性的,也可以求导算极值了;




(2)增加这个二次项后会使我们的求解过程更加“光滑”(smooth),使得迭代过程更加稳定(robust)更好收敛;




(3)增加这一项不会改变原问题,因为我们受该问题的约束条件限制,最终得到的最优解是满足A x − b = 0 的,所以和原问题是等价的。


好了,到这里,我们重新书写一下我们的优化问题:



然后,对偶上升法也被重新书写为:



此时这个步长要求是ρ 值注 2


注2:这里解释一下为什么步长是ρ。细节可以参考Boyd 《Convex Optimization》中的第5章。
假设我们得到了满足式(1)的最终优化结果( x , y ) ,那么将满足可行性(feasibility)条件如下:


Axb=0,f(x)+ATy=0(2)


我们令x k + 1 为可以使L ρ ( x , y k ) 最小化的值(公式(15)),则有



注意观察后两个等号后面的第二个式子,有y k + 1 = y k + ρ ( A x k + 1 − b ) ,因此这里只有步长取ρ 才能使( x k + 1 , y k + 1 ) 对偶可行性(dual feasibility)成立。


注意了,我们刚刚提到增广拉格朗日乘子法给优化过程中的收敛性带来了极大的改善,但这是有代价的。当函数f是可分解的(separable)时,增广拉格朗日函数L ρ却不可分解了!原因是二次项展开后有会有一个交叉项。总之,此时我们无法将公式(15)像公式(11)那样分解了,无法将任务拆分成多个子任务并行计算了,导致在数据维度很高的情况下无法运行。为了解决这个问题,ADMM终于出场了。


二、交替方向乘子法(ADMM)



  • ADMM将对偶上升法的可分解性与乘子法的收敛性相结合的算法!


ADMM基本算法



为了说明ADMM,我们将原问题即公式(1)的目标函数f ( x )分解成两个f ( x ) 和g ( z ) ,相应的原变量x也分解成两个( x , z ) ,则我们得到优化问题



为了避免混乱,这里不再说明矩阵A,B以及向量x , z , c 的维度。同样,我们假设f和g 是凸的(convex)。
现在我们直接写出公式(17)的增广拉格朗日乘子法的函数



同样,我们直接给出ADMM的迭代优化过程



其中ρ > 0 。可以看到,ADMM和前面提到的对偶上升和乘子法非常相似,ADMM包含一个x -minimization step (19)、一个z -minimization step (20)和一个dual variable update (21)。需要注意的是,x 和z 的更新是交替的(alternating)。到这里,是不是觉得ADMM其实也没啥:)。


典型的例子


Soft Thresholding
Quatratic Objective


这是两个比较典型ADMM例子,有需要的可以自己去看看《Distributed_Optimization_and_Statistical_Learning》这本书的4.4.3和5.2。


————————————————


本文转载自CSDN博主:JayShaun


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。


原文链接:https://blog.csdn.net/m0_37864814/article/details/123199376

2285
0
0
0
关于作者
相关文章
  • 量子计算赋能能源材料革命:从分子模拟到材料设计,开启高效研发 ...
    国际团队在《ACS Energy Letters》发表《Harnessing Quantum Computing for Energy Materials: O ...
    了解详情 
  • 量子力学百年之际的 MLIP:化学精度、效率与通用泛化的演进与展 ...
    随着量子力学在2025年迎来其百年纪念,机器学习原子间势(MLIP)已逐渐发展为分子建模领域的变革性 ...
    了解详情 
  • 具身智能再迎突破!俄罗斯团队用量子退火技术破解机器人运动控制 ...
    内容提要一项由俄罗斯多家科研机构联合完成的最新研究表明,量子退火(Quantum Annealing)技术 ...
    了解详情 
  • Transformer 的尽头是 Ising 机
    华人学者闪耀2026元旦,前有DeepSeek mHC:一次将 Transformer 残差流拉回重整化轨道的重大升级 ...
    了解详情 
  • 机器学习赋能靶向蛋白降解药物设计:PROTACs与分子胶的技术综述 ...
    靶向蛋白降解(TPD)通过利用泛素–蛋白酶体系统(UPS)实现对致病相关蛋白的催化性去除。蛋白 ...
    了解详情 
领取成功
本月5个550bit真机配额已发放给您,配额将在2个月后到期,请及时使用哦~
活动中心
联系我们
二维码
返回顶部
返回
活动中心

完成任务,轻松获取真机配额

×
每日必做
新手任务
长期任务
其他任务
快速回复 返回顶部 返回列表
玻色有奖小调研
填写问卷,将免费赠送您1个1000bit真机配额
(单选) 您是从哪个渠道得知我们的?*
您是从哪个社交媒体得知我们的?*
您是通过哪个学校的校园宣讲得知我们的呢?
取消

提交成功

真机配额已发放到您的账户,可前往【云平台】查看

量子AI开发者认证

考核目标

开发者能够成功搭建Kaiwu-PyTorch-Plugin项目基础环境,并成功运行示例代码,根据示例提示,输出指定的值并填写至相应的输入框中。

通过奖励

5个一年效期的1000量子比特真机配额

专属「量子AI开发者」社区认证标识

开发者权益

每月固定权益:5个550量子比特真机配额
前往考核

第一步

按照README提示成功安装Kaiwu-PyTorch-Plugin库环境依赖
前往GitHub

第二步

运行 community-assessment 分支下的 run_rbm.py 代码示例

第三步

理解示例代码,手动打印并填写如下数值:

正相采样的状态

负相采样的状态

正相的能量值

负相的能量值

*

提交答案

开发者权益

每月固定权益:5个550量子比特的真机配额

恭喜您完成考核

您将获得量子AI开发者认证标识及考核奖励

1000 bit*5

配额

Quantum AI Developer Certification

Assessment Objectives

Developers should successfully set up the basic environment for the Kaiwu-PyTorch-Plugin project, run the QBM-VAE sample code, and calculate the correct FID value based on the random seed value provided by the system.

Pass Rewards

10 quotas for 550-qubit real quantum machines with a one-year validity period

Exclusive "Quantum AI Developer" Community Certification Badge

Developer Benefits

Fixed Monthly Benefits: 5 quotas for 550-qubit real quantum machines
Proceed to Assessment

Step 1

Install the environment dependencies for the Kaiwu-PyTorch-Plugin library according to the README instructions
Go to GitHub

Step 2

Replace the Seed Value

Your seed value is

Step 3

Enter the FID Value You Calculated

*

Submit Answer

Developer Benefits

Fixed Monthly Benefits: 5 quotas of 550-qubit real machines

Congratulations on Completing the Assessment

You will receive the Quantum AI Developer Certification Badge and Assessment Rewards

550bit*10

Quotas