小样本利器4. 正则化+数据增强 Mixup Family代码实现( 三 )


Manifold Mixup

  • paper: Manifold Mixup: Better Representations by Interpolating Hidden States
  • github: https://github.com/vikasverma1077/manifold_mixup
【小样本利器4. 正则化+数据增强 Mixup Family代码实现】Manifold Mixup是在mixup基础上的改良,一言以蔽之就是把上面纠结的mixup在哪一层进行插值的问题,变成了每个step都随机选一层进行插值 。个人很喜欢这篇paper有两个原因,其一是因为觉得作者对mixup为何有效比原作解释的更加简单易懂;其二是它对插值位置的选择方案更适合BERT这类多层Encoder的模型 。而反观cv场景,优化点更多集中在cutmix这类对插值信息(对两个像素框内的信息进行融合)的选择上,核心也是因为图像输入的像素的信息量要远小于文本输入的字符所包含的信息量 。
说回Manifold mixup,它的整体实现方案很简单:在个layer中任选一个layer K,这里包括输入层(layer=0), 然后向前传导到k层进行mixup就齐活了 。作者的代码实现也很简单一个randint做层数选择,加上一连串的if layer==i则进行mixup就搞定了~
关键我们来拜读下作者对于Manifold Mixup为何有效的解释,作者从空间表征上给出了3个观点
  1. 得到更平滑,且远离样本覆盖空间的决策边界,这个同mixup
  2. 展平分类的空间表征:啥叫展平这个我最初也木有看懂,不过作者的证明方式更加易懂,作者对比了不同的正则方案mixup,dropout,batchnorm和manifold对隐藏层奇异值的影响,发现manifold相较其他正则化可以有效降低隐藏层的整体奇异值 。降低奇异值有啥用嘞?简单说就是一个矩阵越奇异,则越少的奇异值蕴含了更多的矩阵信息,矩阵的信息熵越小 。所以这里作者认为mixup起到了降低预测置信度从而提高泛化的作用 。更详细对奇异值的解释可以去知乎膜拜各路大神的奇异值的物理意义是什么?
  3. 更高隐藏层的融合,提供更多的训练信号:个人阅读理解给出的解读是高层的空间表征更贴近任务本身,因此融合带来的增益更大 。这也是我之前对为啥文本任务在Encoder之后融合效果效果有时比在输入层融合还要好的强行解释 。。。。
至于Manifold mixup为何比mixup更好,作者做了更多的数学证明,不过 。。。这个大家感兴趣去看下就知道这里为何省略一万字了~以及之后出现的Flow Mixup也挑战过Manifold会导致样本分布飘逸以及训练不稳定的问题,不过我并没有在NLP上尝试过manifold的方案,以后要是用了再来comment ~

经验总结扩展阅读