还在困惑需要多少数据吗?来看看这份估计指南 | CVPR 2022

cvpr · 浏览次数 : 54

小编点评

本文针对数据需求预测问题提出了一种新的方法,通过实验验证了该方法的有效性。文章首先介绍了数据需求预测的重要性,并指出了现有方法的不足。接着,文章系统地研究了多种回归函数,发现它们在模型性能估计方面具有较高的准确性。然后,文章提出了结合校正因子的多轮数据收集方案,以解决数据需求预测中的低估问题。最后,文章通过实验验证了所提方法的有效性,并给出了数据需求估计的上下界,为实际应用中的数据收集提供了有益的指导。 1. **背景介绍**: - 数据需求预测在自动驾驶和医学成像等领域具有重要意义。 - 现有方法在预测数据需求时存在误差,可能导致不必要的数据收集和成本增加。 2. **研究方法**: - 文章研究了包含Power Law在内的多个回归函数,以更好地估计数据需求。 - 通过实验,发现多个回归函数都非常适合模型性能估计,没有唯一的最佳回归函数。 3. **校正因子方案**: - 提出了一种结合校正因子的多轮数据收集方案。 - 通过拟合校正因子,可以解决数据需求预测中的低估问题。 4. **实验验证**: - 实验结果表明,所提出的方法可以有效估计数据需求。 - 使用校正因子和多轮数据收集方案,可以显著提高数据需求估计的性能。 5. **数据需求估计的上界和下界**: - 通过实验,得出数据需求估计的上界和下界。 - 上下界可以帮助建模者根据实际需求灵活地收集数据。 总的来说,本文通过实验验证了所提出的数据需求预测方法的有效性,并为实际应用中的数据收集提供了有益的指导。

正文

论文基于实验验证,为数据需求预测这一问题提供了比较有用的建议,详情可以直接看看Conclusion部分。

来源:晓飞的算法工程笔记 公众号

论文: How Much More Data Do I Need? Estimating Requirements for Downstream Tasks

Introduction


  给定一个小的训练数据集和一个学习算法,需要多少数据才能达到目标性能?这个问题在自动驾驶或医学成像等数据收集难的场景中至关重要。高估数据需求可能会因不必要的收集、清理和标注而产生成本,而低估意味着必须在后期收集更多数据,导致未来成本和工作流程延迟。

  最近提出的neural scaling laws的相关工作表明,Power Law函数可以基于已有数据集拟合模型性能曲线,这也意味着能够将其应用到目标性能的数据需求预测中。

  论文对多个函数进行性能拟合发现,如图1所示,当使用小数据集进行预测时,拟合函数可能会以不同的方式偏离实际的性能曲线。更重要的是,即使是预测精度的小误差也会导致高估或低估数据需求的大误差,这可能会带来巨大的运营成本。

  为此,论文基于多个计算机视觉任务,系统地研究了包含Power Law在内的一系列回归函数,以便更好地估计数据需求。实验结果表明,多个回归函数都非常适合模型性能估计,这意味着对于所有情况都没有唯一的最佳回归函数。此外,结合用于调整的校正因子以及多轮收集方案,可以显着提高数据需求估计的性能。基于论文的指南,从业者可以准确估计机器学习系统的数据需求,从而节省开发时间和数据采集成本。

  总而言之,论文通过实验为实际应用中的数据收集提供了易于实施的指南:

  • 不同预测方法估计的数据比需要的多得多或少得多,使用多轮数据收集和under-estimate方案可以收集高达90%的真实所需数据量。
  • 通过已有的任务的采集模拟,可以确定哪些方法低估了数据需求,并学习一个校正因子来解决这个缺陷。使用校正因子并进行最多五轮数据收集,最多可以收集到任何目标性能所需的最小数据量的一到两倍。
  • 在只剩下一轮数据收集,可以使用所有的回归函数来获得一个真实数据要求的区间界限,可以指导建模者根据实际需求或多或少地积极收集数据。

Main problem


The data collection problem

  定义\(z\sim p(z)\)是从分布p中抽样的数据,例如\(z := (x, y)\)对应于图像x和标签y。考虑一个预测问题,目前有一个初始训练数据集\(\mathcal{D}_0 := \{z_i\}^{n_0}_{i=1}\)和一个模型f。定义\(V_f(\mathcal{D})\)为模型在集合\(\mathcal{D}\)上的训练评分函数,目标是获得预定的目标分数\(V^* > V_f(\mathcal{D}_0)\)

  为了实现目标,采样\(\hat{n}\)个额外的数据\(\hat{\mathcal{D}} := \{\hat{z}_i\}^{\hat{n}}_{i=1}\sim p(z)\),然后评估\(V_{f}(\mathcal{D}_{0}\cup \hat{\mathcal{D}})\)。如果没达到目标,就必须增加更多的额外数据。因为每个数据都会产生收集、清理和标记的成本,所以达到目标增加的额外数据\(\hat{n}\)越小越好。此外,由于启动一轮数据收集本身也很耗时,所以最多只能进行T轮。在T轮内达不到目标要求,就是没有解决问题。

  数据收集问题可总结为:对于初始化\(\hat{\mathcal{D}} = \varnothing\),重复进行如下迭代:

  • 估计需要的额外数据量\(\hat{n}\)
  • 采样数据\(|\hat{\mathcal{D}}| = \hat{n}\),然后评估分数:
    • 如果\(V_f(\mathcal{D}_0\cup \hat{\mathcal{D}}) ≥ V^*\),则终止。
    • 否则,重复另一轮迭代,最多进行T轮。

  数据收集问题的目标是在T轮内选择满足\(V_f(\mathcal{D}_0\cup \hat{\mathcal{D}}) ≥ V^*\)的最小\(\hat{n}\),而论文重点关注循环的第一步:准确估计满足\(V^∗\)所需的\(\hat{n}\)

Regressing performance using data set size

  根据先前研究的经验设定的,设定了如图2所示的数据预测和采集流程。先前的研究发现,对于递增的数据集\(\mathcal{D}_0 \subset\mathcal{D}_1\subset \cdots\)以及\(n_i=|\mathcal{D}_i|\),训练出来的模型的准确率满足以下单调递增的凹函数:

  从上述经验可知,随着收集数据的越多,额外数据带来的收益逐渐减少。此外,可以使用单调递增的凹函数对\(v(n)\)进行回归建模。

  表1中的四个函数为满足上述经验的候选项。虽然可以使用更复杂的模型,但这些具有少量参数的简单函数更适合样本较少的场景(指用于拟合的数据较少)。通过拟合的回归函数,可以求解最小的\(\hat{n}\),使得\(\hat{v}(n_0 + \hat{n}; \theta)\ge V^∗\)

  整体的逻辑如算法1所示:

  • 选择r个子集\(\mathcal{S_0}\subset \mathcal{S_1}\subset\cdots\subset \mathcal{S}_{r−1} = \mathcal{D}_0\),计算它们的分数来创建一个回归数据集\(\mathcal{R}:=\{|\mathcal{S}_i|, V_f(\mathcal{S}_i)\}^{r-1}_{i=0}\)
  • 从表1中选择一个函数\(\hat{v}(n; \theta)\)进行数据收集循环,直到准确率满足要求:
    • 通过最小二乘法最小化拟合参数\(\theta\)
    • 根据\(\hat{v}(\hat{n}; \theta^*)\ge V^∗\)取最小的额外数据量\(\hat{n}\)
    • 收集\(\hat{n}\)个新数据。
    • \((|\mathcal{D}_0| + |\hat{\mathcal{D}}|, V_f (\mathcal{D}_0 \cup \hat{\mathcal{D}}))\)扩充拟合数据\(\mathcal{R}\)

  现有的研究表明,Power Law可以根据数据集大小来估计模型精度,但实际应用时存在以下三大挑战。

  1. All of the functions in Table 1 fit the model score

  当有足够的初始数据,表1的回归函数都可以准确拟合模型性能曲线\(v(n)\)。如图1所示,当初始化数据集满足\(|\mathcal{D}_0| = 600,000\)张图像(≈ 50% 的数据集)时,每个函数的预测准确度与实际的误差最多为6%。尽管Power Law是根据理论推导选择的,但还没有足够的实验证明其的确优于其他函数。

  1. Extrapolating accuracy with small data sets is hard

  在数据有限的情况下,所有回归函数都无法很好地推断\(v(n)\)。如图1所示,当初始化数据集满足\(|\mathcal{D}_0| = 125,000\)张图像(≈ 10% 的数据集)时,部分函数的预测准确度偏离了实际准确率。

  需要注意的是,部分函数的准确率比Power Law要好。在之前的研究中也观察到了这种小数据的情况,提出对数据集和模型大小进行联合回归的解决方案。虽然这样做能提高性能,但需要通过采样数据子集和修改不同模型来获得2倍大小的\(\mathcal{R}\),这在计算上变得昂贵且耗时。因此,论文专注于使用少量训练统计数据的简单估计器,即\(r \le 10\)

  1. Small accuracy errors yield large data errors

  假设在ImageNet上构建一个满足67%测试集准确率的模型,大概需要用到900000张图像。尽管使用包含600,000张图像拟合的估计函数的误差\(| 67\% − \hat{v}(900,000; \theta)|\)很小(1%-6%),但其预估达到67%性能所需的图像数量的跨度却很大(120,000-310,000),仅1%的性能预测误差就会导致额外多收集34%的数据。由于预测误差的容忍度很低,所以必须确定估计数据需求的最佳实践。

Empirical findings


Data and methods

  论文在表2的图像分类、对象检测和语义分割任务上测试数据收集问题,不同任务类型训练不同的网络:图像分类训练的ResNets,2D目标检测训练的SSD300,3D目标检测训练的FCOS3D,语义分割训练的Deeplabv3,BEV分割训练的Lift Splat架构。对于每个任务,模型的架构和学习算法,包括数据采样进行了少量修改,详细内容可以去看看附录。

  在进行实验之前需要做以下准备:

  • 构造拟合数据集:对于每个数据集和任务,有一个初始数据集\(\mathcal{D}_0\),在分析时根据\(\mathcal{D}_0\)与完整数据集的相对大小记录\(n_0\)。根据算法1创建回归数据集\(\mathcal{R}\),以线性增长的大小(\(|S_i|=|\mathcal{D}_0(i+1)/r|\))采样r个子集,其中\(r\le 10\)以确保开销足够小。
  • 构造GT:为了在预测性能和估计数据需求方面评估回归函数,采样多个子集\(\mathcal{D}_1\subset \mathcal{D}_2\subset .· ·\)(相对于完整训练数据集的10%、20%、30%、... 、 100%的子集)。对于每个子集,训练模型并评估分数\(\mathcal{V}_f(\mathcal{D}_i)\)。基于子集的数据量和分数,构建分段线性评分函数\(v(n)\)并将其用作GT。

  论文进行两种类型的实验:

  • 使用\(\mathcal{R}\)拟合表1的回归函数,然后评估其对\(|\mathcal{D}_i|\ge|\mathcal{D}_0|\)的预测分数相对于\(\mathcal{V}_f(\mathcal{D}_i)\)的误差,可以揭示每个回归函数是否可以很好地推断模型对更大数据集的得分。
  • 使用\(n_0 = 10\%\)进行初始化(对于VOC,\(n_0 = 20\%\))并在\(T = 1、3、5\)轮内估计需要多少数据来获得不同的目标分数\(V^*\)。整体流程跟算法1类似,不同之处在于模拟中不会真的采样更多数据并训练评估\(\mathcal{V}_f (\mathcal{D}_0\cup \hat{\mathcal{D}})\),而是直接用前面构造GT中获得的GT函数\(v(n_0 + \hat{n})\)直接输出模型分数。这样的模拟近似于真实的数据收集问题,同时简化了实验,不必反复重新训练模型。

Analysis

  • Regression.

  表3总结了每个回归函数在预测更大数据集的分数时的均方根误差(RMSE),每项测试中使用不同的随机种子执行3次,主要有以下与前两个挑战相关的发现:

  1. \(n_0\ge 50\%\)时,每个函数都能达到低RMSE,并且有至少一个回归函数的RMSE小于1。
  2. \(n_0=10\%\)时,大多数函数会产生高RMSE。这表明当拟合小数据集时,这些函数容易偏离真实的模型性能曲线\(v(n)\)
  3. 对于大多数数据集,候选的回归函数能够始终产生低RMSE,特别是Arctan函数,在分类任务上表现非常出色。

  这些结果表明:

  1. 从小数据集预测更大数据集的模型性能是较为困难的。
  2. Power Law之外的其他回归函数的分数回归可能会更准确。
  • Simulation.

  给定初始数据集\(n_0\)和数据收集轮数\(T\),通过求解一系列目标\(V^*\)来模拟每个回归函数的数据收集能力。图3展示了每个函数收集的最终数据与根据GT性能曲线对应的最小数据的比率,即(\(n_0 + \hat{n})/(n_0 +n^∗)\),其中\(n^∗\)是满足\(v(n_0 +n^∗) = V^∗\)的真实最小数据需求量。

  在评估每个回归函数如何收集数据时,需要考虑两种情况:

  1. 如果比率小于1,则该函数是乐观预测,低估了需要多少数据,也意味着无法在T轮内收集到足够的数据来满足\(V^*\)
  2. 如果比率大于 1,则该函数是悲观预测,高估了需要多少数据。理想的数据收集策略,其最小比率应该大于1。实验表明,Arctan函数是最悲观的,经常出现较大幅度的最大比率。

  这个实验验证了第三个挑战,低回归误差函数并不一定转化为更好的数据收集。在CIFAR100ImageNetVOC上,使用Arctan可能会导致收集比实际需要多五倍的数据,而在nuScenes上进行BEV分割则可能会导致超过10倍的数据收集。

  尽管表3显示Arctan在所有函数中实现了最低的RMSE(3.19),但使用它来估计数据需求会导致过多的额外数据收集。在确定良好的数据收集策略时,仅分析回归误差是不够的,需要论文提出的模拟方法。

  对于大多数回归函数,需要迭代多轮才能收集到足够的数据。当\(T = 1\)时,Power LawLogarithmicAlgebraic Root都低估了除VOC之外的所有数据集和任务的数据需求。而当\(T = 5\)时,对于除CIFAR10之外的每个数据集,所有函数在\(V^∗\)的整个范围内都能采集到实际所需的90%数据以上。

  但是当\(V^∗\)很大时,即使\(T=5\),这些估计器仍然会低估数据需求。虽然这样估计的成本不高,但并未能解决数据采集问题。需要对这些估计量进行纠正,从而更好地指导数据收集。

Towards better estimates of data


  从前面的模拟实验可以看到,乐观的预测无法收集足够的数据来满足\(V^*\),而悲观预测则导致收集的数据远远超过所需的数据。所以论文引入一个校正因子,用于解决低估数据需求的问题。

A correction factor to help meet the target

  在算法1的每一轮数据收集中,需要根据\(\hat{v}(n_0 + \hat{n}; \theta^∗) \ge V^∗\)最小化\(\hat{n}\)。然而,前面的模拟实验表明,大多数回归函数是乐观的,低估了需要数据量。一种简单的纠正少估数据的方法是添加校正因子\(\tau \ge 0\),估计满足校正的更高目标\(V^* + \tau\)所需的数据量。因此,固定一个常数\(\tau\)并修改算法1,根据根据\(\hat{v}(n_0 + \hat{n}; \theta^∗) \ge V^∗ + \tau\)最小化\(\hat{n}\)

  为了确定校正因子的值,将其当作超参数进行拟合。假设现有完整的CIFAR10数据集,想为未来的数据集构建一个T轮收集策略:

  • 使用每个回归函数模拟CIFAR10\(\tau = 0\)的数据收集量,获得图3的曲线。
  • 增加\(\tau\)直到该函数的整个比率曲线高于1,即收集到足够的数据来满足CIFAR10的所有目标值\(V^*\)
  • 使用这个拟合的\(\tau\)作为未来数据集的校正因子。

  通过将校正因子与多轮数据收集相结合,就可以始终收集到略高于最低数据要求的数据。表4比较了\(\tau\)对每个回归函数在各数据集上的最小比率的影响。如果不进行校正,Power LawLogarithmicAlgebraic Root都低估了除VOC之外的所有数据集和任务的数据需求。而使用\(\tau\)之后,这些函数几乎都实现12之间的比率。

  此外,对于每个数据集,这三个回归函数在\(T = 5\)时都达到各自的最低比率(高于1)。如图4所示,Power LawLogarithmicAlgebraic Root在每个数据集上都实现了1.032.5之间的比率。需要注意的是,所有数据集都没有统一最佳回归函数。由于Arctan本身就高估了数据需求,所以这个函数并没有从校正中受益。

  所以,从模拟实验中可以看出,修正后的Power LawLogarithmicAlgebraic Root搭配\(T=5\),能够满足预期目标的同时最小化收集的总数据量。

Empirical bounds on the data requirement

  如果校正因子拟合不佳或收集轮数\(T\)有限,仍可能低估或高估数据要求。从表4中可以看出,在\(T = 1\)nuScenes分割任务模拟中,没有\(\tau\)Power Law仅估计所需数据的58%,而使用\(\tau\)则导致估计的数据比需要的多25倍。

  因此,在某些应用中,建模者可能还需要根据经验估计应该收集的数据量。假设在最后一轮的采集估计必须满足数据收集目标,此时就需要查看最坏和最好情况的采集估计,即上限和下限。不同的回归函数会产生不同的预测,其中最大的预测值是最坏情况的估计,最小的预测值就是最好情况的估计。

  对于每个数据集,设置\(T = 1\)和不同的初始数据集\(n_0\)进行实验,使用八个回归函数对不同\(V^*\)进行数据需求估计。图5的上行展示了在不同\(n_0\)基础上,所有\(V^*\)所需的真实数据量在函数集预测值的上界和下界之间的概率,下行则进一步展示了上界和下界与真实值比例平均值。

  结果表明,基于足够初始数据集的单轮预测能够准确估计数据需求的上限和下限。此外,即使需要多轮才能收集到比较足够的数据,我们也能在最后一轮获得需求的上下区间。所以,在实际应用中,上下界限可以指导建模者根据任务的情况做出乐观或悲观的选择。

Conclusion


  虽然模型性能预测受到越来越多关注,但论文发现性能估计并不能完成解决数据需求。即使是性能预测的小误差,也会导致数据收集中的大误差,这意味着一个好的数据估计器允许的误差远小于直觉所想的。此外,性能预测误差分为低估或高估,都会对数据收集造成不同的挑战。为了更好地分析数据收集策略,论文制定了迭代数据收集的模拟方案。通过实验,论文得出了几个高层次的见解:

  • 不同预测方法估计的数据比需要的多得多或少得多,使用多轮数据收集和under-estimate方案可以收集高达90%的真实所需数据量。
  • 通过已有的任务的采集模拟,可以确定哪些方法低估了数据需求,并学习一个校正因子来解决这个缺陷。使用校正因子并进行最多五轮数据收集,最多可以收集到任何目标性能所需的最小数据量的一到两倍。
  • 在只剩下一轮数据收集,可以使用所有的回归函数来获得一个真实数据要求的区间界限,可以指导建模者根据实际需求或多或少地积极收集数据。



如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

work-life balance.

与还在困惑需要多少数据吗?来看看这份估计指南 | CVPR 2022相似的内容:

还在困惑需要多少数据吗?来看看这份估计指南 | CVPR 2022

论文基于实验验证,为数据需求预测这一问题提供了比较有用的建议,详情可以直接看看Conclusion部分。 来源:晓飞的算法工程笔记 公众号 论文: How Much More Data Do I Need? Estimating Requirements for Downstream Tasks 论

1.8 运用C编写ShellCode代码

在笔者前几篇文章中,我们使用汇编语言并通过自定位的方法实现了一个简单的`MessageBox`弹窗功能,但由于汇编语言过于繁琐在编写效率上不仅要考验开发者的底层功底,还需要写出更多的指令集,这对于普通人来说是非常困难的,当然除了通过汇编来实现`ShellCode`的编写以外,使用C同样可以实现编写,在多数情况下读者可以直接使用C开发,只有某些环境下对ShellCode条件有极为苛刻的长度限制时才会

1.8 运用C编写ShellCode代码

在笔者前几篇文章中,我们使用汇编语言并通过自定位的方法实现了一个简单的`MessageBox`弹窗功能,但由于汇编语言过于繁琐在编写效率上不仅要考验开发者的底层功底,还需要写出更多的指令集,这对于普通人来说是非常困难的,当然除了通过汇编来实现`ShellCode`的编写以外,使用C同样可以实现编写,在多数情况下读者可以直接使用C开发,只有某些环境下对ShellCode条件有极为苛刻的长度限制时才会

集成华为运动健康服务干货总览

在接入华为运动健康服务的过程中你是否遇到过权限申请有困难、功能不会用的情况? 本期超强精华帖,一帖汇总集成华为运动健康服务你可能需要的各类干货,还不赶紧收藏起来!开发有困难,随时可查阅~ 如果你有感兴趣或想进一步了解的内容,欢迎进行留言,或查看华为运动健康文档获取更多详情! 权限申请篇 在申请运动健

Intel Pentium III CPU(Coppermine, Tualatin) L2 Cache Latency, Hardware Prefetch特性调查

这几天,偶然的机会想到了困扰自己和其他网友多年的Intel Pentium III系列处理器缓存延迟(L2 Cache Latency),以及图拉丁核心版本是否支持硬件预取(Hardware Prefetch)问题。 手头的支持图拉丁核心处理器的i815主板还在正常服役中,铜矿和图拉丁核心处理器也都

信创产业快速发展,开发者应该了解什么?

信创这个概念对于大家来说并不陌生,至少我们在海量的新闻中会时不时的听到这个概念,特别是在西方国家对中国进行技术封锁加剧时,证券市场中它还会时不时成为一个风口板块。其实“信创”理解起来也并不困难,就像它的字面意思:信息技术应用创新产业,旨在实现信息技术领域的自主可控,保障国家信息安全。

痞子衡嵌入式:Farewell, 我的写博故事2022

-- 题图:苏州荷塘月色 2022 年的最后一天,写个年终总结。困扰大家三年之久的新冠疫情终于在 12 月全面放开了,痞子衡暂时还没有阳,计划坚持到总决赛。对于 2023 年,痞子衡还是充满期待的,慢慢要恢复到 2019 年及之前的生活方式了(当然是要长期和各种毒株共存了)。 说回正题,今年一共写了

还在拼冗长的WhereIf吗?100行代码解放这个操作

通常我们在做一些数据过滤的操作的时候,经常需要做一些判断再进行是否要对其进行条件过滤。 普通做法 最原始的做法我们是先通过If()判断是否需要进行数据过滤,然后再对数据源使用Where来过滤数据。 示例如下: if(!string.IsNullOrWhiteSpace(str)) { query =

还在stream中使用peek?不要被这些陷阱绊住了

简介 自从JDK中引入了stream之后,仿佛一切都变得很简单,根据stream提供的各种方法,如map,peek,flatmap等等,让我们的编程变得更美好。 事实上,我也经常在项目中看到有些小伙伴会经常使用peek来进行一些业务逻辑处理。 那么既然JDK文档中说peek方法主要是在调试的情况下使

还在为618电商推送方案烦恼?我们帮你做好了!

618是每年重要的电商大促活动,热度高流量大,是电商App吸引新用户,提高用户转化率(购买率)的最好时机。对电商App运营来说,消息推送是不可忽略的流量来源之一,适当的消息推送可以召回用户,提高用户复购率。如何利用消息推送功能在618电商节帮助App获取流量并提高转化率是运营需要关注的问题。 在回答