ADMM优化算法

ADMM算法 ADMM算法,全称为交替方向乘子法(Alternating Direction Method of Multipliers),是一种用于解决优化问题的迭代算法,特别是那些可以分解为多个子问题的优化问题。ADMM结合了拉格朗日乘子法和分裂方法的特点,通过交替优化原问题的分裂子问题和更新乘子来逼近全局最优解。它在处理大规模和分布式优化问题时特别有效,广泛应用于机器学习、信号处理、统计学习、图像处理等领域。ADMM算法的基本思想是将一个复杂的优化问题分解为几个更简单的子问题,这些子问题可以更容易或更高效地求解。 阅读详情

ADMM优化算法

原文链接: http://www.cnblogs.com/breezedeus/p/3496819.html

从等式约束的最小化问题说起:

minf(x)s.t.Ax=b

上面问题的拉格朗日表达式为:

L(x,λ)=f(x)+λT(Ax−b)

也就是前面的最小化问题可以写为:

minxmaxλL(x,λ)

它对应的对偶问题为:

maxλminxL(x,λ)

下面是用来求解此对偶问题的对偶上升迭代方法:

xk+1:=argminxL(x,λk)λk+1:=λk+αk(Axk+1−b)//x−minimization//dual update

这个方法在满足一些比较强的假设下可以证明收敛。

为了弱化对偶上升方法的强假设性,一些研究者在上世纪60年代提出使用增强拉格朗日表达式(augmented Lagrangian)代替原来的拉格朗日表达式:

Lρ(x,λ)=f(x)+λT(Ax−b)+(ρ/2)||Ax−b||22

其中 ρ>0 。对应上面的对偶上升方法,得到下面的乘子法(method of multipliers):

xk+1:=argminxLρ(x,λk)λk+1:=λk+ρ(Axk+1−b)

注意,乘子法里把第二个式子里的 αk 改成了增强拉格朗日表达式中引入的 ρ 。这不是一个随意行为,而是有理论依据的。利用L(x,λ)可以导出上面最小化问题对应的原始问题和对偶问题可行性条件,分别为( ∂L∂λ=0,∂L∂x=0 ):

Ax∗−b=0,∇f(x∗)+ATλ∗=0

既然 xk+1 最小化 Lρ(x,λk) ,有:

0=∇xLρ(xk+1,λk)=∇xf(xk+1)+AT(λk+ρ(Axk+1−b))=∇xf(xk+1)+ATλk+1

上面最后一个等式就是利用 λk+1=λk+ρ(Axk+1−b) 。从上面可知,这种 λk+1 的取法使得 (xk+1,λk+1) 满足对偶问题可行条件 ∂L∂x=0 。而原始可行条件在迭代过程中逐渐成立。

乘子法弱化了对偶上升法的收敛条件,但由于在 x−minimization 步引入了二次项而导致无法把 x 分开进行求解(详见这儿)。而接下来要讲的Alternating Direction Method of Multipliers (ADMM)就是期望结合乘子法的弱条件的收敛性以及对偶上升法的可分解求解性。ADMM求解以下形式的最小化问题:

minf(x)+g(z)s.t.Ax+Bz=c(1)

其对应的增强拉格朗日表达式为:

Lρ(x,z,λ)=f(x)+g(z)+λT(Ax+Bz−c)+(ρ/2)||Ax+Bz−c||22(2)

ADMM包括以下迭代步骤:
xk+1:=argminxLρ(x,zk,λk)zk+1:=argminzLρ(xk+1,z,λk)λk+1:=λk+ρ(Axk+1+Bzk+1−c)(3)(4)(5)

ADMM其实和乘子法很像,只是乘子法里把 x 和z放一块求解,而ADMM是分开求解,类似迭代一步的Gauss-Seidel方法。其中(5)中的推导类似于乘子法,只是使用了 zk+1 最小化 Lρ(xk+1,z,λk) :
0=∇zg(zk+1)+BTλk+ρBT(Axk+1+Bzk+1−c)=∇zg(zk+1)+BTλk+1

其中用到了 z 对应的对偶可行性式子:∂L∂z=∇g(z∗)+BTλ∗=0。
定义新变量 u=λρ ,,那么(3-5)中的迭代可以变为以下形式:
xk+1:=argminx(f(x)+(ρ/2)||Ax+Bzk−c+uk||22zk+1:=argminz(g(z)+(ρ/2)||Axk+1+Bz−c+uk||22uk+1:=uk+Axk+1+Bzk+1−c(6)(7)(8)

在真正求解时通常会使用所谓的over-relaxation方法,也即在求解 z 和u中使用下面的表达式代替其中的 Axk+1 :
αkAxk+1−(1−αk)(Bzk−c)

其中 αk 为relaxation因子。有实验表明 αk∈[1.5,1.8] 可以 改进收敛性。

ADMM的框架确实很牛逼,把一个大问题分成多个小问题。理论上,ADMM的框架可以解决大部分实际中的大尺度问题。我自己全部实现了一遍这个框架,主要用于求解LR(逻辑回归)问题,下面说说我碰到的一些问题:

  1. 收敛不够快,往往需要迭代几十步。整体速度主要依赖于 xi 更新时所使用的优化方法,个人建议使用liblinear里算法,但是不能直接拿来就用,需要做一些调整。
  2. 停止准则和ρ的选取:停止准则主要考量的是 xi 和 z 之间的差异和它们本身的变动情况,但这些值又受ρ的取值的影响。它们之间如何权衡并无定法。个人建议使用模型在测试集上的效果来确定是否停止迭代。
  3. relaxation步骤要谨慎:α的取值依赖于具体的问题,很多时候的确可以加快收敛速度,但对有些问题甚至可能带来不收敛的后果。用的时候不论是用x−>z−>u的更新步骤,还是用 u−>x−>z 的更新步骤,在 u 步使用的x^要和在 z 步使用的相同(使用旧的z),而不是使用 z 步刚更新的z重算。
  4. warm start 和子问题求解逐渐精确的策略可以降低xi更新时的耗时,但也使得算法更加复杂,需要设定的参数也增加了。

stanford的比较好的一个源码和实例链接

http://www.stanford.edu/~boyd/papers/admm/

稀疏优化算法怎么选?从收敛曲线到计算开销,深入对比ADMM、ISTA和FISTA 本文深入对比了稀疏优化算法ADMM、ISTA和FISTA在收敛曲线、计算开销和实现细节上的差异,帮助读者根据具体场景做出最优选型。通过实验数据和MATLAB代码示例,详细解析了各算法的核心机制、参数敏感性及在LASSO问题中的应用表现,为高维数据特征选择提供实用指南。 阅读详情

相关推荐

高维中介数据:基于交替方向乘子法(ADMM)的高维度单模态中介模型的参数估计(入门+实操)

用于高维度单模态中介模型的参数估计,采用交替方向乘子法(ADMM)进行计算。该包提供了确独立筛选(SIS)功能来提高中介效应的敏感性和特异性,并支持Lasso、弹性网络、路径Lasso和网络约束惩罚等不同正则化方法。

三分钟热度 1270

稀疏模型与结构性稀疏模型 及ADMM求解

介绍了稀疏结构模型来自  http://blog.youkuaiyun.com/jwh_bupt/article/details/12070273 稀疏编码系列: (一)----Spatial Pyramid 小结(二)----图像的稀疏表示——ScSPM和LLC的总结(三)----理解sparse coding(四)----稀疏模型与结构性稀疏模型 --------------------

sjtu_012的专栏 6611

优化算法探究:乘子法与ADMM在多领域应用

拉格朗日乘子法是一种在存在约束条件时寻找多元函数极值的方法。该方法将有约束问题转化为无约束问题,通过引入拉格朗日乘数将多变量函数和约束条件结合起来,形成拉格朗日函数。求解优化问题时,通过寻找拉格朗日函数的临界点来确定原问题的最优解。非线性最小二乘问题是一种常见的优化问题,广泛应用于各个科学和工程领域。其主要目的是找到一组参数,使得模型预测值与观测值之间的误差平方和最小化。这类问题在数据拟合、参数估计和最优化控制等领域中具有重要的作用。

weixin_33750664的博客 999

超参数的设置;使用适当的尺度来选择超参数;批量归一化;测试时的批量标准化:

这样,[0.0001, 0.001],[0.001, 0.01],[0.01, 0.1],[0.1, 1]各个区间内随机采样的超参数个数基本一致,也就扩大了之前[0.0001, 0.1]区间内采样值个数。一般解法是,如果线性区间为[a, b],令m=log(a),n=log(b),则对应的log区间为[m,n]。均匀随机采样:对于超参数#layers和#hidden units,都是正整数,是可以进行均匀随机采样的,即超参数每次变化的尺度都是一致的(如每次变化为1,犹如一个刻度尺一样,刻度是均匀的)。

m0_48489427的博客 790

ADMM优化算法及其MATLAB实现源码

交替方向乘子法(Alternating Direction Method of Multipliers, ADMM)是一种数学优化算法,主要用于求解大规模分布式优化问题。它结合了拉格朗日乘子法和分解协调策略,通过交替优化两个或者更多的子问题来求解原问题。ADMM适用于各种类型的优化问题,包括凸优化、非凸优化以及混合整数优化等。凸优化问题是指目标函数为凸函数,约束集为凸集的优化问题。在数学上,如果一个函数f(x)在整个定义域内二阶导数非负(即Hessian矩阵半正定),那么这个函数就是凸的。

weixin_29069575的博客 1450

ADMM解决MMV下LASSO问题

ADMM解决MMV下LASSO问题

ADMM优化算法讲解

ADMM优化算法讲解 【下载地址】ADMM优化算法讲解 本资源深入解析了交替方向乘子法(ADMM),一种在信号处理、统计学习等领域广泛应用的优化算法。内容涵盖ADMM的基本原理、数学表达、收敛性分析及其在不同领域的应用实例。通过学习,您将掌握这一高效优化工具,并能在实际问题中灵活运用。建议具备线性代数、最优化理论及编程基...

gitblog_06751的博客 428

aistudio高效解压zip文件的实用技巧

本文详细介绍了在百度AI Studio平台上高效解压ZIP文件的实用技巧。针对深度学习项目数据准备中的常见痛点,重点讲解了使用Python zipfile库和Linux unzip命令两种核心方法,并提供了路径设置、大文件处理、中文乱码等关键问题的解决方案,帮助用户提升数据处理效率。

salt的博客 784

ADMM优化算法讲解:开启优化问题新思路

ADMM优化算法讲解:开启优化问题新思路 【下载地址】ADMM优化算法讲解 本资源深入解析了交替方向乘子法(ADMM),一种在信号处理、统计学习等领域广泛应用的优化算法。内容涵盖ADMM的基本原理、数学表达、收敛性分析及其在不同领域的应用实例。通过学习,您将掌握这一高效优化工具,并能在实际问题中灵活运用。建议具备线性代数...

gitblog_06715的博客 370

PubMedBERT:生物医学NLP中的垂直领域预训练实践与性能突破

本文深入探讨了PubMedBERT在生物医学NLP领域的应用与性能突破。作为专为生物医学文本设计的预训练模型,PubMedBERT通过全词掩码策略和BLURB基准测试,显著提升了命名实体识别、关系抽取等任务的准确率。文章还提供了PubMedBERT的实战应用案例和代码示例,展示了其在医学文献检索和电子病历结构化中的卓越表现。

kite3的博客 283

电路课设-音响分频器电路设计

(一)题目简介 1.一阶分频器电路设计 假定高音和低音扬声器均等效为 16 欧姆电阻,设计如图 2 的简单分频器电 路,要求高低频分界(两个滤波器的截止频率)为 5kHz。 1) 写出高音扬声器和低音扬声器电压对于 vs 的传递函数,确定电路中电 容 C 和电感 L 的元件值;2)利用 AC 频率扫描分析求出两个扬声器电压的频率响应曲线,验证计算 结果。用包含高低频成分的电压 vs 激励进行测量验证。 3)计算并利用 EWB 仿真证明从 vs 看进去的阻抗为一常数 16 欧姆。

weixin_53507617的博客 1万+

MNN量化—ADMM优化算法

作者:糖心他爸 链接:https://zhuanlan.zhihu.com/p/81243626 来源:知乎 从优化的角度出发(对应MNN中的ADMM求解) 从优化的角度出发,又该如何进行建模和求解呢?首先如果我们想从优化角度去解决该问题,我们首先需要先建立目标函数,这里我们定义一个目标:希望编码后的数据(int8)经过反编码后,跟原数据的”距离“尽可能的接近。该描述可以通过如下数学公式进行刻画: 广义目标函数 进一步的,假设我们这里选定的度量D为L2度量,f和E的选取跟文章一开始时候介绍的一致

独行侠 3160

Zemax 中的 LED 阵列模型

这些光线是所有光线的子集,用于布局可视化,而不是详细分析。X 和 Y 散度(αx 和 αy)以度为单位,以不同的方式设置为 6 度和 12 度。每个 LED 都以朗伯模式(广角分布)发光,尽管有些 LED 具有内置光学元件,用于更窄或更聚焦的光束。,具体取决于这些类别中使用的半导体材料。LED 阵列由多个发光二极管 (LED) 组成,这些二极管以特定模式或配置排列,以实现均匀照明、更高强度或特定照明特性。如果数据的存在更改为“辐射强度”,则它以弧度为单位显示每个立体角的功率,作为探测器上入射角的函数。

jkh920184196的博客 1594

主从配电网ADMM优化算法与Matlab实现

分布式优化算法是解决电力系统大规模计算问题的关键技术,其中ADMM(交替方向乘子法)因其良好的分解特性被广泛应用于主从配电网优化。该算法通过分解原问题为多个子问题交替求解,有效降低了计算复杂度和通信负担。在含高比例分布式电源的现代配电网中,传统集中式优化方法面临收敛困难,而改进的串行并行混合ADMM算法通过动态调整机制和分层优化架构,能使迭代次数减少40%以上。Matlab仿真验证表明,该算法在IEEE 123节点系统中计算时间缩短至12.1秒,特别适合分布式光伏渗透率30%-50%的场景,实际工程应用可实

weixin_30702441的博客 197

nvlddmkm事件ID14报错排查全指南:从找不到描述到显卡驱动崩溃

系统日志中的“无法找到描述”往往让人一头雾水,但这类提示其实隐藏着驱动故障的关键线索。Windows事件查看器通过事件源和ID记录系统异常,其中显卡驱动相关的内核模式驱动组件一旦超时失败,就会触发TDR机制,产生13、14、153等不同事件ID。理解这些ID的含义,比纠结“找不到描述”本身更重要。对于频繁出现的驱动崩溃问题,可以从日志频率和发生场景判断方向,再通过安全模式下彻底清理驱动、关闭冲突软件、检查供电和温度等步骤逐层定位。无论是游戏满载黑屏,还是睡眠唤醒后闪退,掌握NVIDIA驱动日志的解读逻辑,都

weixin_30545945的博客 406

Full Range && Limit Range

Full Range && Limit Range1 Full range和Limit Range定义2 为什么会需要Limit Range3 用Full range去显示limit Range图片4 YUV转RGB5 额外 1 Full range和Limit Range定义 我们知道,对于RGB和YUV的色彩空间来说,有个位深(bit-depth)的概念;位深是指记录图像每个像素的色彩通道时所使用的bit数,常见的RGB888,YUV420-8bit。以RGB888为例,其代表R G B

zjhcj1的博客 1万+

从对偶上升到ADMM:一张图看懂优化算法的演进脉络与核心思想

本文深入解析了优化算法从对偶上升到ADMM的演进历程与核心思想,重点介绍了交替方向乘子法(ADMM)的创新优势与应用场景。ADMM通过交替优化策略,在保持增广拉格朗日法稳定性的同时,实现了部分可分解性,成为处理大规模分布式计算问题的利器。文章还探讨了ADMM在机器学习、图像处理和金融工程等领域的实际应用价值。

weixin_30312563的博客 452

手把手复现论文:SVPWM过调制I区与II区算法仿真(附MATLAB源码)

本文详细介绍了SVPWM过调制I区与II区算法的MATLAB仿真实现,从理论推导到Simulink建模逐步解析。通过源码示例展示幅值补偿和六边形跟踪等关键技术,帮助电力电子研究者掌握过调制算法的核心实现方法,适用于电机控制、变频器等工业应用场景。

weixin_28739079的博客 529

matlab admm优化算法,ADMM求解各种优化函数及Matalb例子

MATLAB scripts for alternating direction method of multipliersS. Boyd, N. Parikh, E. Chu, B. Peleato, and J. EcksteinThis page gives MATLAB implementations of the examples inour paper on distributed o...

weixin_28957519的博客 1951

基于STM32L4XX、HAL库的AD7124模数转换器ADC驱动程序设计

/ 检查ID是否正确 (AD7124-4/AD7124-8有不同的ID)// 转换为电压值 (假设使用内部2.5V基准)// 构造读命令: 1(R/W) + 1(0) + 6(寄存器地址)// 构造写命令: 0(R/W) + 1(0) + 6(寄存器地址).config = 0, // 使用配置0。内置可编程增益放大器(PGA):1-128倍。// 读取ADC数据。// 读取当前ADC控制寄存器。// 检查数据是否就绪。// 写回ADC控制寄存器。// 初始化AD7124。

zhusl6688的博客 519

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

基于ADMM交替方向乘子法的超大规模储备系统分布式协同优化算法收敛性matlab仿真与分析

基于ADMM交替方向乘子法的超大规模储备系统分布式协同优化算法收敛性matlab仿真与分析。为了验证算法在超大规模储能系统中应用的可行性,在一个由10/21个子储能系统构建的仿真环境下进行测试分析。随着能源领域的发展,超大规模储备系统在能源存储与管理中的重要性日益凸显。为了实现高效的资源分配和优化运行,分布式协同优化算法被广泛应用。交替方向乘子法(ADMM)作为一种有效的分布式优化算法,在处理超大规模储备系统问题时展现出良好的性能。然而,深入理解其收敛性对于确保算法的可靠性和稳定性至关重要。

熟悉MATLAB/fpga/RK3588/LABVIEW/protus/单片机/dsp/Multisim 1071

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

DeepInverse迭代优化算法完全指南:ADMM、HQS、FISTA与PGD一次搞懂

DeepInverse(DeepInverse: a PyTorch library for solving imaging inverse problems using deep learning)是一个基于 PyTorch 的图像逆问题深度学习库。本指南带你一次搞懂它内置的 4 大迭代优化算法——**ADMM、HQS、PGD、FISTA**:它们如何求解"数据保真项 + 正则项"的优化问题、各

gitblog_00635的博客 1186

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: Matlab字典学习工具
下一篇: 矩阵的tr
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值