DEC簡介 - Unsupervised Deep Embedding for Clustering Analysis

Junyuan Xie, Ross Girshick, Ali Farhadi. Unsupervised Deep Embedding for Clustering Analysis. In ICML’16.

ICML 2016 paper

Paper link: https://arxiv.org/abs/1511.06335

Github(Caffe): https://github.com/piiswrong/dec

簡介

此文針對 Embedded clustering 的問題進行研究,

提出先使用 Encoder-Decoder 的架構,

獲得低維度的 latent vector / embedding 來進行分群,

整體概念跟 Center loss 的實作方式差不多,

會先創建出 K(群數) x d(latent vector 維度) 的參數當作中心點,

把他們當作中心點,

再使用 SGD 的方式來訓練整體網路以及調整中心點,

來達到分群的效果,

這問題難的地方是我們沒有 label 的資料,

只能仰賴 Unsupervised 的方式去做訓練。

方法

我們的圖片為 X,

我們希望將 X 分到 k 群,

但我們並不是希望直接針對圖片 X 去做分群,

我們會希望對 Latent space 做分群,

因為圖片像素之間的差異不見得代表他們相近,

將圖片的特徵 - Latent vector 抽取出來,

若兩個 Latent vector 相近就代表兩張圖片是相似的。

而 Latent vector - Z 的維度通常遠小於圖片大小。

我們能透過 Encoder-Decoder 的架構抽取出 Latent vector,

透過 Encoder-Decoder 的概念,

我們能透過 Encoder 去生成一個小維度的 Latent vector,

再將 Latent vector 丟入 Decoder 去還原出這張圖片。

訓練方式其實很簡單,

做 MSE loss 確保輸入的圖片和還原的圖片長得一樣,

透過這種方式我們就能學會 Latent vector - 圖片特徵的概念。

而分群的時候通常會有群心 - u,

u 的維度為 k x Z 的維度。

如果 Latent vector 最靠近第 i 個群心的話,

我們就會說它是第 i 群。

訓練方式基於 Visualizing Data using t-SNE 去做改動的,

我們會透過下方的式子計算出第 i 張圖片的 Latent vector 是屬於第 j 個群的機率,

z - u 可以視作在 Latent space 間的距離,

如果越近就代表越有可能是屬於這個群集。

Note: α 就只是看你要對這個式子多寬鬆,實驗設定為 1 就不多做探討。

只是說透過上面的式子,我們無法確保每個群的大小一樣,

因此提出作適當的 Normalize,

我們希望每群的數量大小差不多,

所以我們會加總每群的總數為 f,

我們會求出 p 當作是 Normalize 過後的值,

這部分可以看作求得每群的比例大小。

再透過 KL-divergence 的方式,

讓 q 相似 p, 透過這種方式我們可以確保每群的大小是相近的。

其他還有一些技巧,

像是一開始的 u 也不是隨機的,

是先透過得到所有 X 的 Latent vector 之後,

使用 K-means 的方式求得。

成果

在 4 個資料集上評估結果,

下圖為隨機抽取一群,我們可發現當 q 的信心分數越大時,

外觀越像 5,這意味著我們選取到的群心是 5,

也代表著我們的分群其實是有學到東西的。

只是說這論文還有探討群的大小不一的問題,

我們可以知道 p 是希望每群的大小是一致的,

但在資料集中如果每個類別的大小不一致的話,

我們的 p 又希望每群的大小要相似,

這時候分類出來的結果就不會這麼好,

雖然相較以往的方法還是不錯拉,

Rmin 指的是將一個類別的資料集取一個比例 - subset 的概念。

參考資料:

Unsupervised Deep Embedding for Clustering Analysis

Visualizing Data using t-SNE


© 2018-2019 XiaoSean. All rights reserved.

Powered by Hydejack v8.1.1