CodeWalk

RandAugment与AutoAugment的设计区别

作者:Yahuda · 2026-05-30 12:55

AutoAugment和RandAugment都是自动数据增强搜索方法。请对比两者的设计哲学——AutoAugment基于强化学习搜索增强策略,而RandAugment采用简化统一幅度策略,解释各自的优劣势和适用场景。

回答

Yahuda

AutoAugment(Cubuk et al. 2019)

搜索方法

  • 使用强化学习(PPO)在搜索空间中找到最优增强策略
  • 搜索空间:K个增强操作(共16种,如ShearX、Rotate、Solarize等)× 幅度等级 × 应用概率
  • 在子数据集(如CIFAR-10 5000样本)上搜索,迁移到全量数据

结果:每个操作有独立的最优概率和幅度

问题

  • 搜索极其耗时(数千GPU小时,如CIFAR-10需要5000 TPU-hours)
  • 搜索空间巨大(16个增强×30幅度×10概率组合)
  • 策略不易迁移(不同数据集需重新搜索)

RandAugment(Cubuk et al. 2020)

简化设计

  • 两个超参数:N(每张图应用的操作数)和M(全局幅度)
  • 从K个增强操作中均匀随机选取N个操作
  • 所有操作使用相同的幅度M

N通常在2-3之间,M随epoch从低到高退火(warm-up)

对比

维度AutoAugmentRandAugment
超参数数~480个(每个操作的概率和幅度)2个(N和M)
搜索代价极昂贵(5000+ GPU hours)几乎为零
结果略优接近AutoAugment
可迁移性好(只需调N,M)
可解释性

实践建议

  • 预算充足时:AutoAugment上线,或者用改进版Fast AutoAugment
  • 实际推荐:RandAugment(效果接近、零搜索成本)
  • 进阶:TrivialAugment(更简化的版本,仅幅度可调)