如果有足够的训练数据,机器学习模型可以表现出色。不幸的是,对于许多应用程序来说,对高质量数据的访问仍然是一个障碍。
解决这个问题的一个方法是“数据增强”,这是一种从现有的训练样本中生成新的训练样本的技术。数据增强是一种在数据约束环境下提高机器学习模型性能和准确性的低成本和有效的方法。
机器学习模型的“过度拟合”
当机器学习模型在有限的例子上进行训练时,它们往往会“过度拟合”。当机器学习模型对其训练示例执行准确,但不能推广到未见数据时,就会发生“过度拟合”。
在机器学习中有几种方法可以避免“过度拟合”,比如选择不同的算法、修改模型的结构和调整参数。但最终,解决“过度拟合”的主要方法是向训练数据集添加更多高质量数据。
例如,考虑卷积神经网络(CNN),这是一种机器学习架构,特别适合于图像分类任务。如果没有大量多样的训练例子,CNN最终会在现实世界中对图像进行错误分类。另一方面,如果CNN接受不同角度和不同光照条件下的物体图像训练,它在现实世界中识别物体的能力会变得更加强大。
然而,收集额外的培训示例可能是昂贵的、耗时的,有时甚至是不可能的。这一挑战在监督学习应用程序中变得更加困难,因为训练示例必须由人类专家标记。
数据增加
增加训练数据集多样性的方法之一是创建现有数据的副本,并对其进行小的修改。这被称为“数据增强”。
例如,假设在图像分类数据集中有20张鸭子的图像。通过创建鸭子图像的副本并水平翻转它们,您已经将“鸭子”类的训练示例增加了一倍。您可以使用其他转换,如旋转、剪切、缩放和转换。您还可以结合这些转换来进一步扩展独特的训练示例集合。
数据扩充不需要局限于几何操作。添加噪点、改变颜色设置和其他效果(如模糊和锐化滤镜)也可以帮助将现有的训练示例作为新的数据。
数据扩充的例子
数据增强对于监督学习特别有用,因为您已经有了标签,不需要额外的工作来注释新的示例。数据增强对于其他类型的机器学习算法也很有用,如无监督学习、对比学习和生成模型。
数据增强已经成为训练计算机视觉应用的机器学习模型的标准实践。流行的机器学习和深度学习编程库具有易于使用的函数,可以将数据增强集成到机器学习训练管道中。
数据增强不仅局限于图像,还可以应用于其他类型的数据。对于文本数据集,可以用它们的同义词替换名词和动词。在音频数据中,可以通过添加噪声或改变播放速度来修改训练示例。
数据扩充的限制
数据增强并不是解决所有数据问题的灵丹妙药。您可以将其视为机器学习模型的免费性能增强器。基于您的目标应用程序,您仍然需要具有足够示例的相当大的训练数据集。
在某些应用程序中,训练数据可能太过有限,无法通过数据扩充来提供帮助。在这些情况下,必须收集更多的数据,直到达到最小阈值,才能使用数据增强。有时,您可以使用迁移学习,即您在一个通用数据集(例如ImageNet)上训练机器学习模型,然后通过微调其针对目标应用程序的有限数据的更高层次来重新利用它。
数据增强也不能解决其他问题,比如训练数据集中存在的偏差。数据扩充过程还需要进行调整,以解决其他潜在的问题,例如类不平衡。
如果使用得当,数据管理可以成为机器学习工程师工具箱中的一个强大工具。