用生成模型做数据增强,大家想的都是,如果样本越逼真,和真实分布接近,同时还能引入diversity,那肯定对模型分类训练有帮助啊,相当于不用人标注了。无穷样本 + 无穷算力岂不美哉?
但是。。。目前work的数据增强方式貌似并不是产生越像真的越好。。。
比如Cutout,随机在图片某个位置以NxN大小区域mask out像素值。就像下面这样
这里面的样本应该跟真实分布有比较大差异吧,尤其你看有的把物体关键部分全部盖住了(像马的头,飞机机身),按理来说模型在这样的样本上学习,能学出个啥来。但是最后test效果就是好。cifar10最好的预测现在应该都是默认要加cutout了。
再比如今年ICLR上有一篇,题目就叫“ImageNet-trained CNNs are biased towards texture; increasing shape bias improves accuracy and robustness ”,是说发现直接在ImageNet上训练出来的网络实际上主要依赖于texture进行分类。比如将大象表皮纹理通过style transfer到猫图片上去,会将形状上看上去是猫的图片分类为大象。
于是作者提出通过style-transfer方式进行data augmentation,让网络更多关注物体形状,从而提高了模型的准确性和鲁棒性。
上面就是对一张图片做的多种stylized data augmentation。也算是某种生成模型的结果。这些图片和原始分布要差异更大吧,但是最后还是实验证明效果好。
所以说用生成模型做数据增广,或许不是按照我们想象的那么简单。甚至是有可能反直觉的。就是做数据增广,其实是要将图片中的关键信息保留,无关信息随意扰动,还要迫使模型学习到input和label之间的关系,类似于information bottleneck的想法。数据增广像是某种有噪声信道,但是设计的要恰到好处,有针对性。比如上面的cutout,如果改成类似dropout方式,在每个像素点随机mask掉值,训练效果反而不行。也就是说这种干扰得保留一定结构性。
Google的Quoc Le大神今年在nips上推出了AutoAugment: Learning Augmentation Policies from Data,直接用RL学出来augmentation policy,以后不仅不用你调参设计网络,连augmentation都给你省了,瑟瑟发抖/(ㄒoㄒ)/~~