1. 程式人生 > 其它 >梯度下降法優化

梯度下降法優化

梯度下降法的優化:SGD 牛頓法 動量法等

梯度下降優化

為何要優化

梯度下降是求每個點的梯度,然後從該點減去一個極小量,去進行梯度下降

但計算機是無法計算極小量的,所以必須有一個確定的步長,即學習率

通過乘步長進行優化會與最理想的梯度下降路徑有所偏差,那麼如何去減小這個偏差就為梯度下降的優化帶來了可能性。

批量梯度下降法(Batch Gradient Descent)

批量梯度下降法,是梯度下降法最常用的形式,具體做法也就是在更新引數時使用所有的樣本來進行更新。

這樣需要把所有資料都計算一遍才能走一步,而且可能會陷入local minima

$\theta_i =\theta_i -\alpha\sum\limits_{j=1}^{m}(h_\theta(x_0^{(j)}, x_1^{(j)}, ...x_n^{(j)}) - y_j)x_i^{(j)}$

隨機梯度下降法(Stochastic Gradient Descent)

隨機梯度下降法,其實和批量梯度下降法原理類似,區別在與求梯度時沒有用所有的m個樣本的資料,而是僅僅選取一個樣本j來求梯度。

$\theta_i =\theta_i -\alpha (h_\theta(x_0^{(j)}, x_1^{(j)}, ...x_n^{(j)}) - y_j)x_i^{(j)}$

隨機梯度下降法由於每次僅僅採用一個樣本來迭代,訓練速度很快

隨機梯度下降法用於僅僅用一個樣本決定梯度方向,導致解很有可能不是最優。對於收斂速度來說,由於隨機梯度下降法一次迭代一個樣本,導致迭代方向變化很大,不能很快的收斂到區域性最優解。

小批量梯度下降法(Mini-batch Gradient Descent)

小批量梯度下降法是批量梯度下降法和隨機梯度下降法的折衷,也就是對於m個樣本,我們採用x個子樣本來迭代

$\theta_i =\theta_i - \alpha\sum\limits_{j=t}^{t+x-1}(h_\theta(x_0^{(j)}, x_1^{(j)}, ...x_n^{(j)}) - y_j)x_i^{(j)}$