初探数据增强
这篇文章主要用来大概梳理数据增强的内容。以下内容部分包含我和chatGPT对话的提炼内容(有修改)
总述
当我们训练机器学习模型时,我们希望用尽可能多的数据来提高模型的性能。然而,在许多情况下,我们可能没有足够的数据来训练一个好的模型。此时,我们可以使用数据增强来扩充我们的训练数据集。
数据增强是通过对现有数据进行一系列随机变换来生成新的训练数据的过程。这些变换可以包括旋转、缩放、裁剪、翻转、改变颜色等操作。这些操作的目的是生成与原始图像略微不同的新图像,从而使模型对不同的变化更加鲁棒。
以下是数据增强的一些常见技术:
- 随机裁剪:随机从原始图像中裁剪出一部分,以产生不同大小和位置的新图像。
- 随机翻转:随机水平或垂直翻转图像。
- 随机旋转:随机旋转图像一定的角度。
- 随机缩放:随机缩放图像的尺寸。
- 调整亮度和对比度:调整图像的亮度和对比度。
- 添加噪声:向图像添加高斯噪声、椒盐噪声等。(这个添加噪声,以及mixup本身,都总是让我想到对抗样本)
相关概念梳理
当代机器学习技术面临的挑战之一是需要更快速地适应新任务,使用更少的样本和更少的人工干预。为了解决这些挑战,涌现出了许多不同的学习范式和方法。
需要注意的是,这些学习方法并不是相互独立的,它们之间的界限也不是非常清晰。在实际应用中,这些方法常常会结合使用,例如将元学习和迁移学习结合使用,通过学习不同任务之间的关系来提高迁移学习的性能,或者将知识蒸馏和小样本学习结合使用,通过将大模型的知识迁移到小模型上来提高小模型的性能。
对抗样本
我总是觉得对抗样本这方面的想法说不定能用于数据增强的方面
对抗样本是一种通过对原始数据进行微小修改来欺骗机器学习模型的方法。对抗样本可以通过向原始数据添加一些微小的扰动来生成,这些扰动在人眼看来可能是不可察觉的,但是对机器学习模型的结果会产生显著的影响。
具体来说,我们可以使用一些算法来生成对抗样本,例如Fast Gradient Sign Method(FGSM)和Projected Gradient Descent(PGD)。这些算法通过对原始数据的梯度进行计算,找到可以欺骗模型的扰动。生成的对抗样本可以用来训练鲁棒性更好的模型,或者用来评估模型的鲁棒性。
小样本学习
当我们面对只有少量样本的任务时,如何从有限的数据中学习到一个好的模型是一项具有挑战性的任务。这种问题被称为小样本学习(Few-shot learning)。在小样本学习任务中,通常只有几个(可能只有一个)训练样本可用于每个类别,而测试样本数也非常有限。
为了解决小样本学习问题,研究人员提出了各种方法。其中一种常见的方法是元学习(Meta-learning),它是一种学习如何快速适应新任务的方法。元学习通常通过在大量类似的小样本任务上进行训练来获得先验知识,并利用这些知识在新任务中进行快速学习。
此外,还有其他一些方法来解决小样本学习问题,如基于生成模型的方法、基于度量学习的方法、基于分布式表示的方法等。这些方法通常使用数据增强、知识蒸馏等技术来扩展小样本数据集,并结合预训练模型或其他优化策略来提高模型的泛化性能和学习效率。
可以说小样本学习和半监督学习都是在数据量相对较少的情况下进行模型训练的问题,但是它们所考虑的问题和采用的技术不同。小样本学习通常采用元学习、迁移学习和数据增强等技术来解决数据量不足的问题,而半监督学习则通常采用半监督学习算法来利用无标签数据来提高模型的泛化性能。
小样本学习在现实生活中有许多应用场景,如人脸识别、物体识别、语音识别等领域。因此,研究人员一直在探索如何解决小样本学习问题,并取得了一些令人瞩目的成果。
元学习
元学习(Meta-Learning),也称为学习到学习(Learning to Learn),是指学习如何学习的一类机器学习方法。与传统的机器学习方法不同,元学习的目标不仅是学习如何分类或预测,更重要的是学习如何通过有限的数据和有限的计算资源,快速地适应新的任务或新的环境。
元学习是一种学习范式,可以被看作是一种对学习过程本身的学习,它尝试从大量的历史数据中学习通用的学习规律和模式,以便能够在面临新的任务时,快速地进行模型调整和参数更新,从而达到快速适应的目的。与传统的机器学习方法不同,元学习不是仅仅在给定的数据集上进行训练,而是通过在多个任务上的学习来提高对新任务的泛化能力。元学习模型可以从一个任务到另一个任务迁移知识,并且可以根据少量样本快速学习新任务。
常见的元学习方法包括基于梯度的元学习方法(如MAML)、基于贝叶斯推断的元学习方法(如Bayesian Meta-Learning)、基于强化学习的元学习方法(如RL2)等。这些方法都可以通过学习到通用的学习规律和模式,来实现快速适应新任务的目的。
迁移学习
迁移学习是一种技术,旨在使模型从一个领域或任务转移到另一个领域或任务。迁移学习的目标是利用一个领域或任务中学到的知识来改进在另一个领域或任务中的表现。迁移学习可以通过共享权重或特征来实现,以便在新任务中利用以前学到的知识。
弱监督
弱监督学习是指使用不完整或不准确的标签进行训练的学习方法,例如使用图像级别的标签训练物体检测模型。该方法可以降低标注数据的成本,但也会带来一定的误差。弱监督学习常常和半监督学习结合使用。
Mixup
Mixup是一种数据增强技术,通过将两个不同的样本按照一定比例进行混合,生成一个新的样本。这个新样本的标签也是按照比例混合生成的。这个方法的目的是通过将不同的样本进行混合来生成一个更加平滑的决策边界,从而提高模型的泛化能力和鲁棒性。
具体来说,假设我们有两个样本\(x_1\)和\(x_2\),它们的标签为\(y_1\)和\(y_2\),我们可以使用下面的公式来生成一个新的样本\(x'\)和标签\(y'\):
其中,\(\lambda\)是一个在0和1之间的随机数,用来控制两个样本的混合比例。
chatGPT推荐的mixup相关论文
Mixup: Beyond Empirical Risk Minimization, Zhang, Hongyi and Cisse, Moustapha and Dauphin, Yann NIPS 2018.
这是最早提出Mixup方法的论文,作者提出了一种基于数据混合的新型正则化方法。Mixup方法通过将数据进行线性混合来生成新的训练数据,其中每个数据点的标签也是按照相应的权重进行混合得到。通过这种方式,Mixup可以使得模型在未见过的数据上获得更好的泛化性能。
CutMix: Regularization Strategy to Train Strong Classifiers with Localizable Features, Yun et al., ICCV 2019.
这篇论文基于Mixup方法提出了一种新的数据增强方法,称为CutMix。与Mixup不同的是,CutMix不是对整个数据进行线性混合,而是将原始图像的一部分与另一个随机选择的图像进行融合。这种方法可以使得模型更好地学习到局部特征,并且可以产生一些具有位置信息的特征,使得模型更容易定位物体。
Manifold Mixup: Better Representations by Interpolating Hidden States, Verma et al., ICML 2019.
这篇论文提出了一种新的Mixup方法,称为Manifold Mixup。Manifold Mixup不是对输入数据进行线性混合,而是对模型的隐藏状态进行插值。具体来说,Manifold Mixup将两个随机选择的样本通过一个共享的深度神经网络编码器,得到两个隐藏表示,然后对这两个隐藏表示进行插值得到一个新的隐藏表示,最终输出预测结果。Manifold Mixup可以使得模型在表征空间上更加平滑,从而提高模型的泛化能力。
RICAP: Random Image Cropping and Patching, Takahashi et al., AAAI 2019.
这篇论文提出了一种新的数据增强方法,称为RICAP。RICAP方法可以通过在训练时对随机位置和大小的图像块进行随机裁剪和拼接来生成新的训练数据。这种方法可以增加模型对图像不同部分的关注程度,从而提高模型的泛化能力。
Mixup2: Beyond Empirical Risk Minimization with Weighted Lipschitz Constants, Yun et al., ICML 2020.
这篇论文提出了一种新的Mixup方法,称为Mixup2。与传统的Mixup方法不同的是,Mixup2采用了一种新的正则化方法,称为加权Lipschitz常数。通过这种方法,Mixup2可以让模型更好地控制输入空间的平滑度,从而提高模型的泛化能力。
Enhancing The Reliability of Out-of-distribution Image Detection in Neural Networks, Hendrycks et al., ICML 2021.
这篇论文提出了一种新的数据增强方法,称为MixMatch。MixMatch方法是一种半监督学习方法,可以通过将标签信息弱的未标记数据与标签信息强的标记数据进行Mixup来生成新的训练数据。通过这种方式,MixMatch可以提高模型在未标记数据上的分类准确率,并且可以增强模型对于未知数据的鲁棒性。
MixAugment: A Simple Data Augmentation Method for Automatic Speech Recognition, Kwon et al., Interspeech 2021.
这篇论文提出了一种新的Mixup方法,称为MixAugment,用于自动语音识别任务。MixAugment通过将两个随机选择的音频进行线性混合来生成新的训练数据,同时使用随机的时间和音量偏移来进一步增强数据。实验证明,MixAugment方法可以显著提高语音识别的准确率。
MixText: Linguistically-Informed Interpolation of Hidden Space for Semi-Supervised Text Classification, Xu et al., AAAI 2021.
这篇论文提出了一种新的Mixup方法,称为MixText,用于半监督文本分类任务。MixText通过将两个随机选择的文本进行插值,从而生成新的文本表示。不同于传统的Mixup方法,MixText在插值的过程中使用了语言学上的信息,以便更好地控制新生成的文本表示的质量。
DMix: Diverse Mixup for Semi-Supervised Learning, Li et al., NeurIPS 2021.
这篇论文提出了一种新的Mixup方法,称为DMix,用于半监督学习任务。DMix通过对多个随机选择的数据点进行线性混合来生成新的训练数据。与传统的Mixup不同的是,DMix使用一种新的目标函数,称为多样化最大化目标,以便更好地控制新生成的数据的多样性。
mixup结合相关领域的论文
Mixup as Locally Linear Out-of-Manifold Regularization, Verma et al., NeurIPS 2019.
这篇论文将Mixup与局部线性嵌入(LLE)算法相结合,提出了一种称为Mixup-LLE的新方法,用于提高模型的鲁棒性和泛化能力。实验结果表明,Mixup-LLE可以在各种任务上提高模型的性能,并且比Mixup更有效。
Mixup-Based Curriculum Learning for Efficient and Robust Deep Learning, Wei et al., ICML 2019.
这篇论文提出了一种基于Mixup的课程学习方法,称为Mixup-CL。该方法使用Mixup来增强数据,同时使用课程学习来引导模型学习过程,以提高模型的效率和鲁棒性。实验结果表明,Mixup-CL可以在各种任务上显著提高模型的性能。
Data Augmentation and Distillation for Training Time Adversarial Robustness, Xie et al., CVPR 2020.
这篇论文将Mixup与自我知识蒸馏相结合,提出了一种新的方法,用于训练鲁棒性更强的深度学习模型。该方法使用Mixup增强数据,使用自我知识蒸馏来指导学生模型的学习过程。实验证明,该方法可以在对抗攻击下提高模型的鲁棒性。
Enhancing Adversarial Defense by Data-Free Knowledge Distillation, Zhuang et al., ICLR 2020.
这篇论文提出了一种基于Mixup和数据无关的自我知识蒸馏方法,用于提高对抗防御的效果。该方法使用Mixup生成伪标签,然后使用这些伪标签来训练教师模型和学生模型。实验证明,该方法可以在对抗攻击下提高模型的鲁棒性。
AdvProp: Local Adversarial Training for Neural Networks with Provable Guarantees, Sinha et al., ICML 2018.
这篇论文提出了一种基于Mixup的局部对抗训练方法,称为AdvProp。该方法使用Mixup增强数据,并在每个局部区域中训练模型来提高模型的鲁棒性。实验证明,AdvProp可以在各种任务上提高模型的性能,并且比其他对抗训练方法更有效。
CutMix: Regularization Strategy to Train Strong Classifiers with Localizable Features, Yun et al., ICCV 2019.
这篇论文提出了一种新的数据增强方法,称为CutMix。该方法使用Mixup和随机裁剪相结合,以生成新的训练样本。此外,作者还提出了一种新的目标函数,用于训练带有可局部化特征的强分类器。实验证明,CutMix可以在各种任务上提高模型的性能,并且比Mixup更有效。
Self-ensembling with GAN-based Data Augmentation for Domain Adaptation in Semantic Segmentation, Zhang et al., CVPR 2019.
这篇论文提出了一种基于自我知识蒸馏和GAN的数据增强方法,用于域自适应语义分割。该方法使用GAN生成伪标签,并使用自我知识蒸馏来指导模型的学习过程。实验证明,该方法可以在域自适应语义分割任务中提高模型的性能。
Self-Training With Noisy Student Improves ImageNet Classification, Xie et al., CVPR 2020.
这篇论文提出了一种称为“Noisy Student”的自训练方法,结合了数据增强和模型增强。该方法使用一个模型(称为“Teacher”)生成伪标签,并使用Mixup等数据增强技术进行训练。然后,使用一个更大的模型(称为“Student”)进行自我训练,同时使用Dropout等模型增强技术。实验证明,该方法可以在ImageNet分类任务上达到SOTA的结果。
Data Augmentation using Learned Transformations for One-Shot Medical Image Segmentation, Isensee et al., MICCAI 2018.
这篇论文提出了一种用于一次性医学图像分割的数据增强方法,称为“ATLAS”。该方法使用学习到的变换生成新的训练样本,并使用一个基于U-Net的卷积神经网络进行训练。实验证明,该方法可以在各种医学图像分割任务上提高模型的性能。
MixStyle: Data-free Domain Generalization with Mixup-based Data Augmentation and Style Transfer, Zhang et al., CVPR 2021.
这篇论文提出了一种数据无关的域泛化方法,称为“MixStyle”。该方法使用Mixup和风格迁移等数据增强技术来生成新的训练样本,并使用一个基于ResNet的卷积神经网络进行训练。实验证明,该方法可以在各种域泛化任务上提高模型的性能。
MixMatch: A Holistic Approach to Semi-Supervised Learning, Berthelot et al., NeurIPS 2019.
这篇论文提出了一种半监督学习方法,称为“MixMatch”,结合了数据增强和模型增强。该方法使用Mixup等数据增强技术生成虚拟样本,并使用一个基于Wide ResNet的卷积神经网络进行训练。然后,使用对抗训练和温度缩放等模型增强技术来提高模型的性能。实验证明,该方法在各种半监督学习任务上都表现出色。
Stochastic Weight Averaging in Parallel: Large-Scale Distributed Bayesian Deep Learning Under Real-world Constraints, Izmailov et al., NeurIPS 2018.
这篇论文提出了一种分布式贝叶斯深度学习方法,结合了数据增强和模型增强。该方法使用Mixup等数据增强技术生成虚拟样本,并使用随机权重平均和Monte Carlo Dropout等模型增强技术来提高模型的性能。实验证明,该方法可以在大规模分布式计算环境下有效地进行训练,并取得优秀的结果。
Domain Adaptive Ensemble Learning, Cui et al., ICML 2020.
这篇论文提出了一种域自适应集成学习方法,结合了数据增强和模型增强。该方法使用Mixup等数据增强技术生成虚拟样本,并使用一个基于ResNet和DANN的深度神经网络进行训练。然后,使用Dropout和温度缩放等模型增强技术来提高模型的性能。实验证明,该方法可以在域自适应任务中取得优秀的结果。
数据增强结合迁移、元学习和蒸馏的工作
Data Augmentation for Meta-Learning, Lim et al., ICML 2019.
这篇论文提出了一种针对元学习的数据增强方法,称为“Data Augmentation for Meta-Learning”(DAML)。该方法使用Mixup等数据增强技术生成虚拟样本,并使用一个基于LSTM的元学习模型进行训练。然后,将训练得到的元模型与一个具有多个任务的测试集合进行微调,以实现更好的元学习性能。实验证明,该方法在不同的元学习任务上都可以取得优秀的结果。
Learning to Transfer with Data-Dependent Acquisition of Transferable Knowledge, Zhang et al., ICML 2018.
这篇论文提出了一种结合数据增强和迁移学习的方法,称为“Learning to Transfer with Data-Dependent Acquisition of Transferable Knowledge”(L2T)。该方法使用Mixup等数据增强技术生成虚拟样本,并使用一个基于ResNet的卷积神经网络进行训练。然后,使用一种自适应的迁移学习方法,从已有的任务中学习可转移的知识,以提高在新任务上的性能。实验证明,该方法可以在各种任务上取得优秀的结果。
Knowledge Transfer via Distillation of Activation Boundaries Formed by Hidden Neurons, Yim et al., CVPR 2017.
这篇论文提出了一种结合数据增强和知识蒸馏的方法,称为“Knowledge Transfer via Distillation of Activation Boundaries Formed by Hidden Neurons”(ABDN)。该方法使用Mixup等数据增强技术生成虚拟样本,并使用一个基于VGG和Inception的深度神经网络进行训练。然后,使用一种基于激活边界的知识蒸馏方法,将模型的知识传输到一个小型模型中,以减少模型的复杂度。实验证明,该方法可以在各种任务上取得优秀的结果。
Mixout: Effective Regularization to Finetune Large-scale Pretrained Language Models, Lee et al., NeurIPS 2019.
这篇论文提出了一种名为Mixout的正则化方法,它可以在调整预训练语言模型(如BERT)时实现更好的泛化性能。Mixout将dropout应用于预训练的层,从而使其更加灵活,可以将预训练知识逐渐转移给微调后的模型。Mixout可以与其他技术(如fine-tuning、数据增强等)一起使用,以实现更好的性能。
Boosting Few-Shot Learning with Adaptive Margin Loss, Li et al., ICCV 2019.
这篇论文提出了一种新的自适应边界损失函数来增强少样本学习(Few-shot learning)。该方法使用数据增强技术扩展小样本数据集,并结合知识蒸馏进行模型优化,以提高模型的泛化能力。
Data Augmentation with Multi-Modal Matching and Self-Supervised Learning for Few-Shot Learning, Zhang et al., AAAI 2021.
这篇论文提出了一种新的多模态匹配数据增强方法,将不同的数据源(如图像、文本等)结合起来,以扩展小样本学习数据集。该方法结合知识蒸馏和自监督学习,以提高模型在少样本学习任务上的性能。
一些疑惑
Q:mixup这种数据增强方法为什么是合理的?它不会破坏数据流形吗?比方说,将猫和狗混合的图片本来应该什么都不是,但是我们却给这张图片标注为猫和狗的混合,感觉从常理上难以接受。换句话说,mixup可以看作一种线性正则化,但是我却不认为数据分布是线性的,所以mixup为什么会有效呢?
A:这是一个很好的问题。混合数据的确可以破坏数据流形,因此它可能会不合理地改变样本的类别或导致模型过度拟合。但是,事实上,mixup不是简单地将两个不同的数据样本混合在一起。相反,它使用线性插值的方式生成新的数据样本。这种数据增强方法可以被看作是对原始数据分布的一种合理扩展,而不会完全破坏数据流形。
此外,通过将mixup和其他数据增强方法结合使用,如CutMix和RanMix,可以进一步增强模型的鲁棒性和泛化能力。这些方法在生成新样本的同时,也可以保持原始数据样本的语义信息和结构信息。因此,这些方法可以被视为对数据分布的更加准确的建模,进而提高了模型的性能。
Q:我还是不清楚为什么混合后的样本仍然在数据空间内
A:这个问题其实涉及到数据的流形假设和数据增强的目的。
数据流形假设是指,高维数据空间中的实例点可能集中在一个低维流形上,这个流形被嵌入在高维空间中。例如,人脸图片空间中的所有实例可能集中在一个三维流形(例如,由脸型、眼睛位置、嘴巴形状等组成),而在高维空间中则有更多的维度描述了这些人脸的细节和噪声。流形结构是数据的本质特征,这个假设被广泛应用于降维、聚类、分类、回归等机器学习任务中。
真实世界中的数据分布通常是低维流形嵌入到高维空间中,而混合两个样本不会破坏这个数据流形,因为混合后的样本仍然可以被视为数据分布中的一个点,只是在高维空间中的位置可能会发生变化。同时,Mixup 不仅是将两个样本的特征进行线性插值,还可以对标签进行插值,从而保留了数据分布的结构。同时,通过对比原始样本与混合样本在流形空间内的距离,可以看出混合样本与原始样本的相似度,从而为模型提供更多的正则化约束。
另外,数据增强的目的并不是完美地模拟真实数据,而是通过扰动数据空间来增加模型对数据的鲁棒性,提高泛化能力。因此,数据增强方法可以在不破坏数据流形的前提下,创造新的数据点来增强数据集,从而使得模型能够更好地适应数据分布,提高泛化性能。
此外,虽然混合后的样本标签被赋予了一个简单的线性插值,但在训练过程中,混合样本所占的比例通常很小,因此不会对整个数据集的标签分布造成显著的影响。因此,mixup 数据增强是一种基于数据流形假设的合理正则化方法。
当然,这并不意味着所有的数据增强方法都是有效的,也不意味着所有的增强方法都不会破坏数据流形。因此,选择合适的增强方法需要基于对特定数据集和任务的理解和分析,以及实验结果的验证。
Q:数据增强与数据流形有哪些关系吗?
A:数据增强与数据流形的关系可以从以下两个方面来考虑:
- 数据增强可以在保持数据流形结构的同时增加数据样本的数量和多样性。数据流形假设认为高维数据往往分布在低维流形上,即数据空间的局部结构可以用低维流形来刻画。因此,在进行数据增强时,需要注意不破坏数据在流形上的局部结构,以保持数据的几何性质。例如,旋转、缩放、平移等操作可以保持数据在低维流形上的结构不变,而随机裁剪、扭曲等操作则可能破坏数据流形的结构。
- 数据流形的结构可以用来指导数据增强策略的设计。通过对数据流形的研究,可以发现不同类别数据的流形结构差异,从而设计更加有效的数据增强方法。例如,针对小样本学习问题,可以通过对数据流形的分析,设计出一些针对性的数据增强方法,如在类别之间进行插值操作(如 mixup)以产生新的样本,从而提高模型的泛化能力。
因此,数据增强与数据流形密切相关,数据增强的目标之一是保持数据在低维流形上的局部结构,而数据流形的结构也可以为数据增强提供指导。