1. 程式人生 > >【機器學習詳解】解無約束優化問題:梯度下降、牛頓法、擬牛頓法

【機器學習詳解】解無約束優化問題:梯度下降、牛頓法、擬牛頓法

無約束優化問題是機器學習中最普遍、最簡單的優化問題。

x=minxf(x),xRn

1.梯度下降

梯度下降是最簡單的迭代優化演算法,每一次迭代需求解一次梯度方向。函式的負梯度方向代表使函式值減小最快的方向。它的思想是沿著函式負梯度方向移動逐步逼近函式極小值點。選擇適當的初始值x(0),不斷迭代,沿負梯度方法更新x值,直到收斂。具體的:

x(k+1)=x(k)αxkf(x)

固定學習率

梯度下降虛擬碼(固定學習率):
1. 取初始值x(0),令k=0,學習率α,容忍度ϵ;
2. 計算梯度gk=x(k),若|gk|<ϵ,則停止迭代,返回x=x(k);
3. 更新x

(k+1)=x(k)αgk,若|x(k+1)x(k)|<ϵ或者|f(x(k+1))f(x(k))|<ϵ,則停止迭代,返回x=x(k+1)
4. k=k+1,轉到步驟2

值得一提的是梯度下降演算法與下面介紹的幾種演算法都不能保證函式能降低到全域性最小值附近,有可能是區域性最小值附近。如果目標函式f(x)是凸函式,區域性最小值即為全域性最小值。

下圖是二維函式f(x)=0.5(x21x22)+0.5(x11)2在固定學習率的情況下,兩種不同的學習率分別迭代20次的結果,起始點(x1,x2)=(0,0),最小值點(x1,x2)=(1,1)
這裡寫圖片描述
上圖中學習率α=0.1時,隨著迭代次數的增加,每次移動的步長越來越小,甚至很難逼近最優值,表明學習率α

太小;當α=0.6時,移動的軌跡在某值附近開始震盪,表明學習率α太大;由此可見,固定學習率的演算法太大或者太小都不好。下面介紹一種可變學習率的演算法,採用線性搜尋的方案,每次迭代前尋找最優的α值,再進行迭代;

線性搜尋
固定學習率中每一迭代更新x(k+1)=x(k)αgk。線上性搜尋中我們設函式h(α)=f(xkαgk),即看成是關於α的函式,解αk=minαh(α)=minαf(x(k)αgk),然後迭代更新x(k+1)=x(k)αkgk;這樣可以保證x向函式下降方法移動,並收斂到區域性最優值。

梯度下降虛擬碼(線性搜尋):
1. 取初始值x(0),令k=0,學習率α

,容忍度ϵ;
2. 計算梯度gk=x(k),若