Transfer Anomaly Detection by Inferring Latent Domain Representations
作者:Atsutoshi Kumagai,Tomoharu Iwata
会议:NeurIPS 2019
贡献:
使用源域的正常和异常实例或者仅使用正常实例训练自编码器,通过引入隐域向量(latent domain vector)(域的隐表示,由每一个域的正常实例通过神经网络得到)的概念,所提出的方法可以为目标域推断出异常检测器,而不需要在目标域中重新训练。
每一个域的隐域向量都是由每个域的正常实例来得到的,每个域的异常分数函数由自编码器的偏差来建模,并且自编码器具体的域属性由隐域向量来控制。
准备知识:
由于AE的简洁有效性,AE在最近的半监督异常检测中广泛使用,所以本文也使用AE作为所提出方法的基础。AE的用来训练的损失函数表示如下:
方法:
Task
令$Xd^+:={x{dn}^+}{n=1}^{N_d^+}$表示第d个域中的异常实例,其中$x{dn}^+ \in R^M$,第d个域中第n个实例的M维特征向量,$Nd^+$是异常实例的数量,同样定义$X_d^-:={x{dn}^-}_{n=1}^{N_d^-}$。我们假设$N_d^+<<N_d^-$,M在所有域中都是相同的,在$D_S$个源域中有异常和正常实例,在$D_T$个目标域中有正常实例,注意本文所提出的方法也可以处理源域只有正常实例的情况。
本文的目标是对于所有目标域获得一个领域具体的异常分数函数,用来输出实例的异常分数。
Domain-specific Anomaly Score Function
基于AE的重构误差来定义本文的领域具体的异常分数函数。假设每一个领域都有一个K维的隐藏连续变量$\bold z_d \in R^K$,在本文中称为隐域向量,对于第d个域,定义如下的异常分数函数:
其中的参数$\theta:=(\theta_F,\theta_G)$在所有域中共享。通过改变$z_d$的值,本文的方法可以灵活的改变异常分数函数的属性。
Models for Latent Domain Vectors
由于隐域向量无法被观测到,所以我们从数据中对其进行估计。通过给定的正常实例,建模隐域向量的条件概率为多元高斯分布:
其中diag是对角协方差矩阵。均值$\mu\phi(X_d^-)\in R^K$,方差$\sigma\phi^2(Xd^-)\in R^K+$是通过神经网络来进行建模,神经网络的参数$\phi$在所有域中共享。在这个模型中隐域向量$z_d$依赖于正常实例$X_d^-$。通过建模,当一个域的正常实例给定时,我们可以推断任何域的隐域向量。相应的就可以得到领域具体的异常分数函数,而不需要重新训练。
Objective Function
定义本文的目标函数,使用领域具体的异常分数函数和隐域向量。首先,对于第d个源域在隐域向量$z_d$约束下的最小化目标函数定义如下:
这种形式的目标函数由二作提出(Supervised anomaly detection based on deep autoregressive density estimators.),但是没有考虑领域差异。
其中超参数$\lambda\geq 0$,$f$是sigmoid函数,上式的第一项表示的是第d个域内正常实例的异常分数,因为正常实例的异常分数应该很小,所以我们最小化这一部分。上面公式的第二项是AUC的可微近似,对于类别不平衡的数据很有效,异常实例的异常分数应该比正常实例的高,$s\theta(x{dm}^+|zd)>s\theta(x{dn}^-|z_d)$对于任意的$x{dm}^+\in X^+d,x{dn}^-\in X^-_d$。
当域中没有异常,或者$\lambda=0$,上式第二项等于0,第一项保留。所以这一目标函数是AE的有监督扩展。
由于隐域向量$zd$具有方差$\sigma^2\phi$的不确定性,也就是隐域向量是由数据估计的,因此估计往往具有不确定性。我们想要针对目标函数适当地考虑这一点,所以定义了如下的第d个源域的目标函数来最小化:
其中$D{KL}(q\phi(zd|X_d^-)||p(z_d))$是$q\phi(z_d|X_d^-)$和一个标准正态分布$p(z_d):= {\cal N}(0,I)$之间的KL散度,$\beta>0$是一个超参。
上式第一项是公式(3)关于$q\phi(z_d|X_d^-)$的期望。这一期望项可以通过重新参数化(reparametrization)技巧(trick)有效地近似,即$\mathbb{E}{q\phi(z_d|X_d^-)}[L_d(\theta|z_d)] \approx \frac{1}{L} \sum{l=1}^LLd(\theta|z_d^{(l)})$,其中,$z_d^{(l)}=\mu{\phi}(Xd^-)+\epsilon_d^{(l)} \odot \sigma{\phi}(X_d^-),\epsilon_d^{(l)} \sim {\cal N}(0,I)$,其中$\odot$表示每个元素分别相乘,$L$为随机采样$L$次
上式第二项是正则化项,防止隐域向量的过拟合,这种形式的正则化项在VAE中比较常见。
对于第d个目标域的目标函数通过忽略掉公式(4)中的异常项,因为目标域中没有异常实例,也就是:
其中的第一项也可以按上面的方法近似。所以本文所提出的方法的目标函数也就是以下各领域目标函数的加权和,${\cal L}d(\theta,\phi):=\sum{d = 1}^{D_S+D_T} \alpha_d {\cal L}_d(\theta,\phi)$,其中$\alpha_d\geq 0$是超参数,通过梯度下降,目标函数可以关于$\theta,\phi$最小化
Inference
通过学习到的参数$(\theta*,\phi*)$和正常实例$X_{d’}^-$,为第$d’$个域推断特定域的异常分数函数,如下所示:
其中$z{d’}^{(l)}=\mu{\phi*}(X{d’}^-)+\epsilond^{(l)} \odot \sigma{\phi*}(X{d’}^-),\epsilond^{(l)} \sim {\cal N}(0,I)$,$x{d’}$是第$d’$个域的任意实例,可以得到异常分数函数,在$X_{d’}^-$没有参与到训练的情况下。
实验:
本文用到了一个合成数据集和四个类别不平衡的真实数据集。
Data
我们创建了简单的二维数据集如下所示,此数据集由围绕(0,0)的8个双层圆(域)组成。每个双层圆有外圆和内圆,分别由正常实例和异常实例组成。使用第7个域作为目标域,其余的作为源域。使用四个真实数据集:MNIST-r, Anuran Calls, Landmine, 和 IoT。
Synthetic, MNIST-r, Anuran Calls, Landmine, 和 IoT的平均异常比例为0.048, 0.1, 0.024, 0.062, 和 0.05
Comparison Methods
比较了本文的两个变体:ProT 和 ProS。ProT使用目标域中的正常实例以及异常和正常源实例进行训练。ProS不使用目标域正常实例进行训练,在使用源域训练完成后,ProS使用目标域的正常实例来推断目标域的异常分数函数而无需再训练。
比较了本文的方法和其他八个方法:NN,NNAUC,AEAUC,AE,OSVM,CCSA,TOSVM,OTL,其中AE,OSVM是半监督异常检测方法,NN,NNAUC,AEAUC是监督学习方法,AEAUC和本文的方法类似,不过没有考虑隐域向量。CCSA, TOSVM, 和 OTL是迁移学习方法或者是迁移异常检测方法。
Results
首先是合成数据集上的结果,如上Figure 2所示。2b是通过ProS估计的隐域向量(K=2),特别的,目标域的隐域向量通过源域的隐域向量预测出来了,尽管目标域没有参与到训练。2c表示的是通过ProS得到的目标域异常分数的热力图。2d表示的是在目标域上不同$\lambda$所得到的AUC折线,使用AEAUC作为基线,因为它是由ProS忽略隐域向量得到的。
接下来是在真实数据集上的结果。表1-4展示的是不同数据集,不同目标域上AUC的均值和标准差。
第三,研究了该方法中考虑潜在域向量不确定性的影响,为此考虑了ProT和ProS的确定性变量,称作D-ProT和D-ProS,表5展示了结果。
第四,研究了异常训练实例数量的影响,表-6展示了结果。