圖/文 歐尼克斯實境互動工作室 許哲豪 2020/8/13
在大數據及人工智慧時代中,人人都知道要有巨量資料才能用來學分析、提取或學習到有效資訊,但你真的知道你的資料集中隱藏著什麼關聯及祕密嗎?比方說統計每個人的身高、體重(二維資料)即可很容易透過二維圖表找出較大的群聚(Cluster)組合,進而用來開發出適合不同族群所需的服飾或相關產品。但當資料維度超過三維時,就很難用可視化圖形表示,這也意味著人們更難直覺地了解巨量資料之間的分佈結構及關連。而這個問題在影像資料上就更為嚴重,以一張100x100灰階影像資料為例,其資料維度就高達一萬維,更不要說高解析彩色照片動輒數百萬到數千萬維。若再加上巨量資料在超高維空間中分佈超稀疏的問題,難以用傳統方式聚類,因此這樣的困境常被稱為「維度災難(Curse of Dimensionality或稱維度詛咒)」[1]。
為了讓人們容易理解高維資料的分佈情況及降低後續特徵提取演算量,最常用的方式就是將資料「降維(Dimensionality Reduction)」[1]到二維或三維空間再進行觀察,亦可看做是將資料從高維度重新投影(Projection)至低維度空間,這裡列舉四種最常見的方式,包括線性降維的「主要成份分析(Principle Component Analysis, PCA)」、「線性區別分析(Linear Discriminant Analysis, LDA)」及非線性降維的「t-分佈隨機鄰近嵌入(t-distributed Stochastic Neighbor Embedding, t-SNE)」、「均勻流形逼近及投影(Uniform Manifold Approximation and Projection, UMAP)」。接下來就分別簡單說明這些方法的主要思路及優缺點。
主要成份分析(PCA) /線性區別分析(LDA)
如Fig. 1上圖所示為一組具有三維(X, Y, Z)特徵的二分類(紅、藍)資料集[2],當從不同視點觀察時,會發現有些視點很容易找到一個線性分割條件,正確完成資料集分類,有些則很困難。利用不同的降維方式可分別得不同的結果,以非監督式的PCA為例,主要是要找出所有資料集內容具有最大變異數(Variance, 又稱方差)的方向及大小(如Fig. 1左下圖上的PC1)。而以有標籤監督式的LDA則想找出能使不同分類標籤投影後距離越大,同類型距離越小的最佳方向(如Fig. 1右下圖LD1)。
由於PCA主要目的是找出資料集中最重要的特徵維度及使其有最大分佈,並不關心資料原始排列結構及相互關連性,所以當資料維度變大時,只靠一個或兩個軸向的表示就變得難以正確的進行資料分類。而LDA最主要的目的是找出能最佳分類 的投影方向,同樣地不關心原始資料結構,因此若遇到不是高斯分佈或分類數量極不平均的資料集時,降維後會混雜許多其它類別資料,會變得難以正確進行分類。
t-分佈隨機鄰近嵌入(t-SNE)
由於線性降維方式會丟失許多結構性資訊,於是許多非線性降維方式被提出,其中流形學習(Manifold Learning)就是一種常見方式。它假設高維資訊中隱含著一種低維的結構,因此在計算資料點距離時並非直接對所有點計算歐氏距離,而是找出相鄰的點,並產生對應的拓撲(topology),再重新轉換(投影)至低維空間。如Fig. 2所示,一個像瑞士捲(Swiss Roll)的三維資料集,若以一般線性轉換(如PCA, LDA)則很難得出一個正確的資料分佈,但透過流形學習產生新的結構拓撲後,便可重新展開成二維平面資料,並保有資料點相互關聯。
根據不同的拓撲產生方式各自衍生出下列算法,接下來針對較常見的t-SNE及UMAP作進一步介紹。
- 等距映射(Isometric Mapping, ISOMAP)
- 局部線性嵌入(Locally Linear Embedding, LLE)
- 拉普拉斯特徵映射(Laplacian Eigenmaps, LE)
- 局部保持投影(Locality Preserving Projections, LPP)
- t-分佈隨機鄰近嵌入(t-distributed Stochastic Neighbor Embedding, t-SNE)
- 均勻流形逼近及投影(Uniform Manifold Approximation and Projection, UMAP)
t-SNE [4] [5] 是Laurens van der Maaten和知名深度學習大師Geoffrey Hinton於2008年共同發表,主要是改善先前2002年發表的SNE問題,包括兩點之間相似度不對稱及不同類型資料過於擁擠問題。t-SNE不直接採用歐式距離計算點與點之間相鄰關係,而是將其轉換為相似度的機率,其目的是希望資料點在高維空間的相似度能和轉換到低維空間的相似度接近,而相似程度就用KL散度(Kullback-Leibler Divergence)來計算。另一方面改以t分佈取代原先SNE的高斯分佈假設,解決不同類型資料過於擁擠問題。
目前t-SNE算是非線性降維方法中較好的方式,它可較理想地在低維空間保留資料的原始結構,但其缺點是計算複雜度太高,尤其是資料筆數及維度過高時,計算時間會呈非線性爆增。另外算法有隨機性,所以每次得到的結果會略有些不同,不像PCA每次計算都會得到相同的結果,因此在解讀低維空間結果時需注意。另外由於算法著重在保留區域關係,所以全域結構的重現性就會略差些,需透過其它方式進行預處理。
以下就以MNIST資料集進行t-SNE降維可視化為例,如Fig. 3所示。MNIST為常見手寫數字資料集,內容共分十類即0~9,每張圖為大小28x28的灰階影像,共有七萬張影像,所以相當於70,000組784維的資料集進行分類動作。從Fig. 3中可看出,一開始十個分類都擠在一起,接著不同分類慢慢地開始擴散,而同類則仍保持聚集。其優化動作持續進行一定次數後,就可明顯在二維空間上看出分界,這就表示原始資料集具有一定程度清楚的分類數量和差異。但反過來說,若原始資料集經過一定次數優化後仍擠在一起,或沒有明顯間隔,那就表示可能就算人直接介入也可能會有判讀(分類)不易問題產生,要重新檢討資料集來源。
Fig. 3 MNIST資料集經t-SNE優化過程。[6] (OmniXRI Aug. 2020整理繪製)(點擊圖放大)
均勻流形逼近及投影降維法(UMAP)
UMAP [7] 是Leland McInnes等人於2018年發表的新技術,主要應用黎曼幾何和代數拓撲的理論框架構建而成,其可視化效果接近t-SNE且保留更多全域結構。另外在計算維度上也沒有限制,速度也比t-SNE快上許多,尤其是資料集筆數越多、維度越高時越明顯,如Table 1所示。
Table 1 不同資料集及降維算法計算時間比較表[7](OmniXRI Aug. 2020整理製作)(點擊圖放大)
這項算法基於資料的三個假設,包括資料均勻分佈在黎曼流形(Riemannian Manifold)上、黎曼度量(Riemannian metric)是局部恆定的及流形(Manifold)在區域是連接的。而主要思路則是利用局部流形逼近(Local Manifold Approximations)和局部模糊單純形集表示(Local Fuzzy Simplicial Set Representations)來構造高維數據的拓撲。給定一些低維表示的資料,使用類似的過程來構造等效的拓撲表示,然後最小化兩個拓撲表示之間的交叉熵(Cross Entropy),即度量兩個概率分佈間的差異性信息,更多相關說明及範例可參考[8]。
Fig. 4中共使用了多種數據集,這裡僅摘錄其中四種,COIL 20(20物件,每個物件每隔5度拍一張128x128像素的灰階照片)、MNIST(手寫數字0~9,共七萬張32x32像素的灰階影像)、Fashion MNIST(類似MNIST,只是變成藝術形式字體數字0~9)及Word2Vectors(20萬則Google News降維至300維的資料集),分別使用多種算法降維到二維平面上再進行比較,這裡僅摘錄UMAP, t-SNE, PCA三種。從Fig. 4中可看出,PCA很難表現出高維資料的結構,而UMAP, t-SNE則可以很好的表現且有近似的結果(這裡是指分群及區隔能力,非視覺觀察結果)。
Fig. 4 不同算法及資料集經降維可視化後結果比較[7](OmniXRI Aug. 2020整理繪製)(點擊圖放大)
當然UMAP這樣算法也不是完全沒有缺點,主要缺點包括解釋性不佳(過於非線性)、資料集過小時容易受雜訊影響、全域結構重現性仍不夠理想。若不在乎上述問題的話,那UMAP算法明顯勝過t-SNE。
小結
在人工智慧及大數據分析領域中,高維資料的分佈結構及訓練完的巨量參數一直都被視為難以理解及解釋的黑盒子,若能透過這些降維、可視化工具先了解一下資料集是否容易被分類,這樣就不會浪費太多時間把採樣時過度不適當、不平均或特徵不明顯的資料集拿來訓練,造成一直訓練不出好結果的問題。後續若是再加入其它巨量參數可視化或可解釋人工智慧(Explainable AI, XAI)技術,相信未來人工智慧的訓練及推論就不再是黑箱作業了。
*本文同步發行於歐尼克斯實境互動工作室部落格及AI HUB,歡迎連結至AI HUB網站【社群互動】下【AI技術交流區】瀏覽更多精采文章*
參考文獻
[1] Wikipedia, “Dimensionality reduction”
https://en.wikipedia.org/wiki/Dimensionality_reduction
[2] Gunther17, “LDA與PCA都是常用的降維方法,二者的區別”
https://blog.csdn.net/dongyanwen6036/article/details/78311071
[3] CLD的博客─Dimensionality Reduction
https://cenleiding.github.io/Dimensionality-Reduction.html
[4] Laurens van der Maaten and Geoffrey Hinton, "Visualizing High-Dimensional Data Using t-SNE"
https://lvdmaaten.github.io/publications/papers/JMLR_2008.pdf
[5] Laurens van der Maaten (t-SNE author)
https://lvdmaaten.github.io/tsne/
[6] 【机器学习】关于t-sne:降维、可视化
https://blog.csdn.net/u013106893/article/details/72867021
[7] Leland McInnes et al., "UMAP: Uniform Manifold Approximation and Projection for Dimension Reduction"
https://arxiv.org/abs/1802.03426
[8] Read the Documents : UMAP-Learn
https://umap-learn.readthedocs.io
沒有留言:
張貼留言