梯度下降法(Gradient Descent)
優化思想:用當前位置的負梯度方向作為搜索方向,亦即為當前位置下降最快的方向,也稱“最速下降法”。越接近目標值時,步長越小,下降越慢。
如下圖所示,梯度下降不一定能找到全局最優解,可能尋找到的是局部最優解。(當損失函數是凸函數時,梯度下降得到的解一定是全局最優解,因為凸函數的極小值即為最小值)

批量梯度下降法(Batch Gradient Descent,BGD):在更新參數時,BGD根據batch中的所有樣本對參數進行更新。





隨機梯度下降法(Stochastic Gradient Descent,SGD):和BGD的原理類似,區別在於每次隨機選取一個樣本j求梯度。
對於訓練速度來說,SGD每次僅僅采用一個樣本來迭代,訓練速度很快,而BGD在樣本量很大的時候,訓練速度不能讓人滿意。
對於准確度來說,SGD僅僅用一個樣本決定梯度方向,導致解很有可能不是最優。
對於收斂速度來說,由於SGD一次迭代一個樣本,導致迭代方向變化很大,不能很快的收斂到局部最優解。

小批量梯度下降法(Mini-batch Gradient Desent,也稱Mini-batch SGD):BGD和SGD二者的折中法,對於m個樣本,選取x個子樣本進行迭代,且1<x<m。

(1)選擇n個訓練樣本(n<m,m為總訓練集樣本數)(即batchsize = n,樣本總數為m,隨機的思想在於每個epoch之前,隨機打亂樣本順序,順序選取n個樣本作為batch)
(2)在這n個樣本中進行n次迭代,每次使用1個樣本
(3)對n次迭代得出的n個gradient進行加權平均再並求和,作為這一次mini-batch下降梯度
(4)不斷在訓練集中重復以上步驟,直到收斂。