DeepSMOTE: Fusing Deep Learning and SMOTE for Imbalanced Data
论文信息
题目:DeepSMOTE: Fusing Deep Learning and SMOTE for Imbalanced Data
发表:IEEE TNNLS, 2022
作者: Damien Dablain, Bartosz Krawczyk , and Nitesh V. Chawla
动机
当前大多数用于处理Imbalanced data classification的Data-level方法大都只能处理一维的,具有显式特征的数据集(比如UCI里面的那种数据集), 而无法处理像图片这种具有二维结构的数据, 这限制了这些方法的使用范围.
在这里,作者提出了一种结合SMOTE(经典的用于处理imbalanced classification 的data level方法)的深度学习模型,能够有效合成Synthesize 少数类图像样本.
SMOTE回顾
SMOTE 的思路很简单: 对每个minority class的sample, 通过KNN找到其最近邻样本集合(取决于你想合成的数量,可以时一个也可以是多个), 然后在该sample和近邻sample的连线上进行插值(实际上就是对属性值进行加权平均)即可.
注: 在具体插值时,有一个权重系数 k ∈ ( 0 , 1 ) k \in (0,1) k∈(0,1), 通过不断调整该系数可以得到多个插值结果.
主要思路
要想借助Encoder-Decoder深度模型合成新的image, 那么如何把Smote算法考虑进来呢?
最直接的方法是: 在特征层面考虑Smote, 直接把Smote算法放到Encoder和Deocoder的中间, 即: 给定sample -> 通过Encoder进行编码得到编码向量, -> 使用Smote对其进行某种变形产生新的编码向量 -> 通过Decoder进行解码.
但是这种方式无论是Memory还是Computation都非常的低效.
作者是如何解决的? 方法很简单, 在训练模型的过程中引入了Permute sample Order操作作为Smote的’近似替代’来产生方差,从而训练一个解码能力足够的encoder-decoder模型. 然后在推断的过程中再用Smote替换Permute Oder操作, 这样一来就可以合成新的少数类Sample.
示意图如下:
到这里其实这篇文章的核心已经完全明了.
DeepSMOTE
算法伪码如下,简单明了:
Permute Sample order 为啥可以作为Smote的近似等效替代, 以及它存在的意义?
初看时感觉文章平平无奇, 回过头来再看还是挺有意思的, 如果能够明白这个问题, 就应该真的看到懂了这篇文章.
(1)首先, 提到图片的合成/生成, 大家首先想到的肯定时GAN这一类方法, 这一类方法往往需要一个至多个判别器Discriminator,
而作者在这里没有采用GAN而是采用了Encoder-Decoder架构, 那么如何保证其生成新图片的能力和质量呢? 换句话说, 如果Decoder的解码能力很弱,如果遇到新的编码向量,则生成的图片质量会非常差. 因此作者在Encoder和Decoder之间加入了Permute Order操作来引入方差, 从而让Decoder的解码能力足够强.
其存在的意义/必要性说完了, 那么它为什么是Smote 的等效替代呢?
上面已经说了,Smote 本质上是在给定样本的周围与其近邻Samples进行插值, 具体插值过程由权重系数
k
k
k决定.
Permute order本质上是对同类Samples内部进行洗牌 (记住时同类样本).
再看上面的源码, 损失由两部分组成: 第一部分时原始的重建误差, 作者又引入了第二项损失, 该损失实际上就是在最小化同类Samples的编码向量之间的距离, 相当于是限定插值时k的范围.
总结一句话就是: Permute Sample order这样一种方式引入噪声使Decoder具有解码不同于原始数据表示的能力, 同时引入了penalty loss term来控制decoded image与原始image的差异 (起到类似插值的作用).
DeepSMOTE与其他Data Augmentation的区别
一般的Data Augmentation实质上是在原始数据空间进行操作, 通过某种变形(翻转, 裁剪等)得到新的Image,
而DeepSMOTE是在特征空间进行操作,: 先把数据通过Encoder编码到特征空间,得到特征向量, 然后再通过Decoder对Smoted的特征向量进行解码得到新的Image.
总结
还是挺有意思的.
References
1.Dablain D, Krawczyk B, Chawla N V. DeepSMOTE: Fusing deep learning and SMOTE for imbalanced data[J]. IEEE Transactions on Neural Networks and Learning Systems, 2022.