CVPR2021论文详解Rainbow Memory: Continual Learning with a Memory of Diverse Samples
论文地址:https://arxiv.org/abs/2103.17230代码地址:https://github.com/clovaai/rainbow-memory本文基于样本回放的方法,本文某种意义上借鉴了主动学习中找难样本的方法,将找到的难样本作为Memory中用于回放的样本。本文的意义在于如何寻找难样本。1.贡献点因为本文涉及memory,因此可以看作基于样本回放的增量学习方法。本文解决的
论文地址:
https://arxiv.org/abs/2103.17230
代码地址:
https://github.com/clovaai/rainbow-memory
目录
本文基于样本回放的方法,本文某种意义上借鉴了主动学习中找难样本的方法,将找到的难样本作为Memory中用于回放的样本。
本文的意义在于如何寻找难样本。
1.贡献点
因为本文涉及memory,因此可以看作基于样本回放的增量学习方法。本文解决的问题是,如何选取更好的样本来放置在Memory之中。
基于增量学习的任务,旧任务和新任务之间界限分明。但是实际上很多时候旧任务和新任务的边界并不清晰,因此本文基于‘blurry’的task boundary来优化问题。(这里的blurry在后面又详细的定义,意思是不同的增量task之间是否有共有类,其实相当于广义的类别增量问题。)
为了让memory中的样本保持多样性,本文提出了Rainbow Memory(RM),
随时根据新样本更新Episodic Memory,然后根据Mmory进行DA(Data augmentation)来进行多样化。
2.方法
2.1问题定义
- C表示所有的类别,
- Tt表示task t之中的类别,相当于C的子集
- D上标C下标c表示所有类别C中子类c的样本
- D上标T下标t表示task t中类别c的样本
- 对于disjoint 类别增量问题,不同task之间没有共有类,这是狭义的类别增量。
- 对于Blurry的类别增量问题,不同的task之间有共有类,这是广义的类别增量。
2.2 uncertainty衡量标准
在feature space中越接近decision boundary的样本越好,即diverse的样本。如果想要知道样本是否diverse, 需要计算与其他样本之间的相对位置,因此复杂度是O(N*N), 计算开销巨大。因此,本文考虑的是相对位置,通过uncertainty来确定,即模型对于样本的确定性越强,则样本的divese越弱。
即样本经过变换之后,比如遮挡、平移、旋转等等,如果在模型中的输出的结果方差越大,样本越难,则说明此样本越diverse. (这里作者的解释并不清晰,逻辑关系有点模糊,因为模型经过变换之后在网络中的输出结果不确定,并不能说明这个样本就靠近decision boundary)
假定样本为x,经过perturbed(这里意思是变换和扰动)的样本为x^hat, 则x^hat在模型预测出的不确定性越高,说明这样本越diverse.(这里借鉴了主动学习的思想,相当于保留难样本)
derivation可以被表示为下面这样:
- x表示原始样本
- x^hat表示经过perturbed的样本
- A表示样本标签
- D^hat表示所有x^hat的分布
perturbed样本被定义为如下格式:
fr()表示随机函数,用于对原始样本x进行随机变换
最终的样本的uncerterainty定义为如下:
u(x)表示样本x的uncertainty, Sc表示第c类的被预测为top1的次数。
总体而言,标签为c的样本,经过perturbed后,被网络预测为c类的次数越多,则不确定性越弱。
2.3算法流程
核心算法就是Memory如何更新,算法流程如下:
Memory size被限定在M,Nt表示总类别
因此每个任务到达之后,分配给每个类别的Memory大小为 kc=floor(K/Nt)
相当于每次任务到来之后,模型将新的增量任务数据与Memory中数据,按照上面的diverse的计算方法进行排序,最终只取最具diversity的样本。
2.4 数据增强
作者借鉴了CutMix的方法(相当于MixUp的一个改进),对Memory之中的样本进行增强:
m表示randomly selected pixel region
根据后面的实验,这个数据增强时而有效时而无效,比较鸡肋,是作者凑贡献点用的。
3.实验
A5: Last Accuracy
F5: Last Forgetting
I5: Instransigence
实验结果:
RM w/o DA表示没有数据增强,A5,F5,I5表示几个数据集的划分方法。
可以看出本文方法RM(Rainbow Memory)可以达到SOTA的效果。
4.结论
本文其中一个贡献点,就是如何选取用于回放的样本,但是选取的时候有一个逻辑缺陷:
难样本=靠近决策边界的样本≠样本经过变换后在模型中结果方差大,三者并不能完全划等号,论文绕过后一个等号直接进行了运用,逻辑有缺陷。但是论文通过实验验证了这个假设具有一定的有效性,说明了这种样本选取方法有一定的可取性。
另一个贡献点,数据增强,参考了MixCut的方法对回放样本进行数据增强,其实相当于A+B,但是实验效果差强人意。
不过论文的回放样本选取方式确实取得了不错的效果,与已有方法相比达到SOTA,方法值得参考。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)