torch.optim.Adam優化器引數學習
阿新 • • 發佈:2021-01-12
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
- weight_decay (
float
, 可選) – 權重衰減(L2懲罰)(預設: 0)
2.演算法
https://arxiv.org/pdf/1412.6980.pdf
可以看到,beta引數是用來更新m、v這兩個動量向量和梯度的,梯度經過動量估計之後代替了SDG中的直接用梯度來更新引數。
α也就是lr學習率,用來更新引數,作為一個步長吧。
weight_decay 是針對最後更新引數的時候,給引數加的一個懲罰引數,
總的loss中加入了一個對權重的限制,防止過大產生過擬合現象,
在引數更新時反映出來,正則化引數λ決定了你如何權衡原始損失E和較大的權重懲罰。