如何正确理解近似点梯度下降算法
學習筆記,僅供參考,有錯必糾
轉載自:凸優化筆記19:近似點梯度下降
近似點梯度下降算法
這一部分考慮的問題主要是
minmizef(x)=g(x)+h(x)minmize f(x) = g(x) + h(x) minmizef(x)=g(x)+h(x)
這里面ggg是全空間可導的凸函數,domg=Rndom \; g=R^ndomg=Rn,hhh是存在不可導部分的凸函數,并且一般需要hhh的近似點計算較為簡單.
近似點梯度下降算法是什么呢?
xk+1=proxth(xk?tk?g(xk))x_{k+1} = prox_{th} (x_k - t_k \nabla g(x_k)) xk+1?=proxth?(xk??tk??g(xk?))
這里跟之前的梯度下降(GD)和次梯度下降(SD)的形式都不太一樣,實際上看了后面的推導會發現經過轉換他們還是很像的。不過怎么理解這個式子呢?舉一個例子,假如hhh是集合CCC的指示函數,如下圖所示, 這個式子實際上是先沿著ggg的梯度走步長tkt_ktk?,然后再投影到集合 CCC里面。考慮原始優化問題,min?f=g+h\min f =g+hminf=g+h本身是一個無約束優化問題,但把hhh用一個約束函數表示,他就是一個帶約束的優化問題min?g(x),s.t.x∈C\min g(x), s.t. \; x \in Cming(x),s.t.x∈C,而近似點梯度下降方法要做的事情就是先優化 ggg,然后投影到約束區域CCC中。
根據proxthprox_{th}proxth?的定義,我們把上面的式子展開可以得到
可以發現括號里面的式子實際上就是在xxx附近對光滑的ggg進行了二階展開,而x+x^+x+就是對近似后函數取最小值點。再進一步地
可以發現Gt(x)=?h(x+)+?g(x)G_t(x)=\partial h(x^+) + \nabla g(x)Gt?(x)=?h(x+)+?g(x)實際上就近似為函數fff的次梯度,但并不嚴格是,因為?f(x)=?h(x)+?g(x)\partial f(x) =\partial h(x) + \nabla g(x)?f(x)=?h(x)+?g(x)。而此時我們也可以將 x+x^+x+ 寫成比較簡單的形式
x+=x?tGt(x)x^+ = x - t G_t(x) x+=x?tGt?(x)
這跟之前的梯度下降法就統一了,并且也說明了Gt(x)G_t(x)Gt?(x)就相當于是fff的梯度。
這里還需要說明的一點是Gt(x)=(x?proxth(x?t?g(x)))/tG_t(x) = (x - prox_{th} (x - t \nabla g(x)))/tGt?(x)=(x?proxth?(x?t?g(x)))/t這是一個連續函數,這是因為近似點算子是 Lipschitz 連續的(在下面一小節中會解釋說明),又由于Gt(x)=0?x=argmin?f(x)G_t(x) = 0 \iff x = arg \; \min f(x)Gt?(x)=0?x=argminf(x),因此∣∣x?x+∣∣≤?||x - x^+|| \le \epsilon∣∣x?x+∣∣≤?就可以作為 stopping criterion。
與之成對比的是非光滑函數的次梯度下降,∣∣x?x+∣∣||x - x^+||∣∣x?x+∣∣就不是一個很好的 stopping criterion,因為即使∣∣x?x+∣∣||x - x^+||∣∣x?x+∣∣很小,也可能離最優解比較遠。
總結
以上是生活随笔為你收集整理的如何正确理解近似点梯度下降算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: excel怎么做数据比对?
- 下一篇: 最优化导论(part1)--求解原问题的