论文笔记:Online Hyper-parameter Learning for Auto-Augmentation Strategy

背景及论文简介

数据增强是对抗模型过拟合的一个较为有效的方法,但增强策略的设计非常依赖专家的经验,而且需要极大的工作量。2018年,自动数据增强的方法被提出(AutoAugment),使用强化学习等方法可搜索出针对模型和数据集的有效策略。然而,即使AutoAugment可以有效对抗过拟合,提升模型精度,但该方法需要极大的计算量,效率较低。对此,作者提出了自己的方法:OHL-Auto-Aug,并总结其三大贡献:

1. 作者将自动数据增强视为超参数优化的问题,将增强策略表述为概率分布,该分布中的参数被视为超参数,

2. 为了使超参数的优化和模型的训练一同进行,达到提高效率的目的,作者引入了一种双层训练框架,

3. 作者提出的方法非常有效,在达到与AutoAugment相近的模型精度的前提下,效率比AutoAugment在CIFAR-10上快60倍,在ImageNet上快24倍。

 

方法详解

符号及对应公式

增强操作的概率分布:\large p_{\theta},该分布的参数为\large \theta

K个候选增强操作:\large \left\{O_{k}(\cdot)\right\}_{k=1: K}

每个增强操作被选中的概率:\large p_{\theta}\left(O_{k}\right)

模型\large \mathcal{F}(\cdot, w)及其参数\large w

训练集:\large \mathcal{X}_{t r}=\left\{\left(x_{i}, y_{i}\right)\right\}_{i=1}^{N_{tr}}

验证集:\large \mathcal{X}_{val}=\left\{\left(\hat{x}_{i}, \hat{y}_{i}\right)\right\}_{i=1}^{N_{val}}

 综上,对于作者的增强操作的方法,其目的是:找到一个\large \theta,使得验证集精度最大;并找到一个\large w^*,使得训练的loss最小。

\large \theta\large w^*要同时满足:

\large \max _{\theta} \mathcal{J}(\theta)=\operatorname{acc}\left(w^{*}\right)

\large w^{*}=\arg \min _{w} \frac{1}{N_{t r}} \sum_{(x, y) \in \mathcal{X}_{t r}} \mathbb{E}_{p_{\theta}(O)}[\mathcal{L}(\mathcal{F}(O(x), w), y)]

其中,

\large \operatorname{acc}\left(w^{*}\right)=\frac{1}{N_{val}} \sum_{(\hat{x}, \hat{y}) \in \mathcal{X}_{v a l}} \delta\left(\mathcal{F}\left(\hat{x}, w^{*}\right), \hat{y}\right)

值得注意的是,原论文中的这条公式中,等号右边的\large N_{val}写成了\large N_{tr},我感觉这是个错误,所以自作主张在此更正了。

双层训练框架(Bilevel Framework)

以往的自动数据增强方法(AutoAugment)针对所有采样的增强策略,采用子模型(代理模型)对其进行验证,并将精度作为reward喂入RNN Controller,这一过程非常耗时,若再考虑到强化学习的多次迭代,计算量是非常巨大的。对此,作者认为应将模型的训练和增强策略的搜索同时进行,从而避免每次对模型的从头训练,进而提高效率。对此,作者提出了双层的训练框架:

外层的训练:即反复进行内层训练,一共进行\large T_{max}轮(\large T=1, 2, 3...T_{max}),每轮都要进行采样以及更新策略的概率分布。

内层的训练:

  • 训练开始前,并列的多个模型参数是一致的。
  • 训练时,一共迭代\large I轮(\large i=1, 2, 3...I,不是\large I个epoch),batchsize为\large B,训练使用SGD来更新网络模型的参数(即\large w)。训练时的每个样本(图像),会被从增强策略的概率分布中采样得到的一个操作增强。也就是说,在一个完整的内层训练中,会采样得到\large I \times B个增强操作。
  • 训练完毕后,通过REINFORCE梯度更新策略的概率分布,并将并列训练的多个模型中,精度最高的模型的参数broadcast到下一轮内层训练的所有初始模型中。

网络模型内层迭代时的更新与外层迭代时的传播:

\large w_{T-1}^{(i)}=w_{T-1}^{(i-1)}-\eta_{w} \nabla_{w}\left[\mathcal{L}_{B}\left(\mathcal{T}^{(i)}, w_{T}^{(i-1)}, x_{B}, y_{B}\right)\right]
\large w_{T-1}^{(0)}=w_{T-1}, w_{T}=w_{T-1}^{(I)}

其中\large \eta_{w}为模型参数的学习率,采样到的增强操作为\large \mathcal{T}=\left\{O_{k(j)}\right\}_{j=1:(I \times B)}

外层训练时,概率分布参数的更新:

\large \begin{aligned} \theta_{T} &=\theta_{T-1}+\eta_{\theta} \nabla_{\theta} \mathcal{J}\left(\theta_{T-1}\right) \\ &=\theta_{T-1}+\eta_{\theta} \nabla_{\theta} \mathbb{E}_{w_{T}}\left[\operatorname{acc}\left(w_{T}\right)\right] \end{aligned}

\large \eta_{\theta}为概率分布的学习率。由于外层训练的目标是最大的验证集精度,因此是往梯度上升方向更新,因此公式中为加号。

自此,作者遇到的两个问题:一方面,验证集精度无法微分求导;另一方面,网络模型参数\large w多且杂,其微积分计算也难以为继。为此,作者使用REINFORCE梯度方法,利用蒙特卡洛采样来得到梯度\large \nabla_{\theta} \mathcal{J}\left(\theta_{T-1}\right)的近似值。这个采样过程即为内层训练中,并行训练\large N个模型。另外,在内层的训练中,模型一开始都是相同的参数\large w,但由于随机采样导致的训练过程中,样本应用的增强操作不同,训练结束后每个模型的参数也不同,因此作者认为\large w仅受到\large \mathcal{T}的影响,因此\large p(w_{\mathcal{T}}) = p(\mathcal{T})(为了保证该等式成立,训练时batchsize应该固定),且有:

\large p(\mathcal{T})=\prod_{j=1}^{I \times B} p_{\theta_{T-1}}\left(O_{k(j)}\right)

至此,外层训练时概率分布参数的更新可以写为:

\large \begin{aligned} \nabla_{\theta} \mathcal{J}(\theta) &=\nabla_{\theta} \mathbb{E}_{w_{T}}\left[\operatorname{acc}\left(w_{T}\right)\right] \approx \frac{1}{N} \sum_{n=1}^{N} \nabla_{\theta} \log \left(p\left(w_{T, n}\right)\right) \operatorname{acc}\left(w_{T, n}\right) \\ &=\frac{1}{N} \sum_{n=1}^{N} \nabla_{\theta} \log \left(p\left(\mathcal{T}_{n}\right)\right) \operatorname{acc}\left(w_{T, n}\right) \\ &=\frac{1}{N} \sum_{n=1}^{N} \sum_{j=1}^{I \times B} \nabla_{\theta} \log \left(p_{\theta_{T-1}}\left(O_{k(j), n}\right)\right) \operatorname{acc}\left(w_{T, n}\right) \end{aligned}

算法流程和候选增强操作

由上图可得,对于单张样本的一次增强(即应用一个增强元素),可以有36种,作者定义单个增强操作由两种增强元素组成,那也就是说可以有36^2种不同的增强操作(单一操作中允许存在两个一样的元素)。这样一来,所谓的增强策略的概率分布参数,就是一个36×36的矩阵。

 

实验结果

作者在CIFAR-10和ImageNet上验证了其方法:

CIFAR-10

作者的验证集从CIFAR-10的50000张样本的训练集中随机取得,验证集包括5000张样本。

为了与当时的SOTA保持一致,作者的训练过程为:pre-processing,OHL-Auto-Aug,Cutout。而SOTA的过程除了缺少OHL-Auto-Aug,其他一致。训练所用的详细超参数这里就不赘述了。

注意:这里所述的OHL-Auto-Aug,是指通过将该方法找到的增强策略应用到模型中,而不是进行完整搜索过程。

ImageNet

OHL-Auto-Aug计算量分析

作者通过计算AutoAugment方法和OHL-Auto-Aug的迭代次数来探究两种方法在计算量和效率上的差距。两者统一采用1024的batchsize:

对于AutoAugment,15000个子模型,每个模型训练120epoch,reduced CIFAR-10有4000张样本,则总的迭代次数为:15000×4000×120/1024 = 7.03 × 10^6,同理,对于reduced ImageNet的6000张样本,对应的迭代次数为1.76 × 10^7。

对于OHL-Auto-Aug,并行模型8个,每个300epoch,完整CIFAR-10有50000张样本,则迭代次数为300 × 8 × 50000/1024=1.17 × 10^5,同理,在完整ImageNet的128万张样本上,并行模型4个,每个150epoch,其迭代次数为7.5 × 10^5。

可见,不仅在效率上OHL-Auto-Aug要显著优于AutoAugment,由于在完整数据集上进行训练,还避免了受到输入数据偏差的影响。另外,由于OHL-Auto-Aug的策略搜索与模型训练一同进行,后续省下了模型再训练的时间,效率可进一步提高。

实验分析

作者探究了不同的策略的概率分布参数的学习率对精度的影响,以及内层训练中并行训练的模型数量对精度的影响:

此外,作者还探究在CIFAR-10和ImageNet数据集上,随着训练进行,增强策略概率分布的变化情况。作者将36×36的参数矩阵按行求和并将数据标准化,得到下图:

可见,随着训练的进行,不同数据集上的概率分布也逐渐不同,说明作者的OHL-Auto-Aug方法是可以根据数据集特点进行有效的增强操作的搜索与选择。

 

参考资料

https://arxiv.org/pdf/1905.07373.pdf

https://zhuanlan.zhihu.com/p/147577672

https://blog.csdn.net/sinat_34686158/article/details/105196664

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值