一、概述
流形學習(Manifold Learning)是指通過從高維采樣數(shù)據(jù)中恢復低維流形結構,即找到高維空間中的低維流形,并求出相應的嵌入映射,以實現(xiàn)降維或者數(shù)據(jù)可視化。拿地球舉例來說就是地球的表面可以認為是一個二維平面被塞到了三維空間中,那么歐氏距離(Euclidean Distance)就只能在短距離內成立,在較遠的距離就不再成立:

再舉一個例子,在下圖中可以認為一個二維平面被扭曲放入一個三維空間中,在很小的距離內歐式舉例是成立的:

而如果距離太遠的話則可能歐氏距離就不成立,如下圖所示,黑點到藍點的歐氏距離比到紅點的歐氏距離更小,但是從數(shù)據(jù)分布上來看黑點和紅點更加相似一些,這時歐式距離就沒有意義了:

對于上面的例子,流形學習要做的就是學習數(shù)據(jù)在低維空間的表示形式,通俗來說,就是將上圖中的數(shù)據(jù)“展開”:

這樣的數(shù)據(jù)顯然更容易用來進行聚類或者其他的監(jiān)督學習方法。接下來的部分介紹幾種流形學習的方法。
二、Locally Linear Embedding(LLE)
Locally Linear Embedding(LLE)是一種非線性降維算法,可以使降維后的數(shù)據(jù)保持比較好的原有的流形結構。
如下圖,我們在高維空間中有許多樣本,表示
與
之間的關系,LLE中我們認為一個樣本
可以由它的鄰近的點
以
做weighted sum即
來得到:

使用梯度下降法來進行求解所有的,在進行求解是我們希望的是
能與
越接近越好,因此損失函數(shù)如下:
接下來要做的是利用來求解降維后的結果
,假設
與其鄰接的樣本
之間也滿足weighted sum的關系:

同樣使用梯度下降法來求解,需要注意的是這里要固定
,把
看做未知來求解。使用的損失函數(shù)如下:
需要注意一點就是使用LLE這種方式進行降維不像PCA或者自編碼器一類方法有一個明確的function,降維的結果完全是根據(jù)憑空生成的點。
在使用LLE進行降維時,選擇鄰域內的幾個點是一個可以調整的超參數(shù),選用過少或過多的點效果都不會太好,選擇過多鄰居的局限性在于這樣會考慮進一些距離較遠的點,而歐氏距離在遠距離的效果不太好。下圖展示了不同數(shù)量的鄰近點的效果:

三、Laplacian Eigenmaps
- 簡介
拉普拉斯特征映射(Laplacian Eigenmaps)是一種基于圖的降維算法,依賴于平滑性假設(Smoothness Assumption),其希望降維后的點(圖中有邊相連的點)在降維后的空間中能夠相互接近,從而保持其原有的數(shù)據(jù)結構。
- 圖的構建
具體地,假定在高維空間中有下圖的數(shù)據(jù)點,則兩個紅色數(shù)據(jù)點之間的距離使用歐氏距離來度量的話是沒有意義的,數(shù)據(jù)點之間在流形中的距離才可以表明其相似的程度。

使用拉普拉斯特征映射的方法首先需要構建一張圖,構建的方法就是將相似度高的點之間連一條邊,可以設置一個閾值,每個點與其相似度達到閾值的點之間連接一條邊,邊的權重就是相似度,也可以將每個點與固定個最相似的點連接起來。相似度可以采用徑向基函數(shù)或者余弦相似度等等。
按照上述方法我們可以得到數(shù)據(jù)的鄰接矩陣和一張圖。鄰接矩陣(
是數(shù)據(jù)的總數(shù)),鄰接矩陣的元素
就是數(shù)據(jù)點
與
的相似度,即:
得到的圖如下:

兩個數(shù)據(jù)點在流形中的距離可以用圖中的距離來近似:

- 類比半監(jiān)督學習
參考以下鏈接中平滑性假設基于圖的方法這一部分:半監(jiān)督學習|深度學習(李宏毅)(九)
在半監(jiān)督學習平滑性假設基于圖的方法中,通過給損失函數(shù)添加一個正則化項可以利用無標簽數(shù)據(jù)進行半監(jiān)督學習,
用來評估標簽的相關性,這個正則化項為:
上式中是
維的向量,
和
分別是有標簽和無標簽數(shù)據(jù)的數(shù)量,
。
另外,叫做圖的拉普拉斯矩陣(Graph Laplacian)。
就是上述鄰接矩陣,
是圖的度矩陣,這是一個對角矩陣(
):

這個正則項表明如果兩個數(shù)據(jù)點相連,則有值,那么
和
趨近于相同;如果兩個數(shù)據(jù)點不相連,則
為
,那么
和
是否相同就無所謂。
加上正則化項以后損失函數(shù)變?yōu)椋?/p>
- Laplacian Eigenmaps
Laplacian Eigenmaps的方法類似于上述平滑性假設基于圖的半監(jiān)督學習方法,我們期望將高維數(shù)據(jù)降維成
維空間的數(shù)據(jù)
,首先要按上述方法構建一張圖并且得到鄰接矩陣
,因此設計損失函數(shù)如下:
降維后的數(shù)據(jù)記作,
是
維的列向量,現(xiàn)做推導如下:
這里僅僅對進行最小化是不可行的,必須進行一些限制。因為如果我們設置
,則
就可以始終為最小值
。如果降維的結果的維度為
,則我們需要限制
,這是為了防止已經(jīng)被塞進高維空間的流形再被塞進更低維的空間中。
對降維后的數(shù)據(jù)再進行聚類就是譜聚類(Spectral Clustering)算法。
這里的拉普拉斯特征圖的降維方法可以參考以下更詳細的講解:譜聚類|機器學習推導系列(二十)。
四、T-distributed Stochastic Neighbor Embedding(-SNE)
- 上述方法的問題
在上面描述的鄰域嵌入方法中存在的問題是,在重建低維空間中的表示時只考慮了讓較高相似度的樣本點要盡可能地接近,而沒有考慮讓低相似度的樣本點要盡可能地遠,這樣會導致不同類別的樣本點會集中在一起,也就是擁擠問題。下圖展示了使用LLE處理MNIST和COIL-20數(shù)據(jù)集時的效果,COIL-20是一個圖片數(shù)據(jù)集,里面的樣本是某件物品(玩具車、杯子等)旋轉不同角度拍下的照片:

可以看到不同類別的樣本被擠到了一起,這就是上述問題導致的結果。
- t-SNE
假設需要將數(shù)據(jù)降維成
,t-SNE的做法首先需要計算每一個樣本點對其他樣本點的歸一化的相似度,這里歸一化的目的是為了保證
和下面的
都是概率分布,從而能夠應用KL散度,計算方法如下:
對降維后的數(shù)據(jù)也需要計算每一個樣本點對其他樣本點的歸一化的相似度,計算方法如下:
我們的目標就是讓這兩個分布越接近越好,兩個分布接近程度的度量應使用KL散度,因此優(yōu)化的目標函數(shù)為:
在求解時使用梯度下降對微分即可。需要說明的是t-SNE是對所有的數(shù)據(jù)進行計算相似度,如果維度過高則會需要巨大的計算量,因此通常的做法是先使用PCA等方法進行降維然后再使用t-SNE繼續(xù)降維,比如先使用PCA降到50維,再使用t-SNE繼降到2維。
同時需要說明的是t-SNE降維后,如果一個新的數(shù)據(jù)進來,我們無法獲得該數(shù)據(jù)的降維表示,因此t-SNE不適用于train-test的模式,這種方法通常用于數(shù)據(jù)的可視化。
- 相似度的度量
對于的相似度的度量選用徑向基函數(shù)(公式省略了
):
t-SNE是從SNE算法上改進而來,對于降維后的數(shù)據(jù)SNE選用徑向基函數(shù):
而t-SNE選用t分布:
選用上述相似度度量也就可以避免擁擠問題,原因使用下面的圖來說明。在下圖中橫軸表示兩個樣本點的距離,縱軸表示概率分布。在優(yōu)化時我們會讓原來的數(shù)據(jù)的概率與降維后的數(shù)據(jù)的概率相等,可見如果原來的數(shù)據(jù)中的兩個樣本點距離很近時,在降維后的數(shù)據(jù)中距離也會很近,而如果原來的數(shù)據(jù)中的兩個樣本點距離很遠,則在降維后的數(shù)據(jù)中其距離會被拉伸地更遠:

- 效果
下圖展示了t-SNE在MNIST和COIL-20數(shù)據(jù)集上的效果:

可以看到t-SNE取得了一個比較直觀的可視化效果,不同類別的樣本被區(qū)分地很明顯。