论文地址:https://arxiv.org/pdf/1803.05407.pdf
SWA (Stochastic Weight Averaging) 是一种用于优化深度神经网络的算法,其基本思想是在训练过程中使用滑动平均的方法对模型参数进行平均,以减少训练过程中的震荡,提高模型的泛化性能。
具体而言,SWA 算法在训练过程中,对于每个 epoch 中的每个 batch,它都会记录当前的模型参数,并计算这些参数的平均值。当训练结束后,SWA 算法会使用这些平均值来更新模型参数。SWA 算法的更新公式如下:
$$
\theta_{\text{SWA}} \leftarrow \frac{1}{T} \sum_{t=1}^T \theta_{t} \tag{1}
$$
其中,$\theta_{\text{SWA}}$ 是模型参数的 SWA 平均值,$\theta_t$ 是模型参数在第 $t$ 个 epoch 中的值,T 是训练的总 epoch 数。
需要注意的是,SWA 算法并不是用 SWA 平均值来代替模型参数,而是在模型训练过程中用 SWA 平均值来替代模型参数进行验证。当模型训练完成后,可以使用 SWA 平均值作为最终的模型参数。
SWA 算法的优点在于,它可以降低模型的方差,从而提高模型的泛化能力。同时,由于 SWA 算法只需要在训练过程中维护一个平均值,因此对计算资源的要求较低。
正文完