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[floatfloat], 可选) – 用于计算梯度以及梯度平方的运行平均值的系数(默认: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 是针对最后更新参数的时候,给参数加的一个惩罚参数,

 总结:lr是在更新梯度的时候用到的,weight_decay权重衰减是在损失函数中的模型参数的权重,更新参数时用到的。

 总的loss中加入了一个对权重的限制,防止过大产生过拟合现象,

 

 在参数更新时反映出来,正则化参数λ决定了你如何权衡原始损失E和较大的权重惩罚。

posted @ 2021-01-12 20:04  lypbendlf  阅读(14277)  评论(0编辑  收藏  举报