在 ADMM算法简介 和 最大化速率的智能反射面波束成形(下): ADMM 我们对ADMM算法进行了简单的介绍,前者主要侧重于原理,而后者则以IRS波束成形设计的实例展示了ADMM算法的实际应用。 这篇博客基于Millimeter-Wave Beamformed Full-Dimensional MIMO Channel Estimation Based on Atomic Norm Minimization 这一原子范数信道估计经典论文,介绍ADMM算法在应对SDP问题时的应用,以降低求解复杂度。不过,考虑到形式的简单性,我们选取了Super-Resolution Channel Estimation for Arbitrary Arrays in Hybrid Millimeter-Wave Massive MIMO Systems Yue中的例子,基于其更简单的形式,来更好地提升可读性。

对于稀疏信道估计,通过之前介绍过的原子范数技术 压缩感知的尽头: 原子范数最小化, 我们可以将信道估计问题转化为如下SDP问题:

arg⁡min⁡T(uv)tr⁡(T(uv))+τ2∥R^y−ΦT(uv)ΦH∥F2s.t. T(uv)⪰0\begin{gathered} \arg \min _{\mathrm{T}\left(\boldsymbol{u}_{v}\right)} \operatorname{tr}\left(\mathrm{T}\left(\boldsymbol{u}_{v}\right)\right)+\frac{\tau}{2}\left\|\hat{\boldsymbol{R}}_{y}-\boldsymbol{\Phi T}\left(\boldsymbol{u}_{v}\right) \Phi^{H}\right\|_{F}^{2} \\ \text { s.t. } \quad \mathrm{T}\left(\boldsymbol{u}_{v}\right) \succeq 0 \end{gathered} argT(uv​)min​tr(T(uv​))+2τ​∥∥∥​R^y​−ΦT(uv​)ΦH∥∥∥​F2​ s.t. T(uv​)⪰0​

其中 T(uv)\mathrm{T}\left(\boldsymbol{u}_{v}\right)T(uv​)代表以uv\boldsymbol{u}_{v}uv​作为第一行得到的Toeplitz矩阵,除此外的全部矩阵均为已知变量。 观察该问题可以发现, 其主要的难点在于T(uv)⪰0\quad \mathrm{T}\left(\boldsymbol{u}_{v}\right) \succeq 0T(uv​)⪰0 这个正定条件不易处理,尽管这是一个凸约束,问题也是个标准的SDP问题可以直接通过CVX求解,但复杂度为矩阵维度的3.53.53.5次方量级。 因此,我们使用ADMM算法以求复杂度的降低。 其核心思想在于,既然T(uv)⪰0\quad \mathrm{T}\left(\boldsymbol{u}_{v}\right) \succeq 0T(uv​)⪰0 这个约束不易处理,那我就通过引入一个新的人工变量,再通过ADMM算法的迭代求解,使得该约束只需要在迭代过程中的其中一步中被考虑,而在其他步骤中都是简单的无约束更新。 这一思想与最大化速率的智能反射面波束成形(下): ADMM 一文中对恒模约束的应对异曲同工。从这个例子也想告诉大家的一点是:

对于约束优化问题,如果约束不易应对的情况下,可以通过引入人工变量, 然后利用ADMM算法,对原始变量和人工变量进行迭代求解, 从而使得只需要在人工变量的更新中考虑这一约束,而原始变量的更新变成了无约束问题。

回到例子之中, 原问题可以引入一个看似多余的人工变量 UUU,改写为如下形式:
R^v=arg⁡min⁡T(uv)tr⁡(T(uv))+τ2∥R^y−ΦT(uv)ΦH∥F2s.t. U=T(uv),U⪰0, \begin{aligned} &\hat{\boldsymbol{R}}_{v}=\arg \min _{\mathrm{T}\left(\boldsymbol{u}_{v}\right)} \operatorname{tr}\left(\mathrm{T}\left(\boldsymbol{u}_{v}\right)\right)+\frac{\tau}{2}\left\|\hat{\boldsymbol{R}}_{y}-\boldsymbol{\Phi T}\left(\boldsymbol{u}_{v}\right) \Phi^{H}\right\|_{F}^{2}\\ &\text { s.t. } U=\mathrm{T}\left(\boldsymbol{u}_{v}\right), \boldsymbol{U} \succeq 0 \text {, } \end{aligned} ​R^v​=argT(uv​)min​tr(T(uv​))+2τ​∥∥∥​R^y​−ΦT(uv​)ΦH∥∥∥​F2​ s.t. U=T(uv​),U⪰0, ​
我们可以发现,其核心在于,原始变量T(uv)\boldsymbol{ T}\left(\boldsymbol{u}_{v}\right)T(uv​)已经没有了约束,约束被转到了人工变量UUU之上。 这一步虽然看上去很尬,但要知道后面我们的迭代求解中就可以让原始变量的优化变成了无约束问题。 接下来,我们可以写出其对应的增广拉格朗日函数如下:

L(uv,U,Λ)=tr⁡(T(uv))+τ2∥R^y−ΦT(uv)ΦH∥F2+⟨Λ,U−T(uv)⟩+ρ2∥U−T(uv)∥F2\begin{aligned} \mathcal{L}\left(\boldsymbol{u}_{v}, \boldsymbol{U}, \boldsymbol{\Lambda}\right) = \operatorname{tr}\left(\mathrm{T}\left(\boldsymbol{u}_{v}\right)\right)+\frac{\tau}{2}\left\|\hat{\boldsymbol{R}}_{y}-\boldsymbol{\Phi} \mathrm{T}\left(\boldsymbol{u}_{v}\right) \boldsymbol{\Phi}^{H}\right\|_{F}^{2} +\left\langle\boldsymbol{\Lambda}, \boldsymbol{U}-\mathrm{T}\left(\boldsymbol{u}_{v}\right)\right\rangle+\frac{\rho}{2}\left\|\boldsymbol{U}-\mathrm{T}\left(\boldsymbol{u}_{v}\right)\right\|_{F}^{2} \end{aligned} L(uv​,U,Λ)=tr(T(uv​))+2τ​∥∥∥​R^y​−ΦT(uv​)ΦH∥∥∥​F2​+⟨Λ,U−T(uv​)⟩+2ρ​∥U−T(uv​)∥F2​​
这个怎么来的在之前博客中已经讲过,不再赘述了。 简单来说, 就是对原始的目标函数中加入对应于约束条件U=T(uv)U=\mathrm{T}\left(\boldsymbol{u}_{v}\right)U=T(uv​)的两项,一项即⟨Λ,U−T(uv)⟩=tr(ΛH(U−T(uv)))\left\langle\boldsymbol{\Lambda}, \boldsymbol{U}-\mathrm{T}\left(\boldsymbol{u}_{v}\right)\right\rangle = \mathrm{tr}(\boldsymbol{\Lambda}^H( \boldsymbol{U}-\mathrm{T}\left(\boldsymbol{u}_{v}\right)))⟨Λ,U−T(uv​)⟩=tr(ΛH(U−T(uv​))),也即通过引入拉格朗日乘子将限制条件写入目标中,后面这个二乘项ρ2∥U−T(uv)∥F2\frac{\rho}{2}\left\|\boldsymbol{U}-\mathrm{T}\left(\boldsymbol{u}_{v}\right)\right\|_{F}^{2}2ρ​∥U−T(uv​)∥F2​则是为了确保强凸性和收敛性所引入的。 那么,最关键的问题是, U⪰0, \boldsymbol{U} \succeq 0 \text {, }U⪰0,  这个最棘手的约束去哪了呢?

关于此,我见过的最常见的做法是通过引入一个示性函数I(U)I(U)I(U)加到目标函数中,即当U⪰0U\succeq 0U⪰0时为0,否则则为+∞+\infty+∞,以此等效地代替这一显式的约束。最大化速率的智能反射面波束成形(下): ADMM 中也是如此的做法。 不过我更喜欢本文中的做法,也就是在求解UUU的时候考虑这一约束,不需要强行地转化成一个完全的无约束问题。 这两种做法实质上是完全等价的。 我们继续看,那么根据ADMM算法的思想,我们只需要进行如下的更新来对问题进行求解:
uvl+1=arg⁡min⁡uvL(uv,Ul,Λl)Ul+1=arg⁡min⁡U⪰0L(uvl+1,U,Λl)Λl+1=Λl+ρ(Ul+1−T(uvl+1))\begin{aligned} \boldsymbol{u}_{v}^{l+1} &=\arg \min _{\boldsymbol{u}_{v}} \mathcal{L}\left(\boldsymbol{u}_{v}, \boldsymbol{U}^{l}, \boldsymbol{\Lambda}^{l}\right) \\ \boldsymbol{U}^{l+1} &=\arg \min _{\boldsymbol{U} \succeq 0} \mathcal{L}\left(\boldsymbol{u}_{v}^{l+1}, \boldsymbol{U}, \boldsymbol{\Lambda}^{l}\right) \\ \boldsymbol{\Lambda}^{l+1} &=\boldsymbol{\Lambda}^{l}+\rho\left(\boldsymbol{U}^{l+1}-\mathrm{T}\left(\boldsymbol{u}_{v}^{l+1}\right)\right) \end{aligned} uvl+1​Ul+1Λl+1​=arguv​min​L(uv​,Ul,Λl)=argU⪰0min​L(uvl+1​,U,Λl)=Λl+ρ(Ul+1−T(uvl+1​))​
这个顺序其实就是所谓的交替优化,在每一步中只优化一个变量而固定其余变量。 需要注意的有以下几点:

  • 通过我们引入人工变量的骚操作, 在函数中出现最多的原始变量uv\boldsymbol{u}_{v}uv​ (与T(uv)\mathrm{T}\left(\boldsymbol{u}_{v}\right)T(uv​)一一对应,因此等价), 此刻已经没有任何的约束。
  • U\boldsymbol{U}U的优化中则需要考虑U⪰0{\boldsymbol{U} \succeq 0}U⪰0这个约束。 很明显,UUU起到了给原始变量挡刀的作用。需要指出的是, 如果通过示性函数的方式将约束写进目标函数中,则此处也是无约束优化问题,但由于示性函数的存在,本质上求解的时候还是约束优化。所以我个人觉得没必要引入示性函数,就按这篇作者的做法就挺好, 相当于ADMM就是个约束转移大法。
  • Λ\boldsymbol{\Lambda}Λ的更新直接就写出来了,这是因为可以直接通过导数为0的一阶条件,求得其闭式解,就是这一更新步骤。
  • 需要注意的是, 对每个变量的更新能要求取到的是全局最优解。 笔者不太清楚,如果对变量的更新是局部最优解的话,算法还能有效吗? 如果可以的话,将进一步拓宽ADMM算法的适用性。

因此,通过 ADMM算法来求解问题,只剩下最后两步,即uv\mathbf{u}_vuv​的具体最优解和UUU的具体最优解。为此,我们使用 ADMM算法简介中所介绍过的ADMM算法的scaled形式,增广拉格朗日函数可以改写为:
L(uv,U,Λ)=tr⁡(T(uv))+τ2∥R^y−ΦT(uv)ΦH∥F2−12ρ∥Λ∥F2+ρ2∥U−T(uv)+ρ−1Λ∥F2\begin{aligned} \mathcal{L}\left(\boldsymbol{u}_{v}, \boldsymbol{U}, \boldsymbol{\Lambda}\right) =& \operatorname{tr}\left(\mathrm{T}\left(\boldsymbol{u}_{v}\right)\right)+\frac{\tau}{2}\left\|\hat{\boldsymbol{R}}_{y}-\boldsymbol{\Phi} \mathrm{T}\left(\boldsymbol{u}_{v}\right) \Phi^{H}\right\|_{F}^{2}-\frac{1}{2 \rho}\|\boldsymbol{\Lambda}\|_{F}^{2} +\frac{\rho}{2}\left\|\boldsymbol{U}-\mathrm{T}\left(\boldsymbol{u}_{v}\right)+\rho^{-1} \boldsymbol{\Lambda}\right\|_{F}^{2} \end{aligned} L(uv​,U,Λ)=​tr(T(uv​))+2τ​∥∥∥​R^y​−ΦT(uv​)ΦH∥∥∥​F2​−2ρ1​∥Λ∥F2​+2ρ​∥∥​U−T(uv​)+ρ−1Λ∥∥​F2​​
对比后我们不难发现,相比于最初形式,scaled的形式是将后面两项一起写进了一个最小二乘项中。 这一点在对UUU的求解中非常重要:相当于对UUU的更新就是一个带约束的最小欧式距离问题。对于这个式子,我们要对uv\mathbf{u}_vuv​求最小值,也即对齐求导令导数为000,即:
∂∂uv∗L(uv,Ul,Λl)∣uv=uvl+1=0\left.\frac{\partial}{\partial \boldsymbol{u}_{v}^{*}} \mathcal{L}\left(\boldsymbol{u}_{v}, \boldsymbol{U}^{l}, \boldsymbol{\Lambda}^{l}\right)\right|_{\boldsymbol{u}_{v}=\boldsymbol{u}_{v}^{l+1}}=0 ∂uv∗​∂​L(uv​,Ul,Λl)∣∣∣∣​uv​=uvl+1​​=0
即可得到闭式解。 这其中的推导涉及Toeplitz矩阵相关,比较复杂一些,我们就略过了,感兴趣的读者可以去文中看。 总而言之, 利用ADMM方法,uv\boldsymbol{u}_{v}uv​的更新是一个无约束优化问题,可以直接通过导数为0这一一阶条件得到。

接下来就是对UUU的更新。 注意到,此处我们最终仍是躲不开地终将面对U⪰0U\succeq 0U⪰0这个限制条件了,然而,UUU对应的函数形式却比原函数简单了很多。 参考scaled后的增广拉格朗日函数,与UUU相关项只有:
ρ2∥U−T(uv)+ρ−1Λ∥F2\frac{\rho}{2}\left\|\boldsymbol{U}-\mathrm{T}\left(\boldsymbol{u}_{v}\right)+\rho^{-1} \boldsymbol{\Lambda}\right\|_{F}^{2}2ρ​∥∥​U−T(uv​)+ρ−1Λ∥∥​F2​
也即我们要寻找能最小化上式的半正定矩阵。 我们可以令 Ξl=T(uvl+1)−ρ−1Λl=ElΣlElH\Xi^{l}=\mathrm{T}\left(\boldsymbol{u}_{v}^{l+1}\right)-\rho^{-1} \boldsymbol{\Lambda}^{l}=\boldsymbol{E}^{l} \boldsymbol{\Sigma}^{l} \boldsymbol{E}^{l^{H}} Ξl=T(uvl+1​)−ρ−1Λl=ElΣlElH
最右是对该矩阵进行了特征分解。 那么,最优的半正定矩阵解就是
Ul+1=ElΣ+lElH\boldsymbol{U}^{l+1}=\boldsymbol{E}^{l} \Sigma_{+}^{l} \boldsymbol{E}^{l^{H}} Ul+1=ElΣ+l​ElH
其中Σ+l\Sigma_{+}^{l}Σ+l​代表将Σl\boldsymbol{\Sigma}^{l}Σl中的所有负数置为0.

我们来总结以下这一步中的经验。 首先,ADMM算法的优势就在于, 尽管对于人工变量的优化中我们还是要面对棘手的限制条件,但此时,目标函数已经是最小二乘项的形式了(无论原函数是什么形式),非常易于处理。我们也可以理解为, 是在一个可行域中寻找到某一给定点,欧式距离最短的点。 例如本例中,就是寻找在U⪰0U\succeq 0U⪰0上, 距离给定点Ξl\Xi^{l}Ξl最近的点。 这实际上对应的物理意义是什么呢? 就是投影。 而对于半正定矩阵可行域,欧式距离最短的点就是由其所有非负特征值对应的特征向量组合而成的结果。 (严格的推导思路可参考低秩矩阵近似求解)

事实上,在最大化速率的智能反射面波束成形(下): ADMM 中也是如此, 最终我们是在做点到一个圆周上的投影,大家可以自己进一步体会以下。

至此,ADMM算法就可以成功用于降低SDP算法的复杂度了。 用一句话总结的话就是:对于复杂函数下的棘手约束,利用ADMM,可以将其转化为该约束下的最小化欧式距离问题,从而大幅降低难度。

ADMM算法的应用: 降低SDP算法复杂度相关推荐

  1. 【白话机器学习】算法理论+实战之LightGBM算法

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,在这简单的先捋一捋, 常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支 ...

  2. 【白话机器学习】算法理论+实战之Xgboost算法

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,在这简单的先捋一捋, 常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支 ...

  3. 【白话机器学习】算法理论+实战之AdaBoost算法

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支持向量机,集成算法Ad ...

  4. 2、垃圾回收算法(标记清除算法、复制算法、标记整理算法和分代收集算法),各种垃圾收集器讲解(学习笔记)

    2.垃圾回收概述 2.1.垃圾回收算法 2.1.1.垃圾回收算法-标记清除算法 2.1.2.垃圾回收算法–复制算法 2.1.3.垃圾回收算法–标记整理算法和分代收集算法 2.1.4.垃圾回收算法–Se ...

  5. 算法工程师_浅谈算法工程师的职业定位与发展

    随着大数据和以深度学习为代表的人工智能技术的飞速发展,算法工程师这个职业逐渐成为国内互联网行业的标配.2016年3月,谷歌旗下DeepMind公司的围棋程序"AlphaGo"战胜职 ...

  6. 算法的优缺点_机器学习算法优缺点 amp; 如何选择

    (点击上方公众号,可快速关注) 转自: 算法与数学之美 主要回顾下几个常用算法的适应场景及其优缺点! 机器学习算法太多了,分类.回归.聚类.推荐.图像识别领域等等,要想找到一个合适算法真的不容易,所以 ...

  7. 算法设计与分析python_Python算法设计与分析

    内容提要 本书内容包括算法初步.排序算法.查找.双指针问题.哈希算法.深度优先搜索算法.广度优先搜索算法.回溯算法.动态规划.贪心算法.分治算法.并查集.最短路径算法和数论算法等常见算法.每个算法都做 ...

  8. kmeans 算法_kmeans优化算法:二分Kmeans聚类算法

    算法的理解 ​ Bi这里是的意思就是Binary,二进制的意思,所以有时候叫这个算法为二进Kmeans算法.为什么我们需要用BiKmeans呢,就是为了解决初始化k个随机的质心点时其中一个或者多个点由 ...

  9. matlab优化算法案例分析与应用_最优化计算与matlab实现(18)——粒子群优化算法——权重改进的粒子群算法...

    参考资料 <精通MATLAB最优化计算(第二版)> 编程工具 Matlab 2019a 目录 石中居士:最优化计算与Matlab实现--目录​zhuanlan.zhihu.com 权重改进 ...

  10. labuladong 的算法小抄_关于算法笔试的几个套路,一点就透

    以下文章来源于labuladong ,作者labuladong 我知道各位是被标题吸引进来的,那就不废话,先说几个算法笔试的硬核套路,再说说语言选择和做题复习的策略. 避实就虚 大家也知道,大部分笔试 ...

最新文章

  1. Python元组字典
  2. SWT 和 SWING
  3. CodeForces - 1285D Dr. Evil Underscores(记忆化搜索+字典树)
  4. 微软的基础服务器,微服务器当道 微软云端基础构架揭秘
  5. STM32中的串口通信
  6. 大厂P5、P6、P7级程序员的简历长什么样?
  7. nginx配置主域名跳转www域名并支持ssl
  8. JS 基础知识(自学篇)
  9. 面试算法 香槟塔 ,算法:暴力算法
  10. 阿里云ECS云服务器Linux Tomcat启动慢 访问网页转圈
  11. Error in unoecdf(cc, pdiff[case], Wi[case] * PTB.Vi[case]) : NA/NaN/Inf in foreign function call
  12. wps底纹去不掉_WPS广告太多,关又关不掉,其实它有无广告的版本
  13. FFmpeg 安装与使用
  14. 深度增强学习(DRL)漫谈 - 从AC(Actor-Critic)到A3C(Asynchronous Advantage Actor-Critic)
  15. Cannot add property xxx, object is not extensible
  16. MATLAB/SAS学习笔记
  17. scrapy 爬取论坛帖子名称及链接(递归方式获取)
  18. 【历史】- 一段关于 Unix、Linux 和 Windows 的暗黑史
  19. jsp页面跳转的几种方式
  20. 如何使用Goolge Timeline工具

热门文章

  1. Quartz配置文件详解生产配置
  2. pert计算公式期望值_PERT方法—用于计算各工序和工时的方法
  3. Unreadable Notebook NotJSONError('Notebook does not appear to be JSON: u\'{\\n
  4. android 信鸽 小米推送,小米推送通道集成指南
  5. android ijk 播放器,ijkplayer 播放器:在Android端进行native调试
  6. 计算机中新建的快捷键是什么,什么是新建文件夹的快捷键?新建文件夹的快捷键有哪些?...
  7. 彻底关闭360安全卫士弹窗广告方法
  8. 全志 Allwinner V3S 开发环境搭建 (一)虚拟机搭建 Oracle VM VirtualBox6.1 Ubuntu14.4
  9. java微信h5支付_java 微信H5支付
  10. 一般毕业论文的查重要求有哪些?