優化函數

損失函數

BGD
我們平時說的梯度現將也叫做最速梯度下降,也叫做批量梯度下降(Batch Gradient Descent)。
- 對目標(損失)函數求導

- 沿導數相反方向移動參數

在梯度下降中,對於參數的更新,需要計算所有的樣本然后求平均,其計算得到的是一個標准梯度(這是一次迭代,我們其實需要做n次迭代直至其收斂)。因而理論上來說一次更新的幅度是比較大的。
SGD
與BGD相比,隨機也就是說我每次隨機采用樣本中的一個例子來近似我所有的樣本,用這一個隨機采用的例子來計算梯度並用這個梯度來更新參數,即SGD每次迭代僅對一個隨機樣本計算梯度,直至收斂。
-
由於SGD每次迭代只使用一個訓練樣本,因此這種方法也可用作online learning。
-
每次只使用一個樣本迭代,若遇上噪聲則容易陷入局部最優解。
mini-batch SGD
他用了一些小樣本來近似全部的,其本質就是既然SGD中1個樣本的近似不一定准,那就用更大的30個或50(batch_size)個樣本來近似,即mini-batch SGD每次迭代僅對n個隨機樣本計算題都,直至收斂。
-
隨機在訓練集中選取一個mini-batch,每個mini-batch包含n個樣本;(n<N,N為總訓練集樣本數)
-
在每個mini-batch里計算每個樣本的梯度,然后在這個mini-batch里求和取平均作為最終的梯度來更新參數;(注意雖然這里好像用到了BGD,但整體整體mini-batch的選擇是用到了SGD)
-
以上兩步可以看做是一次迭代,這樣經過不斷迭代,直至收斂