1. 程式人生 > 實用技巧 >torch.optim.Adam優化器引數學習

torch.optim.Adam優化器引數學習

1.引數

https://blog.csdn.net/ibelievesunshine/article/details/99624645

class torch.optim.Adam(params, lr=0.001, betas=(0.9, 0.999), eps=1e-08, weight_decay=0)[source]

  • params (iterable) – 待優化引數的iterable或者是定義了引數組的dict
  • lr (float, 可選) – 學習率(預設:1e-3)
  • betas (Tuple[float,float], 可選) – 用於計算梯度以及梯度平方的執行平均值的係數(預設:0.9,0.999)
  • eps (float
    , 可選) – 為了增加數值計算的穩定性而加到分母裡的項(預設:1e-8)
  • weight_decay (float, 可選) – 權重衰減(L2懲罰)(預設: 0)

2.演算法

https://arxiv.org/pdf/1412.6980.pdf

可以看到,beta引數是用來更新m、v這兩個動量向量和梯度的,梯度經過動量估計之後代替了SDG中的直接用梯度來更新引數。

α也就是lr學習率,用來更新引數,作為一個步長吧。

weight_decay 是針對最後更新引數的時候,給引數加的一個懲罰引數,

總的loss中加入了一個對權重的限制,防止過大產生過擬合現象,

在引數更新時反映出來,正則化引數λ決定了你如何權衡原始損失E和較大的權重懲罰。