1. 引言
在深度神经网络训练过程中,梯度是用来指导模型权重更新的关键信息,通过对损失函数的梯度进行反向传播来计算[1]。在理想情况下,梯度应该准确地反映模型输出与目标值之间的差异。随机梯度下降算法[2] (Stochastic Gradient Descent, SGD)及其各种优化算法是训练神经网络的实用方法。但是由于SGD方差较大,收敛速度较慢,为了改善这一问题,许多方法通常在一定时间后计算全梯度以减少方差。例如,随机平均梯度(stochastic average gradient, SAG)算法在每次迭代中计算单个样本的梯度并将其储存起来,然后使用所有存储的梯度的平均值来更新参数,加快收敛速度[3]。随机方差缩减梯度[4] (stochasticvariance reduction gradient, SVRG)算法通过定期计算全数据集上的精确梯度来修正某一个样本或一小批样本的随机梯度,以减少因梯度估计不准确而引入的额外方差。目前已经涌现出许多改进的方差缩减方法,如随机双坐标上升[5] (Stochastic dual coordinate ascent, SDCA)、随机递归梯度[6] (Stochastic Recursive Gradient, SARAH)、半随机梯度下降[7] (Semi-Stochastic Gradient Descent, S2GD)等。文献[8]总结了随机梯度下降–上升(Stochastic Gradient Descent-Ascent, SGDA)方法,并提出SGDA的几种新变体,例如新的方差减少方法(L-SVRGDA)以及一种具有坐标随机化的新方法(SEGA-SGDA)。然而在实际应用中,梯度噪声是一个普遍存在的问题,它指的是由于数据的随机抽样、数据本身的噪声和模型的复杂性等而引入的梯度计算误差。在使用小批量梯度下降法时,每个批次随机选择的样本会导致梯度估计噪声[9]。适当的梯度噪声可以帮助神经网络避免陷入局部最小值或鞍点,促进全局搜索能力,从而可能找到更好的最优解。如果噪声太大或控制不恰当,可能会影响训练过程,使得模型难以收敛,导致性能下降。文献[10]通过研究SGD的梯度噪声,量化了有效梯度噪声的大小,并指出噪声对算法的影响。文献[11]指出随机梯度中的噪声在一定程度上可以增强模型的泛化能力。文献[12]分析了随机梯度噪声的一些常见属性,以及它们如何影响基于SGD的优化。
随机权重平均[13] (Stochastic Weight Averaging, SWA)通过采用修改后的周期性或高常数学习率策略,对梯度下降遍历的模型权重进行尾部平均[14],生成新模型的权重,从而有效提高模型的泛化能力。SWA改进了权重的更新方法,但是并没有对更新后的模型继续训练,也没有直接作用于训练过程中的梯度噪声,因此对加速模型训练过程和提升收敛速度方面几乎没有影响。在之前的研究中,我们提出了一种循环随机权重平均算法(Recurrent Stochastic Weight Averaging, RSWA),循环随机权重平均只是在各个训练周期之间平均模型的权重并继续训练,忽视了同一个训练周期内的各个批次之间的信息差异。因此,针对SWA算法的局限性和RSWA的不足,本文提出循环批量权重平均算法(Recurrent Batch Weight Averaging, RBWA),该算法通过在每个训练周期(epoch)中的各个批次(batch)之间平均使用梯度下降更新的权重,并将平均后的权重作为下一个batch的模型初始权重继续训练,如此循环,直至训练结束。RBWA旨在直接作用于训练过程中的有害梯度噪声,通过循环平均的方式减少它们对权重的影响,优化权重更新的方向。
本文在CIFAR-10和CIFAR-100数据集上分别对VGG-16和ResNet-18模型进行仿真实验,在实验中通过改变批量大小和平均公式对算法性能进行探讨。实验结果表明,循环批量权重平均算法显著加快模型的训练速度和收敛速度,损失值更低且方差更小,在测试集上的准确率具有明显提升,有利于提高模型的泛化能力和鲁棒性。
2. 预备知识
随机权重平均算法
近年来,研究者提出了一种随机权重平均(Stochastic Weight Averaging, SWA)方法[13],并受到了广泛关注。随机权重平均有两层含义,一方面表示它是随机梯度下降生成的权重的平均值;另一方面是指在周期性或恒定的学习率下,随机梯度下降被看成近似地从深度神经网络的损失面采样,从而产生随机权重。与SGD相比,SWA可以显著提高模型的泛化能力,并且没有增加额外的计算开销,也为集成到现有的优化框架提供了便利性。
Figure 1. Stochastic weight averaging algorithm [13]
图1. 随机权重平均算法[13]
在训练的初始阶段,使用常规的SGD或其他变体优化算法,直到SGD接近收敛,然后开始执行SWA策略。此时学习率设置为一个周期性变化的函数或者是一个较高的常数值,重新沿着SGD的轨迹对损失函数
的局部最优解WSGD进行采样,最后执行权重平均操作,该操作输出最优解的平均值WSWA作为最终输出,其中W表示神经网络模型的权重。图1展示了实现SWA的伪代码。
3. 循环批量权重平均算法
由于SWA算法的平均过程并没有直接参与模型的训练过程,且RSWA仅仅只是在训练过程的各个epoch之间进行权重平均和更新,因此,本文提出了循环批量权重平均算法(RBWA),该算法旨在通过对每个训练周期内各个batch之间的权重更新进行平均,并使用平均后的权重继续训练,直接降低梯度噪声的影响。该算法不仅考虑了单个批次内的数据特性,还整合了整个周期内所有批次的累积信息,从而在权重更新过程中引入更多的稳定性和准确性。通过这种方式,RBWA算法能够有效平滑梯度估计,减少因数据随机性和模型复杂性导致的有害噪声,进而提高模型的训练效率和泛化能力。本节将分别介绍使用算术平均时的RBWA和使用指数加权移动平均公式的RBWA (RBWA-E),并探讨了不同的批量大小对算法性能的影响。
3.1. 使用算术平均的循环批量权重平均算法
RBWA从训练初期开始,使用与SGD相同的学习率策略。在每个batch结束时,对使用SGD更新的模型权重W进行采样,然后使用算术平均的更新公式执行权重平均操作,该操作输出WRBWA,并将平均后的权重作为下一个batch的初始权重,继续使用SGD训练。最终输出由WRBWA训练后得到的模型权重W。如此循环往复,直至训练结束,算法的整体流程如图2所示。
Figure 2. Recurrent batch weight averaging algorithm
图2. 循环批量权重平均算法
在算法2中,平均更新公式使用算术平均
(1)
将平均公式展开:
(2)
其中,
是由平均后的权重
通过第j个batch训练后得到的当前模型权重。因此,每个训练批次后的权重都会被加入到平均过程中,平均后的权重都会被更新到当前的模型中继续使用SGD进行训练,如此循环融合权重的更新过程和平均过程,直到训练结束。
实验选用CIFAR-10和CIFAR-100两个广泛使用的计算机视觉数据集,并进行归一化处理。在划分训练集和测试集时使用不同的数据加载器分别加载训练数据和测试数据,使他们为互不可见的数据集,这样在测试泛化性能时,具有跨数据集的效果,更好地检测模型的泛化能力。在CIFAR10数据集上分别比较RBWA与SGD在ResNet-18和VGG-16模型上的测试准确率和损失函数下降曲线,设置数据批量大小为64,训练周期为50个epoch,RBWA从第10个epoch开始执行,随机选取其中一组实验结果如下所示。
由图3可知,在ResNet-18模型上,RBWA的测试准确率为83.36%,SGD的测试准确率为81.98%,测试准确率提升了1.38%;在VGG-16模型上,RBWA的测试准确率为88.82%,SGD的测试准确率为86.31%,测试准确率提升了1.89%。进一步可以看出,在引入RBWA之后,测试准确率迅速增高,并保持稳定。与SGD相比,RBWA的测试准确率在后续迭代中方差更低。
Figure 3. Test accuracy of RBWA and SGD on CIFAR-10
图3. RBWA和SGD在CIFAR-10上的测试准确率
由图4可知,RBWA的损失收敛速度更快且能够达到更低的损失值。在损失函数接近收敛时,RBWA的损失曲线更平稳,方差更低。具体而言,在ResNet-18模型上,RBWA的最终损失值约为0.002,SGD的最终损失值约为0.013;在VGG-16模型上,RBWA的最终损失值约为0.0001,SGD的最终损失值约为0.0076。
Figure 4. Loss function decline curve of RBWA and SGD on CIFAR-10
图4. RBWA和SGD在CIFAR-10上的损失函数下降曲线
因此,RBWA在训练初期就能够起到显著影响,相比于SGD,在ResNet-18和VGG-16模型上都表现出来更优秀的性能。
为了检验RBWA的有效性和适用性,设置数据批量大小为64,在具有更多输出类别的CIFAR100数据集上分别比较RSWA与SGD在ResNet-18和VGG-16模型上的性能,随机选取其中的一组实验结果如下所示。
Figure 5. Test accuracy of RBWA and SGD on CIFAR-100
图5. RBWA和SGD在CIFAR-100上的测试准确率
Figure 6. Loss function decline curve of RBWA and SGD on CIFAR-100
图6. RBWA和SGD在CIFAR-100上的损失函数下降曲线
图5和图6的结果表明,RBWA在难度更大的CIFAR-100数据集上也取得了显著效果。具体而言,在ResNet-18模型上,RBWA的测试准确率为60.33%,损失值约为0.0009,SGD的测试准确率为57.8%,损失值约为0.0016;在VGG-16模型上,RBWA的测试准确率为58.95%,损失值约为0.002,SGD的测试准确率为56.16%,损失值约为0.026。RBWA的测试准确率曲线表现出更高更稳定的准确率,损失下降曲线表现出更快的收敛速度。因此,RBWA有效提高了模型的训练效率和泛化能力。
3.2. 不同批量大小对RBWA的影响
在模型训练过程中,训练集被分成多个较小的批次,每个批次包含一定数量的样本。这些批次用于在每次迭代中计算梯度和更新模型权重。批量大小的选择对权重更新及模型性能有着重要影响。在计算效率方面,较小的批量在GPU上可以提高训练的并行度和资源利用率;较大的批量可以提供更准确的梯度估计,但每次迭代的计算时间可能会更长。在收敛速度和稳定性方面,较小的批量可能导致梯度估计的方差增大,使得收敛速度变慢;较大的批量提供了更准确的梯度方向,但可能会陷入局部最小值。批量大小的选择是一个经验性的过程,需要考虑计算效率、模型收敛性、泛化能力和硬件限制等因素的影响。在CIFAR-10数据集上,保持其他实验设置不变,仅改变批量大小,对ResNet-18进行了多组对比实验,探究不同批量大小对RBWA性能的影响,实验结果如图7所示。
如图7所示,当批量大小为16时,RBWA在ResNet-18模型上的测试准确率为83.76%,损失值约为0.00473;SGD在ResNet-18模型上的测试准确率为82.27%,损失值约为0.01776。因此,相较于SGD,RBWA的测试准确率提升了1.49%,损失值降低了73.4%,损失函数的收敛速度明显加快。
Figure 7. Accuracy and loss function decline curve for ResNet-18 with batch size 16
图7. 批量大小为16,ResNet-18的准确率与损失函数下降曲线
如图8所示,当批量大小为32时,RBWA在ResNet-18模型上的测试准确率为84.25%,损失值约为0.00384;SGD在ResNet-18模型上的测试准确率为82.5%,损失值约为0.0176。因此,相较于SGD,RBWA的测试准确率提升了1.75%,损失值降低了78.2%,损失函数的收敛速度明显加快。
如图9所示,当批量大小为128时,RBWA在ResNet-18模型上的测试准确率为82.55%,损失值约为0.00039;SGD在ResNet-18模型上的测试准确率为82.46%,损失值约为0.00035。因此,相较于SGD,RBWA的测试准确率提升了0.09%,提升效果微弱;损失值虽然略高于SGD,但损失函数的收敛速度明显加快。
如图10所示,当批量大小为256时,RBWA在ResNet-18模型上的测试准确率为80.74%,损失值约为0.00047;SGD在ResNet-18模型上的测试准确率为80.56%,损失值约为0.00038。因此,相较于SGD,RBWA的测试准确率提升了0.18%,损失值略高于SGD,损失函数收敛速度更快。从图7~10可以进一步看出,随着批次样本量的增加,SGD在最后几个周期的结果趋于稳定,达到与RBWA几乎相同的效果。这可能是由于SGD在单次更新时所利用的样本信息更为丰富所导致的,与我们提出RBWA的设想相一致,即利用更丰富的样本信息提升模型效果。
Figure 8. Accuracy and loss function decline curve for ResNet-18 with batch size 32
图8. 批量大小为32,ResNet-18的准确率与损失函数下降曲线
Figure 9. Accuracy and loss function decline curve for ResNet-18 with batch size 128
图9. 批量大小为128,ResNet-18的准确率与损失函数下降曲线
Figure 10. Accuracy and loss function decline curve for ResNet-18 with batch size 256
图10. 批量大小为256,ResNet-18的准确率与损失函数下降曲线
将图7~10输出模型的准确率和损失值整理成表格形式,如表1所示。
Table 1. Effects of different batch sizes on RBWA test accuracy and loss
表1. 不同批量大小对RBWA测试准确率和损失的影响
Batch size |
SGD |
RBWA |
Accuracy |
Loss |
Accuracy |
Loss |
16 |
82.27% |
0.01776 |
83.76% |
0.00473 |
32 |
82.5% |
0.01760 |
84.25% |
0.00384 |
64 |
82.31% |
0.01283 |
83.36% |
0.00209 |
128 |
82.46% |
0.00035 |
82.55% |
0.00039 |
256 |
80.56% |
0.00038 |
80.74% |
0.00047 |
综上所述,对于不同的批量大小,相较于SGD,RBWA都能加速损失函数收敛,提高训练效率,并且能提高训练过程中的模型测试准确率。然而,RBWA训练结束时的最终性能受到SGD最终性能的影响,特别是当批量大小为128或256时,RBWA训练结束时的最终性能受到的影响最为严重。在CIFAR-10数据集上,对ResNet-18模型使用RBWA方法的最优批量大小为32。
3.3. 使用指数加权移动平均的循环批量权重平均
在图2中,算法2的平均更新公式只使用了简单的算术平均。为了增强时效性,减少早期权重对模型的影响,在平均过程中可以使用指数加权移动平均(Exponential Weighted Moving Average, EWMA) [15]更新权重。在神经网络的训练过程中,EWMA常用于平滑损失函数的曲线或者调整学习率(如Adam优化算法)。与简单的算术平均不同,EWMA在计算当前平均值时为最近的观测值分配更高的权重,而对比较旧的数据则分配递减的权重。这种指数衰减的加权机制使得EWMA能够更加灵敏地反映数据的最近变化,同时还保持一定程度的平滑效果,减少随机波动的影响。EWMA的计算公式为:
(3)
其中,
,
,
是在时间点t的指数加权移动平均值,
是在时间点t的实际观测值,β是衰减因子,用于控制历史观测值的权重衰减速度。衰减因子越接近1,历史数据的影响就越大,平滑效果就越强;反之,衰减因子越小,最近的数据影响就越大,从而更能反应最新的变化趋势。
在算法2中,平均更新公式使用指数加权移动平均公式
(4)
当
时,将公式(4)展开:
(5)
其中,
是由平均后的权重
通过第j个batch训练后得到的当前模型权重。在指数加权移动平均的的处理过程中,通过对历史权重以指数级别的衰减,使得模型在训练过程中能够更加平滑地调整其权重,在一定程度上避免了由于数据中的高频噪声或异常值导致的剧烈波动。它不仅有效减小计算过程中的梯度噪声,还增强了模型对新数据的敏感度。通过指数移动加权平均,RBWA能够在累积的历史权重和当前的模型权重之间找到合适的平衡,从而优化整体的学习路径。
在CIFAR-10数据集上对SGD和RSWA-E在ResNet-18和VGG-16模型上的性能表现进行对比实验,批量大小为32,训练周期为50个epoch,RBWA-E从第10个epoch开始执行,保持其它实验设置完全一致。在实验结果中随机抽选一组,结果如下所示。
Figure 11. Test accuracy of RBWA-E and SGD on CIFAR-10
图11. RBWA-E和SGD在CIFAR-10上的测试准确率
Figure 12. Loss function decline curve of RBWA-E and SGD on CIFAR-10
图12. RBWA-E和SGD在CIFAR-10上的损失函数下降曲线
由图11和图12可知,RBWA-E在ResNet-18和VGG-16模型上的准确率分别达到了83.68%和88.42%,相比于SGD提升了2%左右。RBWA-E还有利于加快损失函数收敛速度,并最终收敛到损失更低、方差更小的最优解,在一定程度上提高模型的泛化能力和鲁棒性。
4. 与SWA算法的测试准确率对比
在CIFAR-10数据集上,对ResNet-18模型分别使用RBWA、RBWA-E和SWA方法进行实验,对比模型在测试集上的准确率。实验中,批量大小为32,训练周期为50个epoch,RBWA、RBWA-E和SWA都从第10个epoch开始执行,保持其他实验设置完全一致。结果如图13所示。
Figure 13. Comparison of test accuracy of RBWA, RBWA-E and SWA
图13. RBWA、RBWA-E和SWA的测试准确率对比
图13结果表明,相较于SGD,RBWA和RBWA-E在训练初期都能显著提高测试准确率,在训练结束时的测试准确率也明显高于SWA。SWA方法并不影响模型的训练过程,而RBWA和RBWA-E方法能显著提升损失函数收敛速度并增强模型更新过程的鲁棒性。因此,RBWA和RBWA-E比传统的SGD和SWA方法,对模型的泛化能力和鲁棒性的影响更显著。
5. 总结
本文针对随机权重平均算法和循环随机权重平均优化算法的局限,提出了基于梯度下降的循环批量权重平均优化算法。该算法通过在每个训练周期内平均各个批次之间的权重并更新,有效减少由于小批量数据随机性引入的梯度噪声,从而使得梯度下降过程更加平稳。实验结果表明,与传统方法相比,RBWA可以显著加快模型的训练过程,对损失函数的收敛速度有显著提升并且收敛到损失更小、方差更低的最优解。此外,在测试集上,使用RBWA方法的模型表现出更高的准确率,这表明该算法能够提高模型的泛化能力。RBWA方法没有明显增加额外的计算开销,有利于集成到现有的优化框架中,提高了其在不同模型中的适用性。
虽然实验结果表明RBWA的效果优于SGD和SWA,但是我们仍然缺乏理论支持,并且可能不总是适用于所有的深度神经网络任务。因此,未来的研究工作需要进行更多的理论和算法研究,并对更多不同类型和规模的深度神经网络任务进行广泛的训练和实验评估。这不仅能够帮助评估本文算法的适用性和局限性,也能有助于揭示算法在不同任务和数据集上的性能表现差异。此外,通过深入探索算法在各类任务中的应用效果,可以进一步优化和调整算法的设计,以适应更广泛的应用场景。
NOTES
*通讯作者。