数据增强 (Data Augmentation):无中生有的艺术
数据增强是一种通过对现有训练数据进行一系列变换,来“无中生有”地创造出新的、合理的训练样本的技术。它是解决数据量不足、防止模型过拟合最有效的方法之一。
图像数据增强
对于图像数据,我们可以进行多种几何和颜色变换。例如,一张“猫”的图片,即使经过轻微的旋转、翻转或亮度变化,它依然是一张“猫”的图片。通过这些变换,我们能让模型学习到更具泛化能力的特征,而不是仅仅记住原始图片的样子。
动手试试:
点击下面的按钮,观察原始图片是如何通过不同的技术进行增强的。
from tensorflow import keras
from keras import layers
# 在 Keras 中使用内置层进行数据增强
data_augmentation = keras.Sequential([
layers.RandomFlip("horizontal"),
layers.RandomRotation(0.1),
layers.RandomZoom(0.1),
])
# model = keras.Sequential([
# data_augmentation,
# ... a rest of the model
# ])
文本数据增强
文本增强比图像增强更具挑战性,因为它需要保证变换后的句子在语法和语义上仍然是通顺和合理的。常见的技术包括同义词替换、随机插入/删除单词、回译(将文本翻译成另一种语言再翻译回来)等。
动手试试:
点击按钮,观察一个原始句子是如何通过不同的技术进行扩充的。
import nlpaug.augmenter.word as naw
# 使用 nlpaug 库进行同义词替换
aug = naw.SynonymAug(aug_src='wordnet')
text = "这只猫咪非常可爱"
augmented_text = aug.augment(text)
# 可能的输出: "这只猫儿十分可爱"
原始句子:
这只猫咪非常可爱。
增强后的句子:
这只猫咪非常可爱。