写点什么

数据增强(三)-Batch Augmentation

  • 2022 年 5 月 11 日
  • 本文字数:1121 字

    阅读完需:约 4 分钟

数据增强(三)-Batch Augmentation

1.背景

本文为数据增强的第三篇, batch augmentation; 顾名思义,在一个 batch 的数据中进行数据增强。


我们知道在深度学习的训练过程中,一般都采用 mini-batch 方式进行的训练;batch size 的大小可能会影响训练的精度,主要如下:


  • 越小的 batch-size,因为数据与整个数据集分布的个体差异性,引入梯度下降的噪声越大

  • 大的 batch-size,梯度下降能更反映整个数据集的准确性,但是大的 batch,梯度的方差变大,可能降低泛化能力;这个时候可以配合学习率的增大,学习步伐大一点,达到精度的提高。


Batch Augmentation 就是在增大 batch-size 训练时,提供一种简单的增强方式来达到更好精度的一种数据增强策略


参考文献:Augment your batch: better training with larger batches

2. 内容

2.1 增强策略

BA(batch augmentation)的增强策略其实非常的简单;在同一个 batch 中,对同一个样本进行多次的 augmentation(通常也包括没有进行 augmentation 的原始样本),即一个 batch 中一个样本有不同的实例


  • 生成原始 batch 的数据, batch-size=b

  • 运用普通 augmentation 策略,分布作用原始 batch 的数据,生成 m 份不同的数据

  • 合并 m 份数据,形成新的(m+1)*b 的 batch 数据,喂给模型进行训练


BA(batch augmentation)好处:


  • 梯度下降的方向会更准确,降低梯度下降的方差

  • 梯度下降更关注某一个图像的分类,而不仅仅图像样本本身


直观上,人类也很喜欢通过对比的方式,作出总结分类;BA 中同一样本多种不同的副本在同一个 batch 中学习,更好让模型学习到共同之处。



2.2 实现细节

按照上面的步骤,实现就很简单啦。可以结合 imgaug 进行


seq = iaa.Sequential([        iaa.CoarseDropout(0.05, size_percent=(0.02, 0.05)),        ], random_order=False)seq2 = iaa.Sequential([        iaa.SomeOf((0, 5), [                 iaa.OneOf([                    iaa.GaussianBlur((0, 2.0)),                    iaa.AverageBlur(k=(2, 5)),                    iaa.MedianBlur(k=(3, 7)),                ]),        ], random_order=False)def batch_aug_v1(x, y, aug_list=[seq, seq2]):    aug_x = None    aug_y = None    if aug_x is None:        aug_x = x
if aug_y is None: aug_y = y
for aug in aug_list: x_tmp = aug.augment_images(x) aug_x = np.concatenate([x_tmp, aug_x]) aug_y = np.concatenate([y, aug_y]) return aug_x, aug_y
复制代码

3. 结语

本实验介绍了 Batch Augmentation 的数据增强策略,通过在一个 batch 的对同一个样本建立多个不同的副本的简单策略,降低梯度下降的方差,提高训练速度和精度。实际场景中, BA 某些任务中有一定的效果。增加了一种调参的方式。


希望对大家有帮助。





发布于: 刚刚阅读数: 2
用户头像

公众号:人工智能微客(weker) 2019.11.21 加入

人工智能微客(weker)长期跟踪和分享人工智能前沿技术、应用、领域知识,不定期的发布相关产品和应用,欢迎关注和转发

评论

发布
暂无评论
数据增强(三)-Batch Augmentation_人工智能_AIWeker-人工智能微客_InfoQ写作社区