快捷搜索:  汽车  科技

深度学习计算基础入门(新型深度学习优化器)

深度学习计算基础入门(新型深度学习优化器)然而,这种加速的不利之处是,由于指数移动平均线在必要时无法快速减速,它有可能直接越过理想的全局最小值,或真正的最优解。Adam步骤的当前更新通常只基于当前梯度的10%和以前梯度的90%。从积极的方面来说,相对于SGD Adam可以更快地向收敛方向移动。这就是为什么Adam是大多数深度学习优化器的默认设置,因为它可以让你很快找到一个合理的解。请注意,相对于使用动量的Adam和SGD,CIFAR 100的esp大幅改进(红色列)。当局部梯度变化在训练过程中开始减小时,这通常表示可能存在全局最小值。DiffGrad应用adaptive clamping效果将参数锁定为全局最小值,而动量优化器(如Adam)可以接近,但由于无法快速减速而经常越过去。如上面的测试结果所示,结果是性能优于Adam和SGD。尽管训练速度很快,但也有些遗憾: Adam和其他“自适应”优化器依赖于计算梯度的指数移动平均值,


深度学习计算基础入门(新型深度学习优化器)(1)

梯度在达到全局最优值(中心)的过程中发生变化的示例

DiffGrad是Dubey等人在论文《DiffGrad: CNN的优化器》中介绍的一种新的优化器,它建立在Adam优化器的基础上,开发了一种自适应的“friction clamp”,并监测梯度的局部变化,以便自动锁定Adam可以跳过的最优参数值。

深度学习计算基础入门(新型深度学习优化器)(2)

结果比较,共300个epochs(来自论文)

请注意,相对于使用动量的Adam和SGD,CIFAR 100的esp大幅改进(红色列)。

当局部梯度变化在训练过程中开始减小时,这通常表示可能存在全局最小值。DiffGrad应用adaptive clamping效果将参数锁定为全局最小值,而动量优化器(如Adam)可以接近,但由于无法快速减速而经常越过去。如上面的测试结果所示,结果是性能优于Adam和SGD。

尽管训练速度很快,但也有些遗憾: Adam和其他“自适应”优化器依赖于计算梯度的指数移动平均值,这使得它在训练过程中可以采取更大的步长(或更大的速度),与SGD相比,梯度是相对一致的。

从积极的方面来说,相对于SGD Adam可以更快地向收敛方向移动。这就是为什么Adam是大多数深度学习优化器的默认设置,因为它可以让你很快找到一个合理的解。

然而,这种加速的不利之处是,由于指数移动平均线在必要时无法快速减速,它有可能直接越过理想的全局最小值,或真正的最优解。Adam步骤的当前更新通常只基于当前梯度的10%和以前梯度的90%。

这也是在某些情况下,SGD虽然缓慢,但可以得到更好的最终结果,因为它会缓慢前进,当它达到全局极小值时,不会跳出全局极小值(但需要很长时间才能到达那里)。

通过“friction clamping”锁定到最优的最小值:相比之下,diffGrad监测当前梯度与前一步的即时变化,并应用自适应“friction clamping”,可在梯度变化很小的时候迅速减速,从而暗示最优解可能就在附近。

深度学习计算基础入门(新型深度学习优化器)(3)

diffGrad的friction clamp, 5到-5之间的值迅速减速。较大的值保持不变,并以与普通Adam相同的速度执行。

在合成环境中使用Adam vs diffGrad:在三个不同的合成函数上运行diffGrad可以显示diffGrad如何更好地将参数锁定为更优的结果。

深度学习计算基础入门(新型深度学习优化器)(4)

diffGrad能够以理想的损失锁定到全局最小值。Adam由于无法及时减速而跳到了更高的局部最小值。

深度学习计算基础入门(新型深度学习优化器)(5)

附加测试-diffGrad锁定到全局最小值,Adam最终到了局部最小值。

在这两种情况下,Adam都不能在足够的时间内减速,并最终越过最优解,最终陷入了次优的最小值。这些示例显示了diffGrad的优势,参数被锁定在更好的权重上,从而提高了神经网络的精度。

局部最小值和鞍点:如上面的图所示,friction clamping是平滑的,它的想法是,如果它是一个最优的最小值,它将允许足够的减速,而如果它只是一个局部最小值或鞍点,它仍然保持足够的速度以逃逸。

虽然其他一些论文已经提出了解决已知overshoot问题的解决方案,但是diffGrad可以稳定地解决它。

DiffGrad变量:注意,论文还深入研究了其他几个变量如何应用clamping或friction系数。论文官方github中提供的代码只提供了0版本,也就是上面使用的版本。

深度学习计算基础入门(新型深度学习优化器)(6)

在FastAI机器学习数据集(triangular schedule)上进行测试时,版本1(允许摩擦钳进一步收紧)的性能优于版本0,您可以在其他机器学习数据集上进行测试。

深度学习计算基础入门(新型深度学习优化器)(7)

使用diffGrad v1(默认值为v0),能够在20个epoch内快速获得FastAI记录的top 1%。

深度学习计算基础入门(新型深度学习优化器)(8)

官方资料库:https://github.com/shivram1987/diffGrad

Python示例

深度学习计算基础入门(新型深度学习优化器)(9)

最后

DiffGrad提供了一种创新的解决方案,以解决诸如Adam之类的自适应优化器的已知弱点,即它们的潜在加速风险(超过了最优最小值)。

通过监视即时梯度情况,diffGrad自适应地使优化器减速,以帮助锁定全局最小值,从而为您的深度学习网络提供更快,更好的训练!

猜您喜欢: