我的印象是 beta1 和 beta2 会影响 adam 优化器“记住”它之前的动作的程度,我的猜测是,如果训练表现不佳,这些值应该减少,对吗?
但是,在决定是否调整这些参数或改变这些值多少时,应该有什么直觉?
我的印象是 beta1 和 beta2 会影响 adam 优化器“记住”它之前的动作的程度,我的猜测是,如果训练表现不佳,这些值应该减少,对吗?
但是,在决定是否调整这些参数或改变这些值多少时,应该有什么直觉?
Adam的超参数和是在估计梯度的第一和第二矩时使用的初始衰减率,它们在每个训练步骤(批次)结束时(以指数方式)相乘。根据我对论文中算法 1 的阅读,减小和会使学习变慢,所以如果训练进行得太快,这可能会有所帮助。
使用 Adam 的人可能会将和设置为较高的值(高于 0.9),因为它们在训练期间会自行相乘(即指数地)。将和/或设置为低于 0.5 将导致随着训练步骤/批次数量的增加而急剧下降。
我的经验是和绝对是可以调整的,并且可以通过贝叶斯优化进行调整。为此,我使用Optuna并发现它们都需要设置为远低于最佳 MNIST 分类的默认值(基于最大化测试数据分类准确度),深度网络在训练数据中的 3,833 个样本(随机选择)上训练对其余部分进行设置和验证(我在这个问题中解释了我选择该训练集大小的原因)。
我使用 Adam 对 MNIST 进行分类的实验(不允许amsgrad
)显示,在 500 次试验后,以下设置最大限度地提高了测试数据(10,000 张图像,从未用于训练或验证)的分类准确度。在这项研究中,我在前 100 次试验后实施了中值修剪,并允许每个试验最多 500 个时期收敛(定义为 50 个时期的耐心,没有大于 0.0001 的验证分类交叉熵减少),或者在修剪开始后,在该点之前击败所有试验的中值验证,然后按上述定义收敛。
我已经发布了复制我的实验所需的更新演示代码;请复制并发布您的结果是否相似。注意,我目前正在测试Adabelief是否会胜过 Adam……该代码也已发布,以及 Adam 和 Adabelief 的代码,它们仅在研究的第一次试验中尝试为连续超参数实施 Jeffreys 先验(并且未能在亚当的情况下击败了 Optuna 的本地人。trial.suggest
)
简单地说,Beta 用于平滑收敛路径,也提供一些动力来跨越局部最小值或鞍点。现在它如何影响可以被认为是 Beta 默认值 0.9 只是平均前 10 个批次的梯度或(梯度的平方),由 1/(1-0.9) 计算,这意味着它代表我们来自最后的方式减少损失时减少 10 个批次。因此,您可以随时调整批量大小,而不是调整,它将产生几乎相同的影响!