核心集:DeepCore: A Comprehensive Library for CoresetSelection in Deep Learning
目录
一、TL;DR
二、为什么研究核心集?
三、问题定义和如何做
3.1 问题定义
3.2 业界方法
3.2.1 基于几何的方法
3.2.2 基于不确定性的方法
3.2.3 基于误差/损失的方法
3.2.5 GraNd 和 EL2N 分数
3.2.6 重要性采样
3.2.7 基于决策边界的办法
3.2.8 基于梯度匹配的方法
四、综述-应用(直接翻译)
4.1 数据高效学习
4.2 持续学习
4.3 主动学习
五、DeepCore的库能力和bechmark
5.1 为什么要提出DeepCore
5.2 DeepCore实现了什么coreset算法
5.3 CIFAR10的benchmark
5.4 Imagenet的benchmark
5.5 跨架构的benchmark(模型无关性)
一、TL;DR
-
核心集的目的是选择最具信息量的训练子集,但之前的coreset选择方法不是为了深度学习设计的,会导致效果差
-
作者贡献了deepcore的工具,集成了最近很多关于深度学习的核心集选择方法
-
在Imagenet/cifar10等数据集上验证,结论如下:
-
在CIFAR10数据集上,基于次模函数的方法在小核心集<1%时表现最佳,比其他方法高出5%以上。
-
在ImageNet数据集上,基于误差的方法(如遗忘和GraNd)在小核心集(少于10%)时表现较好。
-
当核心集大小增加到30%以上时,随机选择成为了一个强大且稳定的基线,大多数方法难以超越。
-
二、为什么研究核心集?
- NN化的规模越来越大,训练数据集也在不断扩展,这需要大量的内存和计算资源才能达到最先进的性能,核心集的选择能够极大的降低计算成本,其目标是从给定的大型训练数据集 T 中选择一个最具信息量的小型训练样本子集 S。在核心集上训练的模型,其泛化性能应与在原始训练集上训练的模型相近。
- 之前的传统的核心集选择方法在NN领域上是否work不太确定
- 作者使用deepcore这个库继承了12种核心集的选择方法
三、问题定义和如何做
3.1 问题定义
在学习任务中,我们给定一个大型训练集 T={(xi,yi)}i=1∣T∣,其中 xi∈X 是输入,yi∈Y 是 xi 的真实标签,X 和 Y 分别表示输入空间和输出空间。核心集选择的目标是找到一个最具信息量的子集 S⊂T,满足 ∣S∣<∣T∣,使得在 S 上训练的模型 θS 与在完整训练集 T 上训练的模型 θT 具有相近的泛化性能。
3.2 业界方法
3.2.1 基于几何的方法
假设在特征空间中彼此接近的数据点倾向于具有相似的属性。因此,基于几何的方法试图移除那些提供冗余信息的数据点,剩下的数据点形成一个核心集 S,其中 ∣S∣≪∣T∣。
- Herding:Herding 方法根据核心集中心与原始数据集中心在特征空间中的距离选择数据点。该算法逐步且贪婪地每次向核心集中添加一个样本,以最小化两个中心之间的距离。
- k-Center Greedy:该方法试图解决最小最大设施选址问题,即从完整数据集 T 中选择 k 个样本作为 S,使得 T∖S 中的数据点与其在 S 中最近的数据点之间的最大距离最小化:
其中 D(⋅,⋅) 是距离函数。该问题是 NP-hard 的,文献中提出了一个称为 k-Center Greedy 的贪婪近似算法。k-Center Greedy 已成功扩展到广泛的应用场景,例如主动学习和高效的 GAN 训练。
3.2.2 基于不确定性的方法
置信度较低的样本可能对模型优化的影响大于置信度较高的样本,因此应包含在核心集中。以下是给定特定分类器和训练周期时常用的样本不确定性度量,其中 C 是类别数量:
最后根据这个分数来对降序选择样本
3.2.3 基于误差/损失的方法
在数据集中,对训练神经网络的误差或损失贡献更大的训练样本更为重要。可以通过每个样本的损失或梯度,或其在模型训练过程中对其他样本预测的影响来衡量重要性。选择重要性最大的样本作为核心集。
3.2.4 遗忘事件
Toneva 等人统计在训练过程中遗忘发生的次数,即在当前周期中对样本的误分类,而在前一个周期中已正确分类,形式上为 accti>accti+1,其中 accti 表示样本 i 在周期 t 时预测的正确性(真或假)。遗忘的次数揭示了训练数据的内在属性,允许移除那些难以遗忘的样本,以最小的性能下降。
3.2.5 GraNd 和 EL2N 分数
样本 (x,y) 在周期 t 的 GraNd 分数定义为:
它衡量了每个样本在早期周期 t 对训练损失下降的平均贡献,并且在几次不同的独立运行中。在早期训练阶段(例如,几个周期后)计算的分数效果良好,因此这种方法的计算成本较低。还提供了一种 GraNd 分数的近似值,称为 EL2N 分数,它衡量误差向量的范数:
3.2.6 重要性采样
在重要性采样(或自适应采样)中,我们定义 s(x,y) 是数据点 (x,y) 对总损失函数的上界(最坏情况)贡献,即敏感度分数。它可以表示为:
其中 L(x,y) 是具有参数 θ∈Θ 的非负成本函数。对于 T 中的每个数据点,被选中的概率设置为 p(x,y)=∑(x,y)∈Ts(x,y)s(x,y)。根据这些概率构建核心集 S。在黑箱学习器和 Jtt中也提出了类似的想法,其中错误分类的样本将被加权或增加其采样概率。
3.2.7 基于决策边界的办法
由于分布在决策边界附近的数据点难以区分(百度的数据挖掘核心理念之一),因此,那些最接近决策边界的点也可以被用作核心集。
对抗性 DeepFool:尽管无法获取到确切的决策边界距离,但 Ducoffe 和 Precioso试图在输入空间 X 中寻找这些距离的近似值。通过对样本施加扰动,直到样本的预测标签发生改变,那些需要最小对抗性扰动的数据点最接近决策边界。
对比主动学习:为了找到决策边界附近的数据点,对比主动学习(Contrastive Active Learning, CAL)选择那些预测似然与邻居差异最大的样本,以构建核心集。
3.2.8 基于梯度匹配的方法
四、综述-应用(直接翻译)
4.1 数据高效学习
核心集选择的基本应用是实现高效的机器学习。在核心集上训练模型可以在保留测试性能的同时降低训练成本。特别是在神经架构搜索(NAS)中,需要训练并评估成千上万甚至数百万个深度模型,且这些模型都在同一数据集上进行评估。核心集可以作为代理数据集,高效地训练和评估候选模型,从而显著降低计算成本。
4.2 持续学习
核心集选择也是构建持续学习或增量学习记忆的关键技术,用于缓解灾难性遗忘问题。在流行的持续学习设置中,维护一个记忆缓冲区以存储来自先前任务的信息量大的训练样本,以便在未来的任务中进行复习。研究表明,持续学习的性能在很大程度上依赖于记忆的质量,即核心集。
4.3 主动学习
主动学习旨在通过从未标记池 P 中选择信息量大的样本进行标记,以最小的查询成本实现更好的性能。因此,它可以被视为一个核心集选择问题。
除了上述应用之外,核心集选择还在许多其他机器学习问题中得到研究并成功应用,例如对抗噪声的鲁棒学习、聚类、半监督学习、无监督学习、高效的 GAN 训练、回归任务等。
五、DeepCore的库能力和bechmark
5.1 为什么要提出DeepCore
核心集选择方法已在不同的实验设置下被提出并测试,这些设置包括数据集、模型架构、核心集大小、数据增强、训练策略等。但是相互之间比较不太公平,有的是在MNIST,有的是在Imagenet、即使数据集一样,不同的paper用的数据增强等策略也不一样,因此提出deepcore,在同一个维度上比较。
5.2 DeepCore实现了什么coreset算法
根据第三节实现了如下的方法:
-
基于几何的方法:上下文多样性(Contextual Diversity, CD)、Herding和k-Center Greedy。
-
基于不确定性的方法:最低置信度(Least Confidence)、熵(Entropy)和边缘(Margin)。
-
基于误差/损失的方法:遗忘(Forgetting)和GraNd。
-
基于决策边界的方法:CAL和DeepFool。
-
基于梯度匹配的方法:Craig和GradMatch。
-
双层优化方法:Glister。
-
基于次模性的方法:图割(Graph Cut, GC)和设施选址(Facility Location, FL)函数。 我们还将随机选择(Random selection)作为基线。
5.3 CIFAR10的benchmark
实验和超参数设置
-
优化器:使用随机梯度下降(SGD)作为优化器,批大小为128,初始学习率为0.1,采用余弦退火调度器,动量为0.9,权重衰减为 5×10−4,训练周期为200轮。
-
数据增强:对32×32的训练图像应用随机裁剪(4像素填充)和随机翻转。
-
核心集比例:分别选择整个训练集的0.1%、0.5%、1%、5%、10%、20%、30%、40%、50%、60%和90%作为核心集。
-
全数据集训练:在完整数据集上的训练结果被视为性能的上限。
-
特征提取:对于需要样本梯度、预测概率或特征向量的方法,使用在完整数据集上训练了10轮的ResNet-18模型来提取上述指标。当需要梯度向量 ∇θL(x,y;θ) 时,使用最终全连接层的参数梯度,如许多先前研究所建议的那样。这使得梯度向量可以在不进行全网络反向传播的情况下轻松获得。
-
样本选择:虽然DeepCore支持平衡和不平衡的样本选择,但本文的所有实验均采用平衡选择,即每个类别选择相同数量的样本。
-
次模函数方法的优势:在小比例(0.1%-1%)和大比例设置中,基于次模函数的方法均取得了良好的实验结果。特别是图割(Graph Cut, GC)方法表现突出,在选择0.1%到10%的训练数据时取得了最佳结果。当每类选择50个样本时(即整个训练集的1%),图割方法在测试精度上比其他方法高出超过5%。CAL方法在0.1%-5%的小比例设置中也表现出色,性能与设施选址(Facility Location, FL)相当。然而,随着核心集大小的增加,尤其是在选择超过30%的训练数据时,其优势逐渐消失。
-
其他方法的表现:除了上述方法外,其他方法在0.1%-1%的小比例设置中均未能超越随机采样基线。遗忘(Forgetting)方法在30%比例设置中表现优于其他方法。在40%-60%的比例设置中,GraNd和基于不确定性分数的方法表现突出。在所有比例设置中,GradMatch和Herding仅勉强超过随机采样。需要注意的是,GradMatch在原始论文中的实验设置是自适应采样,即随着网络训练的进行迭代更新子集。为了进行公平比较,本文在选择核心集后将其固定用于所有训练周期。Herding最初是为从高斯混合中提取的固定表示而设计的,因此其性能在很大程度上取决于嵌入函数。需要注意的是,上述发现是基于一种超参数设置的,如果超参数发生变化,发现的结果可能会改变。例如,如果用于特征提取的模型完全训练,Herding可能会有更好的表现。我们将在后面研究一些超参数的影响。
5.4 Imagenet的benchmark
实验结果如表2(Tab. 2)所示。结果显示,基于误差的方法,如遗忘(Forgetting)和GraNd,在ImageNet上通常表现更好。特别是,当选择少于10%的数据作为核心集时,遗忘方法明显优于随机选择(Random)。然而,当核心集的大小较大时(例如选择30%的数据),没有任何方法能够超越random。random仍然是一个强大且稳定的基线。
5.5 跨架构的benchmark(模型无关性)
为了检验表现良好的方法是否具有模型无关性,即当在一种架构上选择核心集,然后在其他架构上进行测试时,核心集是否仍然表现良好。
结论:使用图割进行的次模选择在测试结果上表现稳定良好;GraNd显示出对计算梯度范数的模型的偏好,resnet和Inception存在差异;