ADMM算法的应用: 降低SDP算法复杂度
在 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算法复杂度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vis.js
- 下一篇: pbs 支持 java_Linux下Ja