ADMM(Alternating Direction Method of Multipliers,交替方向乘子法)是一种优化算法,主要用于解决分布式、大规模和非光滑的凸优化问题。ADMM通过将原始问题分解为多个易于处理的子问题来实现优化。它结合了两种经典优化方法:梯度下降法(gradient descent)和拉格朗日乘子法(Lagrangian multiplier method)。

ADMM

算法

  ADMM考虑如下形式的凸优化问题:

$\min\limits_{x,z} f(x) + g(z)$
$ s.t.\,\, Ax + Bz = c $

  其中$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——交替方向乘子法的更多相关文章

  1. 交替方向乘子法(ADMM)

    交替方向乘子法(ADMM) 参考1 参考2 经典的ADMM算法适用于求解如下2-block的凸优化问题( 是最优值,令 表示一组最优解): Block指我们可以将决策域分块,分成两组变量, 这里面 都 ...

  2. 交替方向乘子法(ADMM)的原理和流程的白话总结

    交替方向乘子法(ADMM)的原理和流程的白话总结 2018年08月27日 14:26:42 qauchangqingwei 阅读数 19925更多 分类专栏: 图像处理   作者:大大大的v链接:ht ...

  3. 交替方向乘子法(Alternating Direction Multiplier Method,ADMM)

    交替方向乘子法(Alternating Direction Multiplier Method,ADMM)是一种求解具有可分结构的凸优化问题的重要方法,其最早由Gabay和Mercier于1967年提 ...

  4. 对偶上升法到增广拉格朗日乘子法到ADMM

    对偶上升法 增广拉格朗日乘子法 ADMM 交替方向乘子法(Alternating Direction Method of Multipliers,ADMM)是一种解决可分解凸优化问题的简单方法,尤其在 ...

  5. 机器学习——支持向量机(SVM)之拉格朗日乘子法,KKT条件以及简化版SMO算法分析

    SVM有很多实现,现在只关注其中最流行的一种实现,即序列最小优化(Sequential Minimal Optimization,SMO)算法,然后介绍如何使用一种核函数(kernel)的方式将SVM ...

  6. 【整理】深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件

    在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法.在有等式约束时使用拉格朗日乘子法,在有不等约束时使用 ...

  7. 深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件

    [整理]   在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法.在有等式约束时使用拉格朗日乘子法,在有 ...

  8. 装载:关于拉格朗日乘子法与KKT条件

    作者:@wzyer 拉格朗日乘子法无疑是最优化理论中最重要的一个方法.但是现在网上并没有很好的完整介绍整个方法的文章.我这里尝试详细介绍一下这方面的有关问题,插入自己的一些理解,希望能够对大家有帮助. ...

  9. 拉格朗日乘子法&KKT条件

    朗日乘子法(Lagrange Multiplier)和KKT(Karush-Kuhn-Tucker)条件是求解约束优化问题的重要方法,在有等式约束时使用拉格朗日乘子法,在有不等约束时使用KKT条件.前 ...

  10. 关于拉格朗日乘子法与KKT条件

    关于拉格朗日乘子法与KKT条件 关于拉格朗日乘子法与KKT条件   目录 拉格朗日乘子法的数学基础 共轭函数 拉格朗日函数 拉格朗日对偶函数 目标函数最优值的下界 拉格朗日对偶函数与共轭函数的联系 拉 ...

随机推荐

  1. 【YashanDB知识库】共享集群YAC换IP

    [标题]共享集群YAC换IP [需求分类]安装部署,配置变更 [关键字]安装部署,更换IP,运维,配置变更,高可用,YAC [需求描述]客户需要将已经部署的YAC集群更换IP,从测试网段切换生产网段 ...

  2. airflow 学习

    入门 Get started developing workflows with Apache Airflow Getting started with Apache Airflow  

  3. 安全 – CSP (Content Security Policy)

    前言 之前讲过 CSRF.防 Cookie hacking 的. 也介绍过防 XSS 的 HtmlSanitizer. 今天再介绍 CSP. 参考 Content Security Policy 介绍 ...

  4. CSS & JS Effect – FAQ Accordion & Slide Down

    效果 参考: Youtube – Responsive FAQ accordion dropdown | HTML and CSS Tutorial 几个难点 1. 如何 align left for ...

  5. Google sheet

    最近做比较多 data migration 的东西. 当我们开发一个新的系统去替代一个旧系统时,通常就需要做大量的 migration 动作. 有好几个做法 我之前比较常用的的工具是 sql 和 c# ...

  6. Flutter 2.5 更新详解

    Flutter 2.5 正式版已于上周正式发布!这是一次重要的版本更新,也是 Flutter 发布历史上各项统计数据排名第二的版本.我们关闭了 4600 个 Issue,合并了 3932 个 PR,它 ...

  7. 使用duxapp开发 React Native App 事半功倍

    Taro的React Native端开发提供了两种开发方式,一种是将壳和代码分离,一种是将壳和代码合并在一起开发 壳是用来打包调试版或者发版安装包使用的 代码是运行在壳上的js代码 Taro壳子的代码 ...

  8. AD域下,域管理员网络无法正常连接

    排错思路:1.是否拥有上网权限, test 超级管理员自然是有上网权限的(该项排除): 2.浏览器是否使用了代理 ,有些软件在安装的时候,会自动启用浏览器的代理,开启某些特定的端口: 3.其他原因 解 ...

  9. Vue 调用后台接口导出Excel

    vue 调用后台接口生成 Excel 咱也不会前端,就是现学现卖. Js export function exportOnlyB(reportId) { return request({ url: & ...

  10. Spark集群的安装及高可用配置

    spark官网学习文档 Spark集群的安装及高可用配置 前期需求:Hadoop和Scala必须已经安装完成 步骤: ①进入spark下载网站中https://spark.apache.org/dow ...