梯度下降(Gradient Descent)

梯度下降

考慮一個無約束的,平滑的凸優化問題
minxf(x)\min_x f(x)

其中,ff是凸函數,且在定義域dom(f)=Rndom(f)=R^n上是可微的。

算法

選擇一個初始點x(0)Rnx^{(0)}\in R^n,重複操作:
x(k)=x(k1)tkf(x(k1)), k=1,2,3.,..x^{(k)} = x^{(k-1)} - t_k \cdot \nabla f(x^{(k-1)}),\ k=1,2,3.,..

直到達到某閾值後停止。梯度下降法就是沿着梯度減小的方向,每次走一定的步長,直到到達最優點爲止。
在這裏插入圖片描述

梯度下降的解釋

在每一次迭代中,對當前點做二次泰勒展開:
f(y)f(x)+f(x)T(yx)+12tyx22f(y)\approx f(x)+\nabla f(x)^T(y-x)+\frac{1}{2t}\|y-x\|^2_2

這裏用1tI\frac{1}{t}I代替了二次項係數海森矩陣2f(x)\nabla^2 f(x)
選擇下一個點y=x+y=x^+去最小化該二次近似可以得到:
x+=xtf(x)x^+=x-t\nabla f(x)

所以,梯度下降相當於在函數的每個點處都做二次近似,然後求解最小點的位置。

在這裏插入圖片描述

步長的選擇

既然梯度下降每次迭代都要走一定的步長,那這個步長要怎麼選擇呢?
一種簡單的方式是把步長固定,每次都移動常數距離,tk=t, for all k=1,2,3,...t_k=t,\ for\ all\ k=1,2,3,...。但是這樣存在問題,如果tt太大,梯度下降可能會發散而不收斂;如果tt太小,梯度下降就會收斂很慢。只有tt選得“剛好”時,才能兼顧收斂性和收斂速度。另一種方法可以自適應地調整步長——回溯線性搜索

回溯線性搜索

  1. 首先固定參數0<β<10<\beta<10<α1/20<\alpha\leq 1/2
  2. 在每次迭代中,首先設置t=tinitt=t_{init},然後只要:
    f(xtf(x))>f(x)αtf(x)22f(x-t\nabla f(x))>f(x)-\alpha t \|\nabla f(x)\|^2_2就收縮t=βtt=\beta t
  3. 重複步驟2,直到滿足條件爲止。然後進行梯度下降更新:
    x+=xtf(x)x^+=x-t\nabla f(x)

在這裏插入圖片描述
在實踐中可以進一步簡化α=1/2\alpha=1/2

收斂性分析

已知ff是凸函數,且在定義域dom(f)=Rndom(f)=R^n上是可微的。而且f\nabla f是關於常數L>0L>0 Lipschitz連續的:
f(x)f(y)2Lxy2for any x,y\|\nabla f(x)-\nabla f(y)\|_2 \leq L\|x-y\|_2\quad for\ any\ x,y(或者說二次微分2f(x)LI\nabla ^2f(x) \preceq LI
那麼,梯度下降有O(1/k)O(1/k)的收斂率,kk爲迭代次數。也就是說,在O(1/ϵ)O(1/\epsilon)次迭代後,可以找到ϵ\epsilon誤差的次優點。
如果ff是強凸的,即存在m>0m>0,使得f(x)m2x22f(x)-\frac{m}{2}\|x\|^2_2是凸的(或者說二次微分2f(x)mI\nabla ^2f(x) \succeq mI),那麼收斂率將會達到指數收斂率O(γk)O(\gamma ^k)0<γ<10<\gamma<1。也就是說,在O(log(1/ϵ))O(log(1/\epsilon))次迭代後,可以找到ϵ\epsilon誤差的次優點。

優缺點

優點

  1. 方法簡單,每次迭代都很快;
  2. 對於良態的,強凸問題有很快的收斂速度。

缺點

  1. 由於許多問題是非強凸或良態的,因此梯度下降往往需要很多次迭代,收斂速度很慢;
  2. 不能應對不可微的函數。

在非凸問題上的分析

假設ff是可微的,且f\nabla f是Lipschitz連續的,但是非凸的。在這種情況下,我們不再尋找最優點,而是尋找穩定點解,那麼梯度下降有O(1/k)O(1/\sqrt{k})(或O(1/ϵ2)O(1/\epsilon^2))的收斂率。

參考資料

CMU:Convex Optimization

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章