外观
训练时与测试时数据增强(data augmentation)
Train and Test-time Data Augmentation
数据增强(data augmentation)策略通常在训练时(training-time)使用。其核心思想是使用一些巧妙的技巧,从现有数据中生成更多数据,这在你本来就没有多少数据的情况下尤其有用:

我给你举个例子。如今,语言相关的 ML 模型已经变得相当先进且通用。同一个模型可以翻译、摘要、识别词性标注(名词、形容词等),以及更多任务。

但在早期,模型通常是针对特定任务的(现在也有,但比以前少得多)。
- 一个专门用于翻译的模型。
- 一个专门用于摘要的模型,等等。
在一个具体用例中,我在构建一个命名实体识别(NER)模型,目标是识别命名实体。
下面是一个示例:

我的数据很少——大约有 8-10k 条带标签的句子。如果你了解的话,这个数据集是 CoNLL 2003 NER 数据集。以下是我针对这种情况进行数据增强的方法。观察:在 NER 中,句子的事实正确性并不重要。
回到上面的例子,如果训练(training)数据中有下面这个句子,也没有任何影响:

当然,这个句子在事实上是错误的,但这并不重要。对模型(model)来说,唯一重要的是输出标签(在本例中为命名实体标签)必须正确。利用这一观察,我通过将现有句子中的命名实体替换为整个数据集中其他的命名实体,生成了许多新句子:

对于此类替换,我本可以使用数据集之外的命名实体。然而,与其他方法进行公平比较很重要。这项技术(再加上一些架构上的调整)实现了当时最先进的性能。继续往下看……上面的讨论是关于训练数据增强的。但还有测试时数据增强。测试时增强(Test Time Augmentation,TTA)是指在测试(testing)期间应用数据增强。更具体地说,我们不再只向模型展示一个测试样本,而是通过应用不同的操作,展示同一样本的多个版本。

模型对测试样本的每个版本都做出概率预测,然后对这些预测取平均,生成最终预测:

本质上,TTA 通过考虑同一输入的多个增强版本,构建了一个预测集成,从而得到更稳健的最终预测。事实上,在这篇论文(https://arxiv.org/html/2402.06892v1)中,作者证明了使用 TTA 的平均模型误差永远不会超过原始模型的平均误差,这很棒。你可能已经猜到,唯一的代价是它增加了推理(inference)时间。
- 数据增强需要一些时间。
- 生成多个预测会增加整体预测运行时间。
因此,当你重视较低的推理时间时,对 TTA 要三思。总结一下,如果你能在推理时间上稍作妥协,TTA 可以成为在不重新设计更好模型的情况下,提升现有模型预测能力的有力手段。