第9章:深度学习的工程实践
数据预处理与增强
1. 数据预处理的核心目标
- 消除数据偏差:处理缺失值、异常值和噪声
- 统一数据尺度:标准化(Z-score)和归一化(Min-Max)
- 特征工程:类别特征编码(One-Hot/Label Encoding)、文本分词
- 维度处理:PCA降维、特征选择(基于方差/模型)
2. 常见预处理技术
2.1 数值数据
# 标准化示例
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
2.2 图像数据
- 通道标准化(ImageNet均值:[0.485, 0.456, 0.406])
- 灰度化/色彩空间转换(RGB→HSV)
- 分辨率统一(双线性插值)
2.3 文本数据
- 词袋模型/TF-IDF
- 子词切分(BPE/WordPiece)
- 序列填充(Padding)与截断
3. 数据增强策略
3.1 图像增强
| 技术 | 参数示例 | 效果 |
|---|---|---|
| 随机旋转 | degrees=(-15, 15) | 增加旋转不变性 |
| 色彩抖动 | brightness=0.2, contrast=0.3 | 提升光照鲁棒性 |
| CutMix | α=1.0 | 区域混合增强泛化能力 |
3.2 文本增强
- 同义词替换(WordNet/NLTK)
- 回译(Back Translation)
- EDA技术(随机插入/删除/交换)
4. 工程实践要点
- 流水线设计:使用
torchvision.transforms或tf.data构建可复用的预处理管道 - 内存优化:
- 生成器模式(Keras的
ImageDataGenerator) - LMDB/HDF5二进制存储
- 生成器模式(Keras的
- 验证方法:确保增强不改变数据语义(如医疗图像的翻转可能不适用)
5. 典型案例
COVID-19 CT分类任务:
- 原始数据不足→采用弹性变形增强
- 窗宽窗位调整(-1000~400HU)
- 最终使模型AUC提升12%
"数据质量决定模型上限,预处理决定能否逼近这个上限" —— Andrew Ng
[附] 推荐工具:
- OpenCV(图像处理)
- Albumentations(高性能增强库)
- TextAttack(文本增强框架)
