前言
在深度学习中,优化器是非常重要的一部分。它用于调整模型的参数,以此来最小化损失函数。PyTorch是一个广泛使用的深度学习框架,提供了许多优化器供我们选择。其中Adam是我们最常用的优化器之一。
Adam,名字来自:(Adaptive Moment Estimation)自适应矩估计,是2014年提出的一种万金油式的优化器,使用起来非常方便,梯度下降速度快,但是容易在最优值附近震荡。竞赛中性能会略逊于SGD,但往往最简单的才是最有效的,超强的易用性使得Adam被广泛使用。本文将介绍Adam优化器的基本原理、使用方法以及一些注意事项。
优化器使用须知
模型的每次反向传播
都会给各个可学习参数p
(权重参数)计算出一个偏导数g_t
,用于更新
对应的参数p。通常偏导数g_t
不会直接作用到对应的可学习参数p上,而是通过优化器做一下处理
,得到一个新的值
,处理过程用函数
F
表示(不同的优化器对应的F的内容不同),即,然后和学习率
lr
一起用于更新可学习参数p,即
Adam优化器的超参数设置
torch.optim.Adam(params,
lr=0.001,
betas=(0.9, 0.999),
eps=1e-08,
weight_decay=0,
amsgrad=False)
params: 模型里需要被更新的可学习参数, 通常为model.parameters()。
lr: 学习率,表示每次参数更新时步长的大小。默认值为 0.001
betas: 用于计算梯度以及梯度平方的运行平均值的系数,默认值为 (0.9, 0.999)
eps: 为了增加数值计算的稳定性而加到分母里的项,默认为1e- 8
weight_decay: 权重衰减(L2惩罚),默认为0
amsgrad:用于控制是否使用AMSGrad算法。当amsgrad为True时,优化器会计算一阶矩估计和二阶矩估计的移动平均值,从而更准确地估计梯度的方差。这有助于提高模型训练的稳定性和收敛速度。
Adam优化器的基本原理
暂无,有空在写