Can we learn better with hard samples?


摘要:

        在深度学习中,通常采用小批量训练来优化网络参数。然而,传统的小批量方法可能无法学习到数据中未充分表示的样本和复杂的模式,导致泛化时间较长。为了解决这一问题,提出了一种传统算法的变体,该算法将训练网络集中在损失较大的小批量上。该研究使用在三个基准数据集(CIFAR-10、CIFAR-100和STL-10)上训练的各种深度神经网络来评估所提议的训练的有效性。研究中使用的深度神经网络有ResNet-18、ResNet-50、EfficientNet B4、EfficientNetV2-S和MobilenetV3-S。实验结果表明,与传统的小批量训练方法相比,该方法可以显著提高测试精度,加快收敛速度。此外,我们引入超参数delta()来决定有多少个小批量被考虑用于训练。对不同δ值的实验发现,对于较小的δ值,该方法的测试精度基本一致,泛化速度较快。在STL-10上,我们证明了所提出的方法比传统的高效网络b4中的小批量方法少了26.47%的时间周期。该方法在CIFAR-100上的ResNet-18测试中,top-1准确度提高了7.26%。

介绍:

        多年来,深度神经网络(dnn)在许多表示学习任务中表现突出。反向传播算法是训练神经网络的首选方法。反向传播算法允许多层神经网络学习输入和输出之间的复杂表示。它克服了感知器等神经网络学习线性可分向量的局限性。本质上,数据越复杂,需要的反向传播就越多。深度学习领域已经从使用简单的人工神经网络学习简单的线性表示,发展到使用变压器学习高度复杂的细粒度表示,所有这些都使用反向传播。

反向传播算法:深度学习 | 反向传播详解 - 知乎

[5分钟深度学习] #02 反向传播算法_哔哩哔哩_bilibili

        神经网络中的反向传播算法可以批量应用(批量梯度下降),对每个样本(随机梯度下降)甚至小批量应用(小批量梯度下降)。在批量梯度下降算法中,反向传播是在数据集所有样本的梯度的平均值上完成的。泛化需要大量的计算时间。随机梯度下降(SGD)算法在每次迭代中使用一个样本来计算梯度和更新权值。然而,SGD可能永远不会产生全局最小值,并且网络可能不会收敛,因为梯度可能会卡在局部最小值。Minibatch梯度下降解决了这些问题,一个mini-batch由固定数量的小于实际数据集大小的训练示例组成。因此,在每次迭代中,网络都在不同的批次上进行训练,直到使用数据集中的所有样本。小批量梯度下降法比批量梯度下降法具有更快的推广速度和更小的陷入局部最小的机会。硬样本是在整个数据集中可能没有得到充分表示的样本,或者可能具有复杂的表示,可能需要更多的迭代来学习。与数据集中的其他样本相比,这些样本可能需要更高的权重。这样的样品在反向传播后通常会导致更高的损失值。其中最流行的算法方法分配权重的硬样本是focal loss。focal loss的问题在于它有一个在训练之前确定的α和γ超参数。

        虽然反向传播算法使神经网络能够学习复杂的表示,但学习数据中的硬样本仍然是一个挑战。无法从数据集中学习硬样本的代价导致收敛速度较慢。此外,神经网络往往具有可减少的误差,即偏差和方差。一个众所周知的解决方案是增加网络的深度,从而提高网络的泛化和学习更精细、更复杂的潜在表示的能力。从数据中的硬样本中学习是必要的,因为它可以提高训练后的网络的性能。从文献中可以看出,深度神经网络减少了方差和偏差,通常收敛速度更快。近年来,神经网络已经变得过度参数化,以克服诸如可减少误差等局限性。因此,研究提高神经网络泛化能力的方法具有重要意义。

        在本文中,作者提出了小批量训练方法的一种变体,重点是学习数据集中的硬样本。它的目的是帮助神经网络更快地收敛,并且相对于传统训练方法,测试精度的变化最小。所提出的方法背后的直觉是以下观察:在准备考试时,与简单的概念相比,学生往往会花更多的时间关注困难的概念。所提出的方法引入了一个新的超参数 δ,它选择一小部分小批量,这些小批量被视为训练过程中下一次迭代的硬小批量。作者将硬小批量定义为按损失值非递增顺序排列的小批量。对于选择一个mini-batch的过程,δ可以从(0, 1]中取值,其中1对应于选择所有mini-batch。例如δ值0.2,0.5,0.8,1对应于选择20%、50%、80% 和 100% 的小批量,按照损失值非递增顺序排列,用于下一次训练迭代。图 1 显示,不同的 δ 值有助于 CIFAR 上的 ResNet 18 [14] 更快收敛-10 数据集。与传统训练方法相比,在 δ = 0.2 的情况下,所提出的方法在相同数量的反向传播下实现了 9.58% 的更快收敛。

相关工作: 

表征学习:

        表征学习的主要挑战之一是设计有效的算法,可以从高维数据中学习有意义的表示。深度学习是最流行的表示学习方法,涉及训练深度神经网络以从原始数据中提取层次和抽象特征。深度学习在许多计算复杂的任务中取得了最先进的成果,例如图像识别、语音识别和自然语言处理。

        训练神经网络的早期突破之一是反向传播算法,后来在强调通过反向传播学习表示的工作中得到普及。在训练神经网络的每一步中,都有两次传递,一次前向传递用于预测样本集上的误差,一次反向传递(反向传播)用于根据误差的梯度更新网络的权重。反向传播表明,过度参数化网络(例如深度卷积神经网络和自动编码器)可以以最小的误差收敛于训练集。然而,由于其过度参数化的性质,这些模型原则上有能力过度拟合任何标签集,包括纯噪声。为了控制学习率,优化器(例如带有动量 、Nesterov 动量、Adam [21]、Lamb [51] 的 SGD 以及学习率调度器(例如 Step Learning Rate (LR) [20]、Cosine LR)使用[29]。学习率、小批量大小和训练迭代次数都是训练过程中预定义的超参数。超参数调整(HPT)是一种寻找最佳超参数集进行训练和测试深度神经网络以实现更好收敛的策略[50, 52]。然而,并没有做太多改变,重点是硬样本来训练网络以实现更快的收敛。

        数据驱动的方法。数据驱动的方法关注数据的质量,而不是关注模型的新颖性[25]。一些流行的数据驱动方法包括数据增强 [30, 41]、特征工程 [37]、采样 [19] 和数据标准化 [43]。这些方法通常侧重于提高数据集的质量、数据转换和增加数据集的大小。据作者所知,文献中没有一种方法侧重于动态选择样本或小批量数据进行训练。

方法:

          目前采用的小批量训练神经网络的传统方法由两个超参数定义,即历元数 E 和批量大小 B。历元数 E 定义为网络将遍历整个数据集的总次数。批量大小 B 是每次迭代中要传播到网络(以小批量)的数据集的样本数量。对于训练网络的过程,使用训练数据集DT,并且为了评估学习的网络,使用测试数据集Dt。在标准基准数据集的情况下,假设 DT 和 Dt 的分布是相似的。 DT 包含 N 个大小为 B 的小批量,Dt 包含相同批量大小 B 的 M 个小批量。数据集表示为 DT = {(xi,yi)}\tfrac{N-1}{i=0} 且 Dt = {( xi, yi)} \tfrac{M-1}{i=0},其中 x 表示小批量图像,y 表示小批量标签,大小均为 B。单次迭代对应于处理一个小批量样本。

传统训练方法:

         小批量 SGD 训练是训练神经网络的最常见方法。在小批量 SGD 中,对于每个时期,总共 N 个小批量在 N 次迭代中传播到网络。具体来说,在每次迭代中,数据集 DT 中的一个大小为 B 的小批量被传递到网络进行反向传播。

        损失函数 L 在前向传递过程中对每个小批量进行计算,然后对每个小批量进行反向传播。工作流程如图 2 左侧面板所示。在损失 L 被反向传播并且训练数据集的权重更新 N 次之后,所得的学习权重用于在测试数据集 Dt 上验证网络。在测试阶段,网络的权重不变,仅用于M个小批量的预测。训练和测试指标分别在 M 和 N 个小批量上取平均值。

        算法1中反向传播的总数为(N×E),等于迭代次数和前向传播次数。

        总而言之,传统的小批量训练方法更新权重 N × E 次,每个时期更新一次,如式(1)所示。 1 等于训练迭代的总数。 

        现有小批量训练方法(左)和提出的方法(右)的概述。在现有方法中,N 个小批量在 E 个时期内迭代训练,对于代表性不足的小批量并不重要。在所提出的方法中,具有高损失的(δ×N)小批量在迭代中进行训练,相当于与传统小批量方法相同的迭代。 ζ 表示按损失降序排序后重复选择 (δ ×N) 个小批量的过程的次数。

提出的训练方法:

        所提出的训练方法侧重于通过新的超参数 δ 来学习整个数据集上的硬样本,该参数表示要考虑进行反向传播的小批量的比例。在所提出的方法中,在 DT 的 N 个小批量中,每次迭代中仅选择性地训练 δ ×N 个小批量。由于 δ ∈ (0, 1], (δ × N) ≤ N, ∀N,模型需要在网络上训练 (E − 1)/δ 次,以确保网络接受相同数量的权重训练一个 epoch 内训练硬样本的次数称为 zeta (ζ),如方程 2 所示。步骤如算法 2 所示。

         网络最初在数据集中的 N 个小批量上训练一次,以形成一对小批量 bi 及其相应的损失 Li,这些对存储在空间复杂度为 O(N) 的 List 中。该列表可以表示为 {(bi, Li)}_{i=0}^{N-1}\textrm{}。这些对中的 Li 在每次反向传播重复 ze 次后更新,然后进行排序。对列表进行排序的平均时间复杂度为 O(N × logN)。

        N 个小批量按损失 Li 的降序排序。已排序小批量对的顺序称为 (b' i, Li),其中 b' i 是选择用于训练的 (δ × N) 个已排序小批量中的第 i 个小批量。这些小批量的损失 L 被反向传播到网络。这个过程重复 ze 次,如方程式 1 所示。 2和3。

        我们在算法2中反向传播的次数是 

        因此,算法 2 中的反向传播总数为 (N × E),等于标准算法 1 中的反向传播次数。所提出的方法侧重于每 ze 个最难的 (δ ×N) 小批量次。直观地说,所提出的方法针对每个数据集中的硬样本,并对它们进行更多训练以更快地收敛。然而,传统的小批量训练方法并不专注于训练数据集中代表性不足的样本,这导致了更多的训练迭代次数。 

实验:

        该代码库基于机器学习框架 PyTorch [35] 构建,使用 timm 深度学习库 [49](训练分类模型的标准)。所有实验均在具有 40GB NVIDIA A100 GPU 的 Linux 机器上进行。为了训练网络,使用的损失函数是交叉熵损失[54],优选具有动量的优化器 SGD 而不是 Adam,如工作[55]中所述,初始学习率为 0.005,动量为 0.9,并且小批量大小为 512。选择较大的批量大小可有效利用可用的 GPU RAM。

        已报告了 95% 置信区间的平均 top-1 准确度。传统的小批量训练有(E×N)次迭代,而在所提出的训练方法中,总共有N+(ζ×δ×N)次迭代。因此,我们在传统的小批量方法和所提出的方法中经过相同数量的反向传播后评估指标。因此,传统方法和所提出方法的指标分别在每 N 次迭代和 1/δ 后进行评估。我们比较了测试 top-1 准确性的泛化。同样,我们也相应地根据训练损失的收敛性来比较网络。在简单的设置下进行消融,以更好地了解比较网络的性能,并表明所提出的方法可以扩展到各种领域任务。

结果和消融:

        为了在众所周知的基线网络上评估所提出的方法,作者选择了五个网络,即 ResNet-18、ResNet-50、Efficient Net B4、Efficient Net V2 Small 和 Mobilenet V3。为了进行有效比较,选择的网络具有更广泛的参数数量,范围从 1.52M 到 23.52M,如表 2 所示。

        表 3、表 4 和表 5 显示了在 CIFAR-10、CIFAR-100 和 STL-10 数据集上传统小批量训练(δ = 1)与 δ 值为 0.2、0.5 和0.8 适用于多种网络架构。该表包括训练和测试 top-1 准确率百分比、网络训练损失收敛的历元,以及收敛历元相对于 δ = 1 的百分比变化 (Δe)。正 Δe 值表示增加Δe 为负值表示收敛速度下降。 

        根据表 3,可以观察到 CIFAR-10 上网络的性能根据网络架构和训练期间使用的 δ 值而变化。一般来说,减小 δ 的值会导致更快的收敛和潜在相似的泛化性能。在 δ = 1 和其他 δ 值之间的测试精度中可以观察到性能变化。 

        例如,在 ResNet-18 中,将 δ 从 1.0 减小到 0.2 会导致收敛时间减少 8.01%,但测试精度仅下降 0.9%。然而,这种趋势在所有网络中并不一致,因为将 δ 从 1.0 减小到 0.2 实际上会导致 EfficientNet B4 的测试精度提高。还值得注意的是,不同的网络架构具有不同的性能特征,如不同网络之间的 top-1 测试精度和收敛时间的差异所示。例如,EfficientNet B4 在所有 δ 值上具有最低的 top-1 测试精度,而 ResNet-18 在 δ = 1.0 和 0.8 时具有最高的 top-1 测试精度。总体而言,网络架构和 δ 值的选择将取决于具体应用以及训练时间和泛化性能之间的权衡。

        对于 CIFAR-100,表 4 中的结果表明,与传统的小批量训练相比,所提出的具有较小 δ 值(0.2 和 0.5)的方法可以实现更好的测试 top-1 精度和更快的收敛速度。对于所有网络,将 δ 值减小到 0.2 会导致更快的收敛时间。另一方面,像 EfficientNet 和 Mobilenet 这样的大型网络在收敛时间上显示出相当大的改进。与其他网络相比,Mobilenet 的性能似乎较差。这可能是由于网络中的参数数量较少。

        表 5 显示了在 STL-10 数据集上获得的结果。 ResNet 模型和 Efficient Net B4 的模型收敛速度确实更快。可以注意到,与其他 δ 值相比,δ = 0.5 收敛得更快。从 CIFAR-10 和 CIFAR-100 结果来看,δ = 0.2 时收敛速度最快。然而,可以观察到,对于 STL-10,δ = 0.5 比 δ = 0.2 收敛得更快。作者推测这可能是由于 STL-10 数据集较小,导致小批量数量较少。还可以注意到,Mobilenet 上的结果是微不足道的。 

        图 3、图 4 说明了 ResNet-18 网络在 CIFAR-10 和 CIFAR-100 上分别针对不同 δ 值的训练和测试精度的推广。在这两张图中,可以观察到 δ = 0.2 时所提出的方法比所有其他 δ 值更快地达到泛化速度。

        在表 6 中,在所有三个数据集上评估的所有网络都与彼此的最佳概括测试精度进行了比较。可以看出,该方法在 15 个案例中的 8 个中表现更好,传统小批量训练与该方法之间的差异平均增加了 3.542%。表现最好的实验是 CIFAR-100 上的 ResNet-18,增长了 7.26%。

        从表3、表4、表5可以看出,减小所提出方法中的δ值可以提高大多数测试网络架构在不同数据集上的测试精度并加快收敛速度​​。与传统小批量训练 (δ = 1) 相比,较小的 δ 值(0.2 和 0.5)通常会带来更好的测试精度和更快的收敛速度。然而,值得注意的是,δ 的选择可能取决于小批量的总数,因为与 STL-10 相比,CIFAR-10 和 CIFAR-100 具有更多的小批量。因此,对于 CIFAR-10 和 CIFAR-100 数据集,δ = 0.2 收敛得更快,而 δ = 0.5 在 STL-10 数据集中收敛得更快。此外,在测试结果中,具有更多参数的较大网络(例如 EfficientNet)比 Mobilenet 表现更好。因此,需要平衡模型选择、根据网络架构的δ值和数据集的选择,以达到最佳性能。

总结:

        综上所述,本研究提出了一种新的小批量训练方法,该方法通过引入一个新的超参数来利用更小的批量。该方法为硬样本训练神经网络提供了一种新的思路。该方法经过CIFAR-10、CIFAR-100和STL-10数据集的训练和验证。研究中使用的网络是ResNet-18、ResNet-50、EfficientNet B4、EfficientNetV2-S和MobilenetV3-S。该方法可应用于任何神经网络训练,并可扩展到各种任务,其中包括反向传播,以提高泛化和更快的收敛速度。我们的研究结果表明,δ值的选择应该根据网络架构、小批量和数据集的数量谨慎地进行平衡,以实现更快的收敛和可观的性能。

        该工作为利用反向传播进行训练深度学习网络提供了一个新的视角。虽然在收敛方面有改进,但不能保证模型能提高性能。•所提出的方法假设样本的独立性,这可能在一些数据集中不存在,如时间序列、3D图像或视频。•所提出的方法仅针对分类任务进行了研究。从局限性来看,未来的工作方向将集中于改进所提出的算法,将工作扩展到包含依赖数据,并探索将该任务应用于其他任务,如对象检测、分割等。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值