Deep Clustering via Joint Convolutional Autoencoder Embedding and RelativeEntropy Minimization
论文链接
总结
这篇文章提出了deep embedded regularIzed clustering (DEPICT)的方法,从网络架构上来讲是很多种trick的集成体。
网络
整体还是autoencoder的思路,变化主要有以下几点:
- 因为是图像,所以将中间层从linear层换成了conv层;
- 加入了去噪机制;
- 对loss的形式有所优化;
- 重构误差从‘用常见的只用初始层和输出层计算’转变到了‘将中间每一层对称的输入输出都做一次计算’。
架构
首先从上面图片的网络结构说起。这幅图应该自顶向下来看。
1. Noisy Encoder
这一部分与普通的autoencoder无甚区别,只是将输入变成了加入了噪音的输入且中间层变为了卷积层而已。最后这一部分的输出就是 z ~ 3 \tilde{z}^3 z~3(这里的上标代表着是第几层,如输入部分的 x ~ \tilde{x} x~就是 z ~ 0 \tilde{z}^0 z~0)。这个 z ~ 3 \tilde{z}^3 z~3就是一般autoencoder的中间表达。然后这部分的末尾接了一个softmax层,这一部分的工作不仅仅是一个softmax,还包含了一个linear层,将 z ~ 3 \tilde{z}^3 z~3的特征维度映射到 k k k维, k k k是簇的数量。然后就得到了每一个输入对应的簇,在图中用 p ^ \hat{p} p^表示。
2. Decoder
这一部分使用第一部分的 z ~ 3 \tilde{z}^3 z~3作为输入,使用逆卷积层将 z ~ 3 \tilde{z}^3 z~3重构。网络架构恰好与上一部分相反,与传统autoencoder的decoder部分也没有什么不同的。
3. Clean Encoder
这一部分使用未加入噪音的原始输入 x x x,直接使用Noisy Enocder部分训练出来的encoder,得到原始输入对应的 z , p z,p z,p。
损失函数
这一部分作者提出了两种损失函数,第二种的形式相对较为简单,是第一种方式的‘化简’。下面将分别对它们进行介绍。
构成
文中提出的损失函数分为两个部分:聚类部分和重构部分。重构部分相同,所以先介绍重构部分。
重构损失
这一部分相对于传统的重构误差(只使用decoder的输出 x ^ \hat{x} x^与原始的输入 x x x)有所不同,它是对decoder和clean encoder中间每一层(包括初始输入和最后的输出)的临时向量 z ^ l 、 z l ( l = 0 , 1... ) \hat{z}^l、z^l(l=0,1...) z^l