lookAhead和RAdam 真香

SGD出现以来, 为了解决训练过程跳脱,不稳定的问题, 陆续提出了rmsprop, adam等自适应动量优化器.
但自适应动量在前期的表现一般不好, 前期数据少, 它很难总结出一个靠谱的初始动量, 也更容易陷入局部最优, 所以一般需要几个batch
的预热阶段让自适应动量更靠谱.

为了解决前期的预热问题, 19年8月推出了RAdam, 它的思路是整流, 根据变差设定一个[预热启发值].
它的内部有多个开关, 可以动态对自适应动量进行开关, 或加阻尼以避免其运动过快, 直到变差稳定.
ps: 变差是衡量模型预测结果稳定程度的值.
RAdam的公式复杂, 它针对的是预热阶段的不稳定情况, 使用它可以省去预热阶段, 减少工作量.
当然, 它比不预热的裸adam收敛效果好, 不过时间一长最终训练效果最好的还是SGD.

lookAhead是19年7月的研究成果, 它是一个用于探索损失空间的优化器.
思路很简单, 但有用.
训练模型时总会出现这种情况, 由于局部batch数据的噪音大, 或分布与总体差很多, 搞得一个batch下来效果反而差了,
还不如不训练.
lookAhead就是满足了不想训练的愿望.
它准备了两套权重, 即两个一模一样的模型, 我叫它A和B.
lookAhead先派模型A训练k个batch, 然后测试A的效果. 如果效果好, 就让A和B做差, 把差值的一半(或自定义)加到B上, 这样B就拥有了A一半的训练效果. 这么设置的目的是为了不让模型跑飞, 是为了增加稳定性.B更新完了, 就让A与B相等,然后训练下k个batch.
如果A效果不好, 还没有B这个没训练的效果好, 那就放弃掉这次的训练结果, 即不执行B+差值的操作, 直接A=B, 然后训练下k个batch.
它与传统SGD相比, 确实获得了更好的收敛效果.

由于lookAhead比RAdam发的早, 所以有人尝试把两者结合, 即lookAhead的快权重更新法中adam替换为RAdam.
其他人试验效果确实有提升, 建议使用.

你可能感兴趣的:(lookAhead和RAdam 真香)