ADMM——交替方向乘子法
ADMM(Alternating Direction Method of Multipliers,交替方向乘子法)是一种优化算法,主要用于解决分布式、大规模和非光滑的凸优化问题。ADMM通过将原始问题分解为多个易于处理的子问题来实现优化。它结合了两种经典优化方法:梯度下降法(gradient descent)和拉格朗日乘子法(Lagrangian multiplier method)。
ADMM
算法
ADMM考虑如下形式的凸优化问题:
其中$x$和$z$是优化变量,$f(x)$和$g(z)$是凸函数,$A,B,c$是已知的系数矩阵与向量。为了解决这个问题,首先引入拉格朗日乘子$y\in R$,构造增广拉格朗日函数$L(x, z, y)$:
$\displaystyle L(x, z, y) = f(x) + g(z) + y^T(Ax + Bz - c) + \frac{\rho}{2} ||Ax + Bz - c||^2$
其中$\rho > 0$是一个超参数,定义算法迭代步伐。相较于普通拉格朗日函数,增广拉格朗日函数多了二范数约束,能更好地处理约束条件并加速算法的收敛。
ADMM算法通过以下迭代步骤进行优化直到收敛:
1、更新$x$:$x^{k+1} = \text{arg}\min\limits_x L(x, z^k, y^k)$
2、更新$z$:$z^{k+1} = \text{arg}\min\limits_z L(x^{k+1}, z, y^k)$
3、更新$y$:$y^{k+1} = y^k + \rho(Ax^{k+1} + Bz^{k+1} - c)$
收敛条件如:$\|x^{k+1}-x^{k}\|$与$\|z^{k+1}-z^{k}\|$小于一定阈值。
为什么可以优化到最小值
ADMM的收敛性可以从两个方面来理解:
可分离性:在ADMM的迭代过程中,$x$和$z$的优化问题是分开进行的。这意味着我们可以独立地解决$f(x)$和$g(z)$的优化问题。在每一步迭代中,我们都在尝试最小化原始问题的目标函数。
拉格朗日乘子法的收敛性:拉格朗日乘子法的目标是找到满足原始问题约束条件的最优解。在ADMM的迭代过程中,通过调整拉格朗日乘子$y$来强化原始问题的约束条件,从而保证算法在全局范围内收敛到满足约束条件的可行解。
综上所述,ADMM算法可以在全局范围内收敛到原始优化问题的最小值,因为它能够在每次迭代中分别优化目标函数,并逐渐强化约束条件。
直观理解:如果满足约束条件,迭代的前两步总是会使$f(x)$与$g(z)$变小,而第3步只是更新$y$,因此总体的迭代过程是单向让原始优化问题$f(x)+g(z)$变小的。而一旦约束不满足,第3步对$y$的更新就是约束对的前两步更新的反抗。如果前两步更新使约束不满足,那么在第3步$y$就会更新,使约束在下一次迭代的前两步产生相应的梯度。
参考: https://blog.csdn.net/weixin_44655342/article/details/121899501
ADMM——交替方向乘子法的更多相关文章
- 交替方向乘子法(ADMM)
交替方向乘子法(ADMM) 参考1 参考2 经典的ADMM算法适用于求解如下2-block的凸优化问题( 是最优值,令 表示一组最优解): Block指我们可以将决策域分块,分成两组变量, 这里面 都 ...
- 交替方向乘子法(ADMM)的原理和流程的白话总结
交替方向乘子法(ADMM)的原理和流程的白话总结 2018年08月27日 14:26:42 qauchangqingwei 阅读数 19925更多 分类专栏: 图像处理 作者:大大大的v链接:ht ...
- 交替方向乘子法(Alternating Direction Multiplier Method,ADMM)
交替方向乘子法(Alternating Direction Multiplier Method,ADMM)是一种求解具有可分结构的凸优化问题的重要方法,其最早由Gabay和Mercier于1967年提 ...
- 对偶上升法到增广拉格朗日乘子法到ADMM
对偶上升法 增广拉格朗日乘子法 ADMM 交替方向乘子法(Alternating Direction Method of Multipliers,ADMM)是一种解决可分解凸优化问题的简单方法,尤其在 ...
- 机器学习——支持向量机(SVM)之拉格朗日乘子法,KKT条件以及简化版SMO算法分析
SVM有很多实现,现在只关注其中最流行的一种实现,即序列最小优化(Sequential Minimal Optimization,SMO)算法,然后介绍如何使用一种核函数(kernel)的方式将SVM ...
- 【整理】深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法.在有等式约束时使用拉格朗日乘子法,在有不等约束时使用 ...
- 深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
[整理] 在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法.在有等式约束时使用拉格朗日乘子法,在有 ...
- 装载:关于拉格朗日乘子法与KKT条件
作者:@wzyer 拉格朗日乘子法无疑是最优化理论中最重要的一个方法.但是现在网上并没有很好的完整介绍整个方法的文章.我这里尝试详细介绍一下这方面的有关问题,插入自己的一些理解,希望能够对大家有帮助. ...
- 拉格朗日乘子法&KKT条件
朗日乘子法(Lagrange Multiplier)和KKT(Karush-Kuhn-Tucker)条件是求解约束优化问题的重要方法,在有等式约束时使用拉格朗日乘子法,在有不等约束时使用KKT条件.前 ...
- 关于拉格朗日乘子法与KKT条件
关于拉格朗日乘子法与KKT条件 关于拉格朗日乘子法与KKT条件 目录 拉格朗日乘子法的数学基础 共轭函数 拉格朗日函数 拉格朗日对偶函数 目标函数最优值的下界 拉格朗日对偶函数与共轭函数的联系 拉 ...
随机推荐
- locale 设置
locale 介绍 在终端中,locale(本地化)设置是指与本地语言.国家和文化偏好有关的环境变量的配置.这些设定决定了程序如何处理和显示字符.时间.日期格式.货币等. 在类 Unix 系统(比如 ...
- IDEA maven 项目 如何获取项目离线运行所需的全部依赖( .m2格式)
背景:maven项目要将整个项目的依赖移植到某无法联网服务器进行测试,需要项目离线运行所需的全部依赖 步骤: 1. 首先需要有项目源码,解压后,使用IDEA Open Project 2. 在Sett ...
- C++创建与调用dll动态链接库(MinGW64 Dev-C++)
本文使用的是dev-c++,如果涉及到VC++中不一样的操作,也会适当进行区分. 项目一:创建DLL 1.创建一个DLL类型的项目,当前命名为dlltest,并选择合适的路径进行保存. 2.在生成的 ...
- linux磁盘分区之后,lsblk没有显示
可以看出 fdisk 创建一个 sda4 的分区 并保存退出, 但是 不管是使用 fdisk -l ,还是 lsblk 都无法显示出来, 那么导致问题的原因,主要是因为新创建了分区之后,系统没有重 ...
- NOIP 考前板子复习
点双 注意两个点,特判单点,是 son = 0 且 fa = 0,因为自环,还有弹栈弹到儿子节点处,因为点双不一定由割点弹出. code void dfs(int u, int la) { int s ...
- 项目发布后项目时间和linux时间不一致
查阅了很多资料,本来总以为是项目的问题,启动前端,连接不同的后台,本地项目时间是正确的,部署到linux Docker容器就不行.很纳闷...... 基于以上,还是决定记下来,以便后来的人查阅,解决问 ...
- 分享3款开源、免费的Avalonia UI控件库
Avalonia介绍 Avalonia是一个强大的框架,使开发人员能够使用.NET创建跨平台应用程序.它使用自己的渲染引擎绘制UI控件,确保在Windows.macOS.Linux.Android.i ...
- thinkphp在原字段上面进行加减操作
经常有需要对某个数据表的计数字段进行加减操作,我们来看下在ThinkPHP中的具体使用办法. 最简单的,使用下面方法对score自加,第二个参数也可以不要,默认加1: M('User')-> ...
- Csharp的CancellationToken 案例
using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using Syst ...
- 使用 Fluent Bit 实现云边统一可观测性
本文基于 KubeSphere 可观测性与边缘计算负责人霍秉杰在北美 KubeCon 的 Co-located event Open Observability Day 闪电演讲的内容进行整理. 整理 ...