对偶算法与ADMM算法

article/2025/9/22 10:20:01

学习笔记,仅供参考,有错必纠
转载自:机器学习与运筹优化(六)对偶算法与ADMM算法


文章目录

      • 摘要
      • ADMM算法
      • 参考文献


摘要

上文我们介绍了约束优化问题和拉格朗日对偶思想。对偶算法就像是男生女生互相挑选,最终走到一起的过程,今天我们具体介绍几种常见的对偶算法,特别介绍在大数据时代大放异彩的ADMM算法。

回忆一下男生女生互相挑选的过程,哦不,回忆一下对偶算法的思想——构造拉格朗日函数,把约束优化问题转化为无约束优化问题求解。

在这里插入图片描述


ADMM算法

例如原问题是在线性约束下极小化函数f:
在这里插入图片描述

我们用之前介绍的梯度下降法求解这个无约束优化问题,对于原始变量求解极小化问题(如果f可微可以应用梯度下降),对于对偶变量应用梯度上升,这就是Uzawa算法,或者叫原始-对偶上升法,讲究的是“敌进我退”:
在这里插入图片描述

Uzawa算法的收敛性对函数f和步长均有要求,需要f是强凸的,并且梯度上升的步长不能太大,受到f的强凸性的限制。感兴趣的同学可以参考Nitfy Theorem,原函数的强凸性对应对偶函数的连续性。

我们希望增强f的凸性,一个自然的想法是给f加上一个凸二次函数,于是我们准备构造一个增广拉格朗日函数(Augmented Lagrangian):
在这里插入图片描述

对于这个新的拉格朗日函数, Uzawa算法可以改进为ALM算法(Augmented Lagrangian Method of Multipliers):

在这里插入图片描述

可以证明,由于增广拉格朗日的强凸性和步长的联系,ALM算法对于任意步长都是收敛的。

ALM算法的问题是,如果f不可微,每一步求解都需要解一个极小化的子问题,计算代价可能较大。而在机器学习的很多问题中,f具有特殊的结构,一般可以分解为两个或多个函数,单个函数是利于求解的,比如统计和图像处理中非常有名的LASSO问题:

在这里插入图片描述

其中第一步需要求解整个f+g的增广拉格朗日函数的极小值,而f和g单独的增广拉格朗日函数的极小值更易于求解,于是我们采用“分而治之”的思想,于是得到了交替方向乘子法,ADMM算法(Alternating Direction Method of Multipliers):

在这里插入图片描述

ADMM算法广泛应用于统计学习和机器学习的各个领域,包括LASSO和约束线性回归模型;支持向量机;压缩感知;稀疏优化;分布式计算;其他大型分布式机器学习问题等等。

原始-对偶上升法体现了兵法中的“敌进我退”思想,而ADMM算法则体现了兵法中的“分而治之”思想。研究者在提出和改进新算法时,idea往往都很简单易懂,但背后体现了研究者的深刻的洞察力,需要对问题结构和算法思想的足够的理解,加上一点点灵感的火花。也许下一次,读者也能应用“三十六计”,提出更有效的机器学习优化算法。


参考文献

[1] Boyd Stephen, Parikh Neal,Chu Eric,Peleato Borja. Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers, 2010.

[2]Boyd, Stephen, and Lieven Vandenberghe. Convex optimization. Cambridge university press, 2004.

[3]袁亚湘, 孙文瑜. “最优化理论与方法.” 科学出版社, 1997 年 1 月 (1997).


http://chatgpt.dhexx.cn/article/E6w5nrKy.shtml

相关文章

【配电网优化】基于串行和并行ADMM算法的配电网优化研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

MATLAB代码:全面ADMM算法代码,实现了三种ADMM迭代方式 参考文档:《基于串行和并行ADMM算法的电_气能量流分布式协同优化_瞿小斌》

MATLAB代码:全面ADMM算法代码,实现了三种ADMM迭代方式 关键词:综合能源 分布式协同优化 交替方向乘子法 最优潮流 参考文档:《基于串行和并行ADMM算法的电_气能量流分布式协同优化_瞿小斌》 仿真平台:MATLAB 主要内容&…

ADMM算法在神经网络模型剪枝方面的应用

文章目录 前言1. 交替方向乘子法2. 论文中的表述3. 对论文中的公式进行推导4. 代码流程5. 主要函数实现6. dense vs. prune(finetune)结束语 前言 本篇博客记录一下自己根据对论文 GRIM: A General, Real-Time Deep Learning Inference Framework for Mobile Devices based on …

ADMM算法及其放缩形式,在压缩快照成像重建的图像重建论文中的公式推导

刚接触图像恢复问题,简单记录一下最近看论文刚弄懂的一个小问题 ADMM算法 ADMM(交替方向乘子法)是一种解决变量可分离凸优化问题的简单算法,具有求解速度快,收敛性能好的特点。ADMM可以将原问题转换为几个子问题&…

开漏输出和推挽输出的区别?

《《《《正文》》》》》 《理解三极管的原理》 如下图,以NPN三极管为例: 它是一种电流控制型元器件,即基极B的输出输出电流可以实现对元器件的控制。所以可以进一步理解为基极B为控制端,集电极C为输入端,发射极E为输出…

推挽输出和开漏输出

推挽输出(push-pull): 推挽输出(push-pull): 推挽输出,正如字面上的意思,有“推”,也有“挽”,推挽输出电路运用两个MOS管构成,上面为P-MOS&…

推挽输出和开漏输出详解

序言: 平时,写程序的时候总遇IO口模式的端口配置。但是从来没有仔细研究过具体到底是什么含义。作为一名嵌入式工程师应该是不合格的,现在把端口定义重新梳理一下。 一、NPN和PNP区别 NPN 是用 B→E 的电流(IB&#xff0…

STM32的推挽输出和开漏输出

文章目录 前言一、推挽输出二、开漏输出三、区别和适应场景总结前言 本篇文章将带大家了解STM32的推挽输出和开漏输出,并且学习这两个的区别,学习分别在什么时候使用这两个不同的输出方式。 在 STM32 微控制器中,GPIO(General Purpose Input/Output)模块是一个通用的输入…

什么是GPIO的推挽输出和开漏输出

数字芯片GPIO一般分为推挽输出和开漏输出 数字芯片GPIO一般是推挽输出(PUSH-PULL),其内部结构如下: 当上面的MOS管导通时,GPIO输出高电平1,称为“推” 当下面MOS管导通时,GPIO输出低电平0&…

浅谈开漏输出和推挽输出的理解

理解电路元件特性 在理解这两种输出之前我们需要对三极管这种电路元器件进行理解,三极管都包括三个部分,基极(base)、集电极(Collector)以及发射极(Emitter)。他们负责不同的功能, 1.基极主要负责控制电流导通与否 2.…

开漏输出和推挽输出的差别

GPIO内部仅有以上三种组合形式 而当上面任意两种形式组合时则 一、推挽输出 高低电平两两组合则形成了推挽输出的模式。 优点:能输出高低电平、且高低电平都有驱动能力 缺点:不能实现线与的功能&#xff…

终于搞清楚开漏输出和推挽输出这个鬼东西

先说下推挽输出,简单的说,就是想输出高电平,就输出高电平,想输出低电平就输出低电平。 推挽电路上面是NPN三极管,下面是PNP三极管,请注意输入端和输出端的波形。 下面是输入波形 当输入为正时,上…

推挽输出和开漏输出有什么不同?

推挽输出和开漏输出有什么不同? 推挽输出(Push-Pull Output)开漏输出(Open Drain Output)两者比较 首先介绍一下什么是推挽输出和开漏输出。 推挽输出(Push-Pull Output) 推挽输出结构是由两个…

区分推挽输出和开漏输出

推挽输出:可以输出高,低电平,连接数字器件。 输出 0 时,N-MOS 导通,P-MOS 高阻,输出0。 输出 1 时,N-MOS 高阻,P-MOS 导通,输出1(不需要外部上拉电路)。 开漏输出:输出端相当于三…

GPIO之推挽输出和开漏输出

疑问 GPIO配置为输出时会有两种模式,一种叫推挽输出,一种叫开漏模式。那什么是推挽输出,什么又是开漏输出呢? 三种输出状态 如下图所示为将GPIO配置为输出时的内部示意图: 由上图可以看出,GPIO的输出状…

推挽输出和开漏输出区别

目录 1.推挽输出 2.开漏输出 1.推挽输出 当想输出高电平时,P-MOS导通,N-MOS截止,输出为电源电压VDD 当想输出低电平时,N-MOS导通,P-MOS截止,相当于引脚直接接地,输出低电平 2.开漏输出 开…

从硬件方面理解GPIO的开漏输出和推挽输出

最近在学STM32,看正点原子视频中对开漏输出和推挽输出的讲解视频时,发现原子哥对电路的讲解有一些错误,主要说关于MOS管的开关问题,查了一晚上资料,终于想明白了,特意发个文章分享一下。 这是STM32F4XX中文…

推挽输出与开漏输出

推挽输出 要理解推挽输出,首先要理解好三极管(晶体管)的原理。下面这种三极管有三个端口,分别是基极(Base)、集电极(Collector)和发射极(Emitter)。下图是NP…

开漏输出与推挽输出

一、开漏输出:集电极开路门(OC)与漏极开路门(OD)一般用于线与和电流驱动的场合,为开集(漏)输出结构。 1. 利用外部电路的驱动能力,减少IC内部的驱动。 2. 可以将多个开漏输出引脚连接在一起,通过一个上拉电阻上拉到VCC&#xff…

开漏输出和推挽输出总结(一看就懂)

推挽输出(Push-Pull Output) 推挽输出结构是由两个MOS或者三极管收到互补控制的信号控制,两个管子时钟一个在导通,一个在截止,如图1所示: 推挽输出的最大特点是可以真正能真正的输出高电平和低电平&…