论文笔记:Clustering and Unsupervised
论文思想:
在Auto-Encoder的训练中,加入一个L2 normalization constraint,利用提取到特征用k-means进行聚类 或者 异常检测工作,都取得了更好的效果。
1. Introduction
深度学习兴起后人们把深度无监督学习的表征方法用于聚类分析当中,大多数方法都是利用自编码提取到的特征来进行聚类并在此基础上定义一个聚类损失来调整参数。先前的很多这方面的work不同之处就在于它们不同的自编码器类型、结构以及不同的clustering loss。
在这篇文章中,作者不纠结于编码器的类型,而是在训练过程中 (during training)使用了L2 归一化,显著提高了聚类的准确性。并在此基础上,提出了一种无监督的异常检测方法,也是在训练过程中使用了L2归一化,同样得到了比其它方法(比如基于reconstruction error的)更优秀的效果。
2. Related Work
(1) 深度无监督异常检测
深度学习的方法已经被用在无监督的异常检测当中,用所有的数据训练一个AE并利用reconstruction loss来表征异常。在此,作者列举了几个现有的方法,但是总体而言,这些方法都认为:因为异常数据的比率是远远小于正常数据的,AE就不会学习准确地reconstruct它们了(异常数据就被区分出来了)。这种设想在正常样本来源于一个类别并且异常样本属于多个类别时(已被选定)是适用的,但当正常样本来源于多个类别而异常属于一个类时将不再适用。所以这篇文章就提出了一种新的无监督异常检测方法来解决这个问题。
(2)神经网络中的正则化与归一化
鉴于目前存在的许多归一化方法的缺陷(例如batch-norm依赖于batch-size),给出一种用在激活函数的归一化方法,叫做unit ball constraint。与layer 或者batch 方法不同的是,它是parameter-free的,因为把所有激活向量的值都设为1。然而它还是作为一个正则化方法,和L2 norm正则化有些类似,两者最关键的区别是在L2中,norm是权值,而在作者的方法是用在激活函数上的。另外一个关键是文章方法把激活向量的norm设为了1。
3. Proposed Method
(1)基于深度自编码特征的L2归约聚类
图片 1.png公式1中,I 代表输入,E(I)是AE中encoder提取的特征。fi代表第i层的计算过程。
2.png
公式2中,D(E(I))代表对于E(I)的reconstruction,这里和公式1对应,是通过多个全连接层或者反卷积层来实现的。每一层中可以使用un-pooling或者上采样等。gi表示对于获取特征的计算,这样一个m层的decoder得到的reconstruction就通过公式2得到了。
3.png
公式3是定义的reconstruction error,训练的目的就是降低L。
在这里,作者对E(I)给出了一个额外的步骤,即加一个L2归一化。这样以来,损失函数可以写为下面的形式: 4.png这里Lc和Ec是加上约束之后的损失和特征表示。
作者相信L2归约的特征更适合聚类,特别是对于利用欧式距离来做聚类的方法(比如k-means)。这是因为向量之间的距离不依赖于长度而是角度。与此同时,这种方法还有额外的一个作用,那就是可以作为整个AE的正则化。
在这里论文中提到了几种情况下对于MNIST数据集的聚类结果,分别是没有使用归一化的、训练之后采用L2、训练过程中采用L2。(其余各项条件一样)。结果显示训练过程中L2 直观上获得的聚类效果更好,而在训练之后L2是对聚类结果完全没有效果的。
(2)基于深度自编码特征的L2归约异常检测
前面介绍了聚类,作者紧接着介绍了异常检测,利用公式4的loss训练AE。并给出了一个normality score:
5.png
公式5中,Cj是cluster的中心。这个score,当Vi小于一个阈值时,就是异常。
4. 实验结果
作者分别介绍了在聚类和异常检测中的实验结果。首先是聚类,实验采用了被广泛采用的聚类准确率评判,见公式6。
6.png
最大化可以用图论中的匈牙利算法计算。
下面几个表给出了聚类额度实验结果,首先作者采用了不同的AE类型(Dense auto-encoder和CAE),对提取特征用k-means方法进行聚类,最后一列为作者的方法,其余的为先前工作者的方法,结果就是作者的方法取得了更好的效果。同时还做不同normalization的实验,可以看到L2 norm 是比batch or layer norm 要好很多的(两个数据集都是如此。)
7.png
在异常检测的实验中,作者在同样的AE结构下采用不同的检测方法(reconstruction和cluster),以及在方法相同的情况下采用L2和不采用。分别在MNIST 数据集上进行实验,用自己的方法得到更好的结果,下表为论文中的实验结果。
8.png