torch.optim.SGD參數詳解


 

隨機梯度下降法

    $\theta_{t} \leftarrow \theta_{t-1}-\alpha g_{t}$

Code:

optimzer = torch.optim.SGD(model.parameters(),lr = 0.001)

權重衰減

    $\theta_{t} \leftarrow(1-\beta) \theta_{t-1}-\alpha \mathbf{g}_{t}$
  其中 $\mathrm{g}_{t}$ 為第 $t$ 步更新時的梯度, $\alpha$ 為學習率, $\beta$ 為權重衰減系數,一般取值比較 小,比如 0.0005。

  

Code:

optimzer = torch.optim.SGD(model.parameters(),lr = 0.001,weight_decay=0.0005)

動量法 

  動量(Momentum)是模擬物理中的概念.一個物體的動量指的是該物體 在它運動方向上保持運動的趨勢,是該物體的質量和速度的乘積.動量法(Momentum Method)是用之前積累動量來替代真正的梯度.每次迭代的梯度可以 看作加速度. 在第 $t$ 次迭代時,計算負梯度的“加權移動平均”作為參數的更新方向,

    $\Delta \theta_{t}=\rho \Delta \theta_{t-1}-\alpha g_{t}=-\alpha \sum\limits_{\tau=1}^{t} \rho^{t-\tau} g_{\tau}$

  

Code:

optimzer = torch.optim.SGD(model.parameters(),lr = 0.001,momentum =0.001,dampening=0.001)

Nesterov加速梯度

   Nesterov 加速梯度(Nesterov Accelerated Gradient,NAG)是一種對動量 法的改進[Nesterov, 2013; Sutskever et al., 2013],也稱為Nesterov動量法(Nesterov Momentum)

  在動量法中, 實際的參數更新方向  $\Delta \theta_{t}$  為上一步的參數更新方向  $\Delta \theta_{t-1}$  和當 前梯度的反方向 $ -g_{t}$  的疊加. 這樣,  $\Delta \theta_{t}$  可以被拆分為兩步進行, 先根據  $\Delta \theta_{t-1}$  更 新一次得到參數 $ \hat{\theta}$ , 再用 $ -g_{t}$  進行更新.

  這樣,合並后的更新方向為

    $\Delta \theta_{t}=\rho \Delta \theta_{t-1}-\alpha \mathfrak{g}_{t}\left(\theta_{t-1}+\rho \Delta \theta_{t-1}\right)$

  其中 $\mathfrak{g}_{t}\left(\theta_{t-1}+\rho \Delta \theta_{t-1}\right)$  表示損失函數在點 $\hat{\theta}=\theta_{t-1}+\rho \Delta \theta_{t-1}$ 上的偏導數. 

  

  

Code:

optimzer = torch.optim.SGD(model.parameters(),lr = 0.001,momentum =0.001,nesterov=0.01)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM