1. 文章简介
这篇文章主要是提出了一个LAWA的方法,用于加速模型训练的收敛速度。
整体的思路而言好像早在90年代就已经有过了研究,文中也算是一个文艺复兴,具体来说就是取多个模型进行进行参数的average,从而类似于一种ensemble的方式使得模型更快的收敛到一个更好的效果上。
但是,在实际训练过程中,事实上我们很难同时训练多个模型然后进行average,不过有一个更加简单的近似方式,就是将最近的多个checkpoint视为不同的模型,然后进行参数的average。
文中将这种方法称之为LAWA(LAtest Weight Averaging),文中实验显示模型训练速度得到了显著的增强,模型能够更快地收敛到更好的效果上。
2. 方法简介
下面,我们来看一下LAWA这个方法的具体内容。
文中给出了LAWA的伪代码说明如下:
可以看到:
- 从伪代码的表述来看,似乎lawa model仅仅是训练模型的一个copy,lawa方法本身并没有直接参与到模型的训练过程当中,而仅仅是在每个epoch之后存取了一个average的backup。
3. 实验结果
下面,给出文中的两个主要的实验结果。
1. 基础实验
文中在ResNet以及RoBERTa模型上进行了实验考察,得到结果如下:
可以看到:
- 保存下来的LAWA模型曲线更为平滑,效果也更好。
2. 消解实验
另一方面,文中还对于滑动窗口参数 k k k进行了消解实验,得到结果如下:
可以看到:
- 整体上来说, k k k与效果呈正相关关系,但是也不完全是越高越好。
4. 结论 & 思考
综上,我们可以看到:
- LAWA仅仅是一种作用于模型存储上的方法,并不会影响模型原始的存储过程,不过效果上却可以超过原始的训练过程,使得相同训练过程下的模型获得更为有效的效果表达。
不过相对的,这个方法的使用难度也被大大简化了,因此很容易就可以在我们自己的场景下进行快速实验,考察一下我们的模型效果变化。
后续测评结果:感觉没啥用,不过倒是没啥性能损失也就是了……