梯度下降算法及其改進

1.梯度和梯度值

一個函數f(x,y,z),求其在x,y,z上的偏導\frac{\partial f}{\partial x},\frac{\partial f}{\partial y},\frac{\partial f}{\partial z},比如要求其在M(a,b,c)上的梯度,則將a,b,c帶入(\frac{\partial f}{\partial x},\frac{\partial f}{\partial y},\frac{\partial f}{\partial z})中,可以得到一個新的向量(A,B,C),那麼這個新的向量就是梯度。梯度值就是這個向量的模,即\sqrt{A^{2}+B^{2}+C^{2}}


2.梯度下降算法

給定f(x)和初始點x_{0}

重複執行以下過程直到滿足條件

\Delta x_{t}=-\bigtriangledown f(x_{t})       這裏的\bigtriangledown f(x_{t})就是求x_{t}的梯度

x_{t+1}=xt+\eta \Delta x_{t}       \eta是學習率

普通梯度下降容易陷入局部最優,所以需要改進。


3.基於衝量的梯度下降算法

衝量其實叫動量更合適,加了一個衝量,也許可以衝出局部最優點。

給定f(x)、初始點x_{0}和初始動量v_{0}

重複執行以下過程直到滿足條件

\Delta x_{t}=-\bigtriangledown f(x_{t})       這裏的\bigtriangledown f(x_{t})就是求x_{t}的梯度

v_{t+1}=\gamma v_{t}+\eta \Delta x_{t}      其實就是在這裏加了一個動量

x_{t+1}=xt+v_{t}       


4.NAG改進

這個是對基於衝量的梯度下降的改進算法。在基本梯度下降和衝量梯度下降中,都是在x_{t}處計算梯度,要是我們能夠在x_{t}附近探索一下,找到一個好一點的新的點計算梯度,會更好吧?所以NAG改進就是基於這個思路來的。

給定f(x)、初始點x_{0}和初始動量v_{0}

重複執行以下過程直到滿足條件

\Delta x_{t}=-\bigtriangledown f(x_{t}+\gamma v_{t})       這裏的\bigtriangledown f(x_{t})就是求x_{t}的梯度

v_{t+1}=\gamma v_{t}+\eta \Delta x_{t}      其實就是在這裏加了一個動量

x_{t+1}=xt+v_{t}       

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