假设您有一个包含 1000 个观测值的数据集。为了保持直观,想象它们是 (x,y) 坐标。它们是临时独立的,因此更容易。
你希望你有大约一百万个观测值,但你只有 1000 个。你应该如何生成一百万个模拟观测值?
是否有任何证明可以描述最精确的数学方法?
您希望忠实于您的原始数据集。在不增加自己偏见的情况下如何做到这一点?
这是一个简单的问题,也是一个普遍的问题。但我不知道这是否微不足道。似乎应该如此。
假设您有一个包含 1000 个观测值的数据集。为了保持直观,想象它们是 (x,y) 坐标。它们是临时独立的,因此更容易。
你希望你有大约一百万个观测值,但你只有 1000 个。你应该如何生成一百万个模拟观测值?
是否有任何证明可以描述最精确的数学方法?
您希望忠实于您的原始数据集。在不增加自己偏见的情况下如何做到这一点?
这是一个简单的问题,也是一个普遍的问题。但我不知道这是否微不足道。似乎应该如此。
您“希望有一百万次观察”的原因通常是因为您想使用数据来推断您还不知道的事情。例如,您可能想要拟合模型或进行预测。在这种情况下,数据处理的不平等意味着,不幸的是,模拟额外的数据没有人们希望的那么有用(但这并不意味着它没有用)。
更具体地说,让是一个表示我们想要了解的未知量的随机向量,让是表示数据的随机向量。现在,假设我们使用从原始数据中学到的知识来模拟新数据。例如,我们可能会为原始数据拟合一个概率分布,然后从中采样。让是表示模拟数据的随机向量,并且表示增强的数据集。因为是根据生成的, 我们有和是有条件独立的,给定. 那是:
根据数据处理不等式,和不能超过之间和:
自从包含,这实际上是一个等式。无论如何,这表明,无论我们如何尝试处理数据——包括使用它来模拟新数据)——都不可能获得关于我们感兴趣的数量的额外信息(超出原始数据中已经包含的信息) .
但是,这里有一个有趣的警告。请注意,当上述结果成立时是根据生成的. 如果也是基于一些外部来源,那么就有可能获得关于(如果携带此信息)。
鉴于上述情况,有趣的是,数据增强在实践中可以很好地工作。例如,正如杜海涛所提到的,在训练图像分类器时,有时会使用训练图像的随机变换副本(例如平移、反射和各种扭曲)。这鼓励学习算法找到对这些转换不变的分类器,从而提高性能。为什么这行得通?本质上,我们引入了一个有用的归纳偏差(在效果上类似于贝叶斯先验)。我们先验地知道真正的函数应该是不变的,而增强图像是一种强加这种知识的方式。从另一个角度来看,这个先验知识是额外的来源我上面提到的。
是否有任何证明可以描述最精确的数学方法?
任何转换背后都会有一些数学运算。
但是,我确实认为图像数据增强将取决于特定领域的特定用例/领域知识。
例如,如果我们想检测狗或猫,我们可以翻转图像进行增强。这是因为我们知道颠倒的狗仍然是狗。另一方面,如果我们在做数字识别,翻转图像可能不是一个好方法,因为 6 和 9 是不同的数字。
对于其他领域,比如医学图像上的计算机视觉,我不知道图像上的翻转/镜像是否会在胸部 X 射线上产生。
因此,它是特定领域的,可能无法被某些通用数学模型捕获。
问题是,你为什么要做数据增强?
当然,数据越多越好,但是您的增强数据集是多余的:您的一百万个增强数据点不如一百万个实际数据点。
数据增强的另一种思维方式是教学不变性。例如,深度学习中的 CNN 是平移不变的,这对于图像识别来说是一件好事。不幸的是,我们希望它们对旋转也是不变的(倾斜的猫仍然是猫),这在架构中并不容易做到。
总而言之:数据增强是一种创建模型的方法,当您无法在其他地方(无论是特征还是模型)强制保持不变性时,该模型相对于一组转换大致不变。
回答您的问题,确定有效数据增强程序的唯一方法是应用领域知识。如何在不大幅改变数据点的情况下扰乱或修改数据点?你希望你的模型学会忽略什么?
让我证明没有通用的方法,也不可能有一个。考虑预测物体位置的情况鉴于你的 是初始位置。一个合乎逻辑的数据增强方案是在微观上置换这些点,它们最终肯定会几乎在同一个位置,对吧?但如果系统是混乱的(例如,双摆),微观偏差会产生指数发散的轨迹。您可以在那里应用哪些数据增强?可能是对位于大型景点盆地中的点的扰动。这会使您的数据产生偏差,因为您将拥有更少的混沌状态样本(这不一定是坏事!)。无论如何,您提出的任何扰动方案都将来自对手头问题的仔细分析。