Adam优化算法介绍

您所在的位置:网站首页 urc全称为什么 Adam优化算法介绍

Adam优化算法介绍

2024-07-05 05:15| 来源: 网络整理| 查看: 265

Adam是一种优化算法,全称时adaptive moment estimation(适应性矩估计)

SGD 和Adam

SGD( stochastic gradient descent随机梯度下降)与Adam(adaptive 随机梯度下降方法在权重更新时一直学习率是相同的,对于每个网络权重(参数),学习率不变。Adam 通过计算梯度的一阶矩估计和二阶矩估计而为不同的参数设计独立的自适应性学习率。

Adam原理

Adam结合了Adaptive Gradient Algorithm (AdaGrad,适应性梯度算法,为每个参数保留一个学习率,从而提高稀疏梯度问题的性能)和Root Mean Square Propagation (RMSProp,方根传播基于权重梯度最近量级的均值为每一个参数适应性地保留学习率。,该算法在在线和非平稳问题上都表现出色)的 优势

Adam 算法的偏差修正令其在梯度变得稀疏时要比 RMSprop 算法更快速和优秀。Insofar 和 Adam 优化算法基本是最好的全局选择。

优势

在非凸优化问题上使用Adam的吸引人的好处

实现简单计算效率高。很少的内存需求非常适合于数据和/或参数较大的问题。适用于不稳定问题。噪音很多/稀疏的梯度计算超参数有直观的解释,通常不需要调整 Adam配置参数

alpha。也称为学习率或步长。权重的比例已更新(例如0.001)。较大的值(例如0.3)会导致更新速率之前的初始学习速度更快。较小的值(例如1.0E-5)会在beta1训练期间逐渐降低学习速度。

beta1 一阶矩估计的指数衰减率估算值(例如0.9)。

beta2。二阶矩估计的指数衰减率(例如0.999)。对于梯度稀疏的问题(例如NLP和计算机视觉问题),此值应设置为接近1.0。

epsilon。是一个很小的数字,以防止在实现中被零除(例如10E-8)。

测试机器学习问题比较好的默认参数设定为:alpha=0.001、beta1=0.9、beta2=0.999 和 epsilon=10E−8。

实践

问题:文本分类时,用了两种不同的优化器,SGD和Adam,Adam参数为

pytorch

optim.Adam(model.paramters(),lr=0.001,betas=(0.9,0.999),eps=1e-8,weight_decay=0,amsgrad=False)

发现第二轮loss几乎不变,而SGD正常。

网上搜索答案:有人也遇到过这种问题(https://stackoverflow.com/questions/47813715/pytorch-loss-value-not-change),但是别人的weight_decay=0.1,解决方法有两个,1. weight_decay设置为0.01,(weight_decay term is set to be 0.1. weight_decay is used to regularize the network’s parameters. This term maybe too strong so that the regularization is too much. Try to reduce the value of weight_decay),2.不要weight_decay(I realised that L2_loss in Adam Optimizer make loss value remain unchanged (I haven’t tried in other Optimizer yet). It works when I remove L2_loss)都不适用自己

解决:该SGD参数,只设置模型参数

参考: https://machinelearningmastery.com/adam-optimization-algorithm-for-deep-learning/



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3