在優化問題中,咱們能夠對目標函數爲凸函數的優化問題採用梯度降低法求解,可是在實際狀況中,目標函數並不必定光滑、或者到處可微,這時就須要用到次梯度降低算法。算法
次梯度(*Subgradient*)
與梯度的概念相似,凸函數的First-order characterization是指若是函數f可微,那麼當且僅當
其中,函數
很明顯,凸函數的次梯度必定存在,若是函數
左一圖爲
左二圖爲
一樣,絕對值函數
對於左二函數而言,其在知足
同理,咱們還能夠給出次微分(subdifferential)的定義,即:
若是咱們還記得Normal cone是指給定任意集合
證實:
orm
由於,對於函數的次梯度會知足
既證。
對於光滑的凸函數而言,咱們能夠直接採用梯度降低算法求解函數的極值,可是當函數不到處光滑,到處可微的時候,梯度降低就不適合應用了。所以,咱們須要計算函數的次梯度。對於次梯度而言,其沒有要求函數是否光滑,是不是凸函數,限定條件不多,因此適用範圍更廣。
次梯度具備如下優化條件(subgradient optimality condition):對於任意函數
即,當且僅當0屬於函數
證實:
證實很簡單,當次梯度
次梯度算法(Subgradient method)與梯度降低算法相似,僅僅用次梯度代替梯度,即:
其中,
與梯度降低算法不一樣的地方在於,次梯度算法並非降低算法,每次對於參數的更新並不能保證代價函數是呈單調遞減的趨勢,所以,通常請款下咱們選擇:
另外一點與梯度降低算法不一樣的是:次梯度算法沒有明確的步長選擇方法,相似Exact line search和Backtracking line search的方法,只有步長選擇準則,具體以下:
Fixed step sizes
:
Diminishing step sizes
: 選擇知足如下條件的
Diminishing step sizes方法主要是保證步長逐漸變小,同時,變化幅度還不會特別快。這裏須要注意的是,次梯度算法並不像梯度降低同樣,能夠在每一次迭代過程當中自適應的計算這次步長(adaptively computed),而是事先設定好的(pre-specified)。
可是,不少人會提出這樣一個問題,若是你不能保證次梯度是單調的,如何保證最後能夠收斂?
定理:若是
證實:
對於
由於,
對於任意
由於,
若是令
因此,咱們能夠獲得
同時,由於函數知足Lipschitz continuous with G,因此,
綜上所述,咱們能夠證實下式成立: