這篇文章想闡述一階優化算法,盡可能的做到全面。
- Gradient Descent Method
考慮無約束優化問題
Gradient Descent Method 有如下迭代形式:
這里的 為步長,不同的步長構造策略生成了不同的梯度算法,例如,
則為最速下降法,如果
這里的 , 這時候為BB算法。
- Proximal Point Algorithm
還是考慮無約束凸優化問題
Proximal Point Algorithm 有如下形式:
- Proximal Gradient Algorithm
考慮可分離凸問題:
這里假設, 在第k步迭代,Proximal Gradient Algorithm 將
作二次展開
有如下形式:
這個算法有很多的加速策略,比如著名的FISTA。之后再介紹。
- Dual Gradient Method
考慮線性約束凸問題:
首先構建朗格朗日函數
其中 y 為對偶變量,對應的對偶函數為:
我們構建對偶問題:
對該問題執行Gradient Descent Method
(極大化問題所以是梯度方向而不是梯度的反方向)
現在的問題是上式中的梯度怎么計算,對於一般的 f ,有沒有好的表示方式呢?答案是有的。對偶函數的梯度 可以表述為
where
現在我給出對偶梯度算法的迭代
- Dual Proximal Point Method
還是考慮上述的線性約束問題,這次我將PPA應用到對偶問題中,即
現在的問題是計算梯度,由上一節中可以知道:
但是在計算的式子中涉及到了
, 這變成了先有雞還是先有蛋的問題了。所以我需要將
消掉。
所以有
這里的 為增廣拉格朗日函數
所以綜上所述給出如下迭代算法
這也等價於增廣拉格朗日方法(ALM)。
- Dual Proximal Gradient Method
考慮線性約束下的可分離問題:
得到其拉格朗日函數:
我們令 以及
. 定義對偶問題
其中
對偶問題變成了一個無約束可分離凸問題,可以采用上面的Proximal Gradient Method求解,即
接下來的問題就是如何計算兩個對偶函數的梯度,我們發現在前面的對偶梯度和對偶臨近點算法中已經寫到了如何計算梯度。這里我們直接用,首先將上面的迭代拆解為兩步:向前和向后。
首先考慮第一個式子,由於 , 於是
其中的
對於第二個式子而言,根據 , 於是
其中的
兩式結合得到:
綜合上述的迭代,我們得到最終的算法
- Conditional Gradient Method
- Projected Gradient
- DC Programming
- Augmented Lagrangian Method(ALM)
- Alternating Direction Method of Multipliers(ADMM)
- Mirror Descent Method
上述的算法有幾個方向的擴展,1.Stochastic,2.Coordinate Descent。3.subgradient。4. Accelerated Strategies
未完待續......