工程中非凸優化利器: Successive Convex Approximation (SCA) - 知乎

注:本文能夠看做對本專欄中「工程中非凸優化利器: Majorization-Minimization」 一文的補充. 如下簡稱"MM一文".算法

本文分爲如下部分jsp

Part I SCA 原理函數

Part II A. SCA 算法flex

Part II B. SCA 算法的收斂優化

Part III SCA 使用舉例spa

大部分會採用和MM對比介紹的方式進行敘述。blog


Part I SCA 原理(與MM對比介紹)get

SCA 的基本原理與MM相似,都是經過對非凸目標函數,迭代地,在一點 \mathbf{x}^t 上構造一個更易解近似函數 u(x;x^t) 來使得問題得以簡化。兩者區別在於近似的條件不一樣,以下圖 所示。it

圖1:SCA vs MM 原理

下面列出兩種方法對於近似函數 u(x;x^t)的要求io

二者前三點要求相同,分別是

  1. 近似函數連續性
  2. 近似函數和原函數在近似點函數值相同
  3. 近似函數和原函數在近似點的一階導數(方向導數)相同

第四點不一樣

SCA 要求近似函數是凸函數 而MM要求近似函數在近似點是原函數的upper bound(在原函數「上面「).


Part II A. SCA 算法

SCA的出現是爲了解決實際應用中知足MM的條件的近似函數很難找的問題 (主要是第四點,知足uppder bound 又好解的近似函數很難找)。 然而根據no free lunch 的原則,咱們在尋找近似函數上省了力氣,就得在求解的時候付出更多力氣。這是由於近似函數若是不知足upper bound那麼直接取近似函數的最小值會致使「步子邁的太大」「走過了」的狀況。如圖1所示 y^{t+1} 爲近似函數的最小值,它「超過了」目標函數的local minima. 所以須要調整步長。調整的方法很是簡單,採用moving average(移動平均?),公式以下

而後咱們就能夠獲得整個算法(這裏我從[1]中截的圖而後p了一下,原算法是分塊求解的)

算法1:SCA算法

紅框是尋找參數 \alpha 的過程。

對比MM


多了搜索參數和移動平均的過程。

Part II B. SCA 算法的收斂

下面簡單說一下如何證實SCA算法收斂到stationary point

結合圖1的示意和算法1,咱們發現SCA的搜索方向是 \mathbf{d}^{t+1}=\mathbf{y}^{t+1}-\mathbf{x}^{t}。那麼算法是如何保證這個方向是原函數的降低方向呢,關鍵在於尋找步長 \alpha 這一步。

咱們有:

f'(\mathbf{x}^{t};\mathbf{d}^{t+1})=u'(\mathbf{x};\mathbf{x}^{t},\mathbf{d}^{t+1})|_{\mathbf{x}=\mathbf{x}^{t+1}}=\lim_{\lambda\to0}\frac{u(\mathbf{x}^t+\lambda\mathbf{d}^{t+1};\mathbf{x}^t)-u(\mathbf{x}^t;\mathbf{x}^t)}{\lambda}\leq0

最後一項不等式是由於 u(\mathbf{x};\mathbf{x}^t) 是凸函數 而 \mathbf{y}^{t+1}=\mathbf{x}^{t}+\mathbf{d}^{t+1}是最小值,因此在 \mathbf{d}^{t+1} 這個方向上的函數值 u(\mathbf{x}^t+\lambda\mathbf{d}^{t+1};\mathbf{x}^t) 小於 u(\mathbf{x}^t;\mathbf{x}^t) .

而後呢,咱們根據步長條件(紅框中最後一行)就能夠獲得

f(\mathbf{x}^t)-f(\mathbf{x}^{t}+\alpha^{t+1}\mathbf{d}^{t+1})\geq-\alpha^{t+1} f'(\mathbf{x}^t,\mathbf{d}^{t+1})\geq0

f(\mathbf{x}^*)-f(\mathbf{x}^0)\leq f(\mathbf{x}^K)-f(\mathbf{x}^0) \leq\sum_{t=0}^K\alpha^{t+1} f'(\mathbf{x}^t,\mathbf{d}^{t+1})

\lim_{t\to\infty} f'(\mathbf{x}^t,\mathbf{d}^{t+1})=0


不難發現若是 u(\mathbf{x}^t;\mathbf{x}^t) 剛好也是原函數的 upper bound, 那麼令 \alpha=1 自動知足算法1中的步長條件(紅框中最後一行)。此時這個算法就是MM啦~




Part II SCA 使用舉例

前面說到SCA 和MM的區別在於SCA要求近似函數是凸的,MM要求近似函數是upper bound。固然兩個近似都要好解才行。這裏舉一個比較經常使用的SCA中的近似函數。

SCA 中近似函數最多見的就是二次函數,表達式以下:

\tau>0 ,保證近似函數爲凸函數。其實就是拿到一個函數咱們求導就好了,而後 \tau 隨便取一下。


補充:在作這個總結的時候我的挺好奇:對於MM算法咱們找到的近似函數通常不只是upper bound 並且仍是凸的。有沒有是upper bound 可是 「非凸」 確又好解的近似函數的例子?最後找到了一個,本身以爲還蠻有用的。[2]中提出了一個魯棒協方差矩陣估計問題我在這裏作了簡化:假設要估計的協方差矩陣的變量服從某種均值爲0的橢圓分佈,採用最大log 似然估計獲得以下優化問題:

對第二項採用「MM一文」中介紹的一階泰勒展開方法,每一次迭代給定 \mathbf{R}_t  , MM須要解下面的近似函數

g(\mathbf{R}|\mathbf{R}_t)=\log\det(\mathbf{R})+\frac{K}{N}\sum_{i=1}^N\frac{\mathbf{x}_i^H\mathbf{R}^{-1}\mathbf{x}_i}{\mathbf{x}_i^H\mathbf{R}_t^{-1}\mathbf{x}_i}

這個問題對 \mathbf{R} 非凸,可是有最優閉式解

(證實的話就把 \mathbf{R}^{-1} 當作一個新的變量 很是容易獲得近似函數對於\mathbf{R}^{-1}是凸的,而後求導等於0便可)


後面會補充

1.關於非凸constraint 的問題若是用SCA(或者MM)如何處理。其實就是把約束條件函數採用和目標函數相同的方法找一個好的近似函數就行。

2.還有進階版本的stochastic SCA(或者MM)有時間也會講一下。這方面的內容推薦給你們浙大劉安教授的這篇發表在TSP上的文章

Stochastic Successive Convex Approximation for Non-Convex Constrained Stochastic Optimizationarxiv.org

第一次在知乎寫東西但願有幫助~

參考

  1. ^Successive Convex Approximation: Analysis and Applications https://conservancy.umn.edu/handle/11299/163884
  2. ^Regularized Robust Estimation of Mean and Covariance Matrix Under Heavy-Tailed Distributions https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7069228
相關文章
相關標籤/搜索