首页-沐鸣娱乐-官方注册站

全国加盟咨询热线:

400-123-4567

当前位置: 首页 > 沐鸣资讯 > 公司新闻

三个常见的优化函数:SGD、RMSprop、Adam_如何选择合适的优化器

文章作者:佚名 浏览次数:发表时间:2024-05-20 19:43:18

优化器(optimizer)是根据反向传播计算出的梯度,优化模型参数的内置方法。优化器是在深度学习反向传播过程中,指引损失函数(目标函数)的各个参数往正确的方向更新合适的大小,使得更新后的各个参数让损失函数(目标函数)值不断逼近全局最小。优化器是神经网络蓬勃发展的基础。

随机梯度下降优化器SGD和min-batch是同一个意思,抽取m个小批量(独立同分布)样本,通过计算他们平梯度均值。

  • lr: float >=0. 学习率
  • momentum: float >=0.参数,用于加速SGD在相关方向上前进,并抑制震荡
  • decay: float >=0.每次参数更新后学习率衰减值
  • nesterov: boolean.是否使用Nesterov动量

RMSprop:经验上,RMSProp被证明有效且实用的深度学习网络优化算法。

RMSProp增加了一个衰减系数来控制历史信息的获取多少,RMSProp会对学习率进行衰减。

这个优化器通常是训练循环神经网络RNN的不错选择。在训练序列问题的时候,这个优化器非常好。建议使用优化器的默认参数(除了学习率lr,它可以被自由调节)

  • lr: float >=0. 学习率。
  • rho: float >=0. RMSProp梯度平方的移动均值的衰减率.
  • epsilon: float >=0. 模糊因子.若为None,默认为K.epsilon()。
  • decay: float >=0. 每次参数更新后学习率衰减值。

1、Adam算法可以看做是修正后的Momentum + RMSProp算法;

2、Adam通常被认为对超参数的选择相当鲁棒;

3、学习率建议为0.001

Adam是一种可以替代传统随机梯度下降过程的一阶优化算法,它能基于训练数据迭代地更新神经网络权重。

Adam通过计算梯度的一阶矩估计和二阶矩估计而为不同的参数设计独立的自适应性学习率。

  • lr: float >=0.学习率;
  • beta_1: float, 0 < beta < 1.通常接近于1;
  • beta_2: float, 0 < beta < 1.通常接近于1;
  • decay: float >=0.每次参数更新后学习率衰减值。

当然,可以使用的优化器远不止这些,使用torch.optim可以看到非常多的优化器。

pytorch内置的优化器

选择合适的优化器的方法有以下几点:

  • 查找并阅读相关的研究论文,看看类似的数据集和任务的SOTA结果是什么;使用这些优化器的原因;一开始时与它使用相同的优化器,观测在自己任务上的应用效果。
  • 总结自己数据集的特性,看是否有与其相匹配的优化器,即是否存在可以发挥某些优化器优势的特性。
  • 考虑该项目有哪些可用资源,计算限制或内存限制以及项目时间范围等也都会影响优化器的选择范围。
  • 先用小数据集进行实验,测试一下最好的优化器,并通过参数搜索来寻找最优的训练参数。
  • 考虑不同算法的组合,比如先用Adam进行快速下降,而后再换到SGD进行充分的调优。
  • 训练过程中持续监控训练数据和验证数据上的目标函数值以及精度或者AUC等指标的变化情况。
  • 制定一个合适的学习率衰减策略,比如每过多少个epoch就衰减一次;或者利用精度或者AUC等性能指标来监控,当测试集上的指标不变或者下跌时,就降低学习率。
  • Early stopping。当验证集上如果损失函数不再显著地降低,那么应该提前结束训练。

回顶部

平台注册入口