近几年,有大量的人用VAE和GAN来做异常检测,用这两个模型做异常检测的假设都是一样的,即假定正常数据是服从某一种分布的,而异常数据是不能够拟合进这个分布的,因此我们可以用VAE和GAN来找到正常数据的分布,从而用这个分布来做异常检测。
1、VAE
VAE是变分自编码器的简称,该模型最开始提出的目的是为了找到训练数据的分布,从而用这个分布来生成数据。从另一个角度而言,如果我们能够找到正常数据的分布,那么我们就可以用这个分布来做异常检测。具体来说,我们在训练数据上训练好一个VAE,该VAE的encoder能够将输入数据X映射到隐变量Z,decoder将隐变量Z再映射回X,当我们训练好一个VAE之后,如果我们输入一个异常数据,该模型很大概率会将该异常数据重构成一个正常数据,因此我们就可以判别输入数据是否是一个正常数据。用一句话概括,就是正常数据重构成正常数据的概率会很高,而异常数据重构成异常数据的概率会很低,而且一般来说我们输入一个异常数据,VAE也会将其重构成一个正常数据。
2、GAN
GAN做异常检测的原理和VAE是一样的,只不过这两者得到正常数据的分布的方式不同,VAE通过变分推断来得到训练数据的分布,而GAN直接使用生成器来模拟数据的分布,用判别器来判断生成器模拟的分布的好坏。
这两者都可以用来做异常检测,也都是基于训练数据的分布,但是VAE的鲁棒性比GAN更好,但是GAN在调优之后效果比VAE更好。