神經網絡中的梯度下降與優化算法

 

梯度下降

用來尋找極小值。通過向負梯度方向逼近。

用於在神經網絡模型中進行權重更新,即在一個方向上更新和調整模型的參數,來最小化損失函數。

 

反向傳播

先在前向傳播中計算輸入信號的乘積及其對應的權重,然後將非線性激活函數作用於這些乘積的總和。

然後,在網絡的反向傳播過程中回傳相關誤差,使用梯度下降更新權重值,通過計算誤差函數E相對於權重參數W的梯度,在損失函數梯度的相反方向上更新權重參數。

 

隨機梯度下降

(SGD, Stochastic Gradient Descent)

  • 初始化參數、學習速率
  • 循環,直到獲得一個極小值:
  1.     對訓練集進行隨機排列
  2.     每次計算一個樣本的梯度,而不是整個訓練集
  • 傳統的批量梯度下降將計算整個數據集梯度,但只會進行一次更新,因此在處理大型數據集時速度很慢且難以控制,存在冗餘的權重更新,甚至導致內存溢出。而SGD通過每次只取一個樣本來進行梯度下降,避免了這個問題。
  • 問題:每次僅用一個樣本進行頻繁的參數更新,可能導致目標函數值震盪比較厲害

 

小批量梯度下降 (Mini-Batch gradient descent)

  1. 對數據進行連續的批量抽樣,選取batch_size個樣本
  2. 通過計算圖或神經網絡將數據進行前向傳播,計算損失
  3. 通過反向傳播來計算梯度
  4. 用這些梯度來更新參數

對每個批次中的n個訓練樣本,只執行一次更新。

  • 可以減少參數更新的波動,最終得到效果更好和更穩定的收斂。
  • 還可以使用最新的深層學習庫中通用的矩陣優化方法,使計算小批量數據的梯度更加高效。
  • 在訓練神經網絡時,通常都會選擇小批量梯度下降算法。

 

優化算法

動量法(Momentum)

SGD在目標函數的“峽谷”處常出現震盪難以快速收斂的問題。在參數更新中,動量會對指向相同方向的維度對應的參數進行持續更新,約束梯度方向總是改變的維度參數,儘可能引導損失函數向“谷底”收斂。

 

Nesterov accelerated gradient(NAG)

NAG則在動量法的基礎上引入了”預測“的功能,對下一個位置的走向做一個初步的預估。避免走過頭而遠離了最優解。

 

Adagrad

在訓練的過程中,不斷地更新、累加每一步的梯度的平方和。

grad_squared = 0
while True:
    dx = compute_gradient(x)
    grad_squared += dx * dx
    x -= learning_rate * dx / (np.sqrt(grad_squared) + 1e-7)

通過參數來調整合適的學習率η,對稀疏參數進行大幅更新、對頻繁參數進行小幅更新。因此,Adagrad方法非常適合處理稀疏數據。

學習速率在一直降低。在凸函數中,在接近極值點時,逐漸降低學習速率,這是很好的表現然而,在凹函數中,這樣會在一個局部極值點時被困住。

 

AdaDelta

是AdaGrad的延伸方法,解決其學習率衰減的問題。

讓平方梯度乘以一個衰減率(通常是0.9),按照一定比率逐漸下降

 

RMSProp

解決學習率衰減的問題。

 

Adam

(Adaptive Moment Estimation)

進一步的改進,結合了上述各自的優點。

能計算每個參數的自適應學習率。

所以說,使用Adam就對了~

first_moment = 0  
second_moment = 0  
for t in range(num_iterations):  
    dx = compute_gradient(x)  
    first_moment = beta1 * first_moment + (1 - beta1) * dx        #usually, beta1  
    second_moment = beta2 * second_moment + (1 - beta2) * dx * dx  
  
    first_unbias = first_moment / (1 - beta1 ** t)        # bias correction  
    second_unbias = second_moment / (1 - beta2 ** t)      # bias correction  
  
    x -= learning_rate * first_unbias / (np.sqrt(second_unbias) + 1e-7)  

通常,可以設置 beta1 = 0.9, beta2 = 0.999, learning rate = 1e-3 or 5e-4

beta1: 一階矩估計的指數衰減率

beta2:二階矩估計的指數衰減率

 

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