深度學習基礎之-2.4梯度下降的三種形式(單變量,全批量,小批量)

單變量隨機梯度下降(SDG(Stochastic Grident Descent))

正向計算過程:

Zn×1=Wn×fXf×1+Bn×1Z^{n \times 1}=W^{n \times f} \cdot X^{f \times 1} + B^{n \times 1} An×1=a(Z)A^{n \times 1}=a(Z)

反向計算過程:

ΔZn×1=J(W,B)=An×1Y1×1 \Delta Z^{n \times 1} = J'(W,B) = A^{n \times 1} - Y^{1 \times 1} Wn×f=Wn×fη(ΔZn×1XT1×f) W^{n \times f} = W^{n \times f} - \eta \cdot (\Delta Z^{n \times 1} \cdot X_T^{1 \times f}) Bn×1=Bn×1ηΔZn×1 B^{n \times 1} = B^{n \times 1} - \eta \cdot \Delta Z^{n \times 1}

其中:

f=m=n=η= A=Y=X=XT=Xf=特徵值數,m=樣本數,n=神經元數,\eta=步長 \ A=預測值,Y=標籤值,X=輸入值,X_T=X的轉置

在這裏插入圖片描述

  • 訓練樣本:每次使用一個樣本數據進行一次訓練,更新一次梯度,重複以上過程。
  • 優點:訓練開始時損失值下降很快,隨機性大,找到最優解的可能性大。
  • 缺點:受單個樣本的影響最大,損失函數值波動大,到後期徘徊不前,在最優解附近震盪。不能並行計算。
    在這裏插入圖片描述
    上圖,迭代時,Loss值毛刺波動非常大,受樣本差異影響。

在這裏插入圖片描述

上圖,梯度下降時,開始收斂較快,到後期波動較大,找不到準確的方向。

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

正向計算過程:

Zn×m=Wn×fXf×m+Bn×1Z^{n \times m}=W^{n \times f} \cdot X^{f \times m} + B^{n \times 1} An×m=a(Z)A^{n \times m}=a(Z)

反向計算過程:

ΔZn×m=J(W,B)=An×mY1×m \Delta Z^{n \times m} = J'(W,B) = A^{n \times m} - Y^{1 \times m} Wn×f=Wn×fη1m(ΔZn×mXTm×f) W^{n \times f} = W^{n \times f} - \eta \cdot \frac{1}{m} (\Delta Z^{n \times m} \cdot X_T^{m \times f}) (按列相加變成nx1)Bn×1=Bn×1η1m(ΔZn×m,axis=1) B^{n \times 1} = B^{n \times 1} - \eta \cdot \frac{1}{m} \sum (\Delta Z^{n \times m}, axis=1) \tag{按列相加變成nx1}

其中:

f=m=n=η= A=Y=X=XT=Xf=特徵值數,m=樣本數,n=神經元數,\eta=步長 \ A=預測值,Y=標籤值,X=輸入值,X_T=X的轉置

在這裏插入圖片描述

  • 訓練樣本:每次使用全部數據集進行一次訓練,更新一次梯度,重複以上過程。
  • 優點:受單個樣本的影響最小,一次計算全體樣本速度快,損失函數值沒有波動,到達最優點平穩。方便並行計算。
  • 缺點:數據量較大時不能實現(內存限制),訓練過程變慢初始值不同,可能導致獲得局部最優解,並非全局最優解。
    在這裏插入圖片描述
    上圖,迭代時,Loss值沒有毛刺波動。

在這裏插入圖片描述

上圖,梯度下降時,直接了當達到最佳點。

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

正向計算過程:

Zn×k=Wn×fXf×k+Bn×1Z^{n \times k}=W^{n \times f} \cdot X^{f \times k} + B^{n \times 1}

An×k=a(Z)A^{n \times k}=a(Z)

反向計算過程:

ΔZn×k=J(W,B)=An×kY1×k \Delta Z^{n \times k} = J'(W,B) = A^{n \times k} - Y^{1 \times k} Wn×f=Wn×fη1k(ΔZn×kXTk×f) W^{n \times f} = W^{n \times f} - \eta \cdot \frac{1}{k} (\Delta Z^{n \times k} \cdot X_T^{k \times f}) (按列相加變成N x 1)Bn×1=Bn×1η1k(ΔZn×k,axis=1) B^{n \times 1} = B^{n \times 1} - \eta \cdot \frac{1}{k} \sum (\Delta Z^{n \times k}, axis=1) \tag{按列相加變成N x 1}

其中:

f=k=n=η= A=Y=X=XT=Xf=特徵值數,k=批樣本數,n=神經元數,\eta=步長 \ A=預測值,Y=標籤值,X=輸入值,X_T=X的轉置

結合了前兩種的優點,又避免了前兩者的缺點。

在這裏插入圖片描述

  • 訓練樣本:選擇一**小部分樣本進行訓練,**更新一次梯度,然後再選取另外一小部分樣本進行訓練,再更新一次梯度/
  • 優點:不受單樣本噪聲影響,訓練速度較快。
  • 缺點:batch size的數值選擇很關鍵,會影響訓練結果。

一些概念:

  • Batch Size:批大小,一次訓練的樣本數量。
  • Iteration:迭代,一次正向+一次反向。
  • Epoch:所有樣本被使用了一次,叫做一個Epoch。

假設一共有樣本1000個,batch size=20,則一個Epoch中,需要1000/20=50次Iteration才能訓練完所有樣本

在這裏插入圖片描述

上圖,迭代時,Loss值毛刺波動較小。
在這裏插入圖片描述

上圖,梯度下降時,在接近中心時有小波動。圖太小看不清楚,可以用matplot工具放大局部來觀察。和全批量的圖比較,靠近中心的線比較粗,說明有微小波動,而全批量是一根單直線。

小批量的大小通常由以下幾個因素決定

  • 更大的批量會計算更精確的梯度,但是回報卻是小於線性
  • 極小批量通常難以充分利用多核架構。這決定了最小批量的數值,低於這個值的小批量處理不會減少計算時間
  • 如果批量處理中的所有樣本可以並行地處理,那麼內存消耗和批量大小成正比。對於多硬件設施,這是批量大小的限制因素。
  • 某些硬件上使用特點大小的數組時,運行時間會更少,尤其是GPU,通常使用2的冪數作爲批量大小可以更快,如32 ~ 256,大模型時嘗試用16
  • 可能是由於小批量在學習過程中加入了噪聲,會帶來一些正則化的效果。泛化誤差通常在批量大小爲1時最好。因爲梯度估計的高方差,小批量使用較小的學習率,以保持穩定性,但是降低學習率會使迭代次數增加

在實際工程中,我們通常使用小批量梯度下降形式。

https://github.com/microsoft/ai-edu/blob/master/B-教學案例與實踐/B6-神經網絡基本原理簡明教程/04.4-梯度下降的三種形式.md

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