ML Lecture 15: Unsupervised Learning - Neighbor Embedding
Manifold Learning
- 在高維空間上,只有靠得比較近的 data point 做 Euclidean Distance 才合理,若 data point 之間離得比較遠,使用 Euclidean Distance 就不合理,因此降維使得 Euclidean Distance 合理
Locally Linear Embedding (LLE)
- 先選出 xi 的 neighbor xj,他們之間的關係寫做 wij
- 希望 xi 可以寫成 neighbors 的 linear combination,因此要 minimize ∑i∥xi−∑jwijxj∥2,得到所有 wij
- 希望降維後的 space 仍然保持原來 space 的關係,也就是希望可以利用同樣的 linear combination 產生 zi,因此要 minimize ∑i∥zi−∑jwijzj∥2
LLE 需要選好 neighbor 的數量,才會 work
- 太少不會 work
- 太多也不 work,原因:回想 manifold learning,距離太遠的 data point 使用 Euclidean Distance 不合理
Laplacian Eigenmap / Spectral Clustering
- Graph-based approach
- Assumption: if x1 and x2 are close in a high density region, z1 and z2 are then close to each other
回想 semi-supervised learning
S=12∑i,jwi,j(yi−yj)2=yTLy
- w_{i,j}: 相連的data i和j的相似程度,若沒相連則=0
L=∑xrC(yr,ˆyr)+λS
- S=12∑i,jwij∥zi−zj∥2
- 寫平方不太好,寫 Euclidean Distance 比較好
- 但是這樣的 constraint 還不夠,因為它會想把所有 z 都設 0,所以要再對 z 下 constraint
- if the dim of z is M, Span{z1,...,zN}=RM
- 這樣解出來的 z 其實就是 graph Laplacian 的 Eigen Vector
- 找到 z 之後再對 z 做 clustering,這種做法叫 spectral clustering
T-distributed Stochastic Neighbor Embedding(t-SNE)
之前做法的問題
- 只假設相近的 data point 要相似,沒有說不相近的要分開
t-SNE
- 計算所有 x 之間的相似度 S(xi,xj)
- 之後會說相似度的計算方式
- 對 S 做 normalize 得到 P(xj|xi)=S(xi,xj)∑k≠iS(xi,xk)
- normalize 是必要的,因為你不知道計算出的 S scale 在什麼範圍
- 可以用類似的方式對 lower dimension 計算 Q(zj|zi)=S′(zi,zj)∑k≠iS′(zi,zk)
- 找到 z 使得 P 和 Q 的 distribution 越接近越好,因此 minimize L=∑iKL(P(∗|xi)||Q(∗|zi))=∑i∑j.....
- 可以用 gradient descent 解這問題
- 將x降維到z上
- P(xj|xi): 對於xi而言,xj與他相似的機率,各個xj的此項加總為1
- 找出一組 z 使得 P(⋆|xi) 和 Q(⋆|zi) 之間的 KL Divergence越小越好
- data point 很多的時候,可能先做 PCA 降維,再 t-SNE 比較快
- 每有一個新的 data point 就要重 train 一次 t-SNE,所以通常只用來 visualize
Similarity Measure
之前的 graph-based 方法說用 RBF function 比較好
因此計算 x 之間的 similarity 時:
- S(xi,xj)=exp(−∥xi−xj∥2)
而計算 z 的 similarity 時:
SNE
- S′(zi,zj)=exp(−∥zi−zj∥2)
- 合理,x 和 z 使用同樣的 similarity function
t-SNE
- S′(zi,zj)=11+∥zi−zj∥2
- 可是錄音說是 Euclidean Distance 的平方欸@@
- 利用 t-distribution,則本來遠的會拉更遠