近年來,t 分布隨機鄰域嵌入(tSNE) 算法已成為高維數據探索性數據分析中最常用和最具洞察力的技術之一。tSNE 用于解釋TensorFlow Embedding Projector和TensorBoard等工具中的深度神經網絡輸出,它的強大特性之一是,只需對參數進行最少量的調整即可顯示不同規模的高維數據點聚類。盡管有這些優點,但受限于計算復雜性,tSNE 算法只能應用于相對較小的數據集。為解決這一問題,已相繼開發出幾個 tSNE 演化版本(主要關注數據點之間相似性計算的可擴展性),但迄今為止,這些版本還不足以在可視化 tSNE 大數據集嵌入的演化時提供真正的交互式體驗。在 “Linear tSNE Optimization for the Web” (https://nicola17.github.io/tfjs-tsne-demo)一文中,我們提出了一種高度依賴現代圖形硬件的全新 tSNE 方法。考慮到新方法的線性復雜性,我們的方法生成嵌入的速度比同類技術更快,甚至可以通過WebGL利用 GPU 功能在客戶端的網絡瀏覽器中執行。在這兩種因素的共同作用下,大型高維數據集的實時交互式可視化得以實現。
用我們的技術實時演化完整 MNIST 數據集的 tSNE 嵌入。數據集包含 60000 個手寫數字的圖像
tSNE 的目標是對相似數據點的小 “鄰域” 進行聚類,同時降低數據的整體維數,使其更易于可視化。換句話說,tSNE目標函數測量相似數據的這些鄰域在二維或三維空間中的保存程度,并相應地將它們組成聚類。在此前的研究中,tSNE 目標函數的最小化作為N 體模擬問題來執行,其中,點被隨機放置在嵌入空間中,并且在每個點上施加兩種不同類型的力。吸引力使點更靠近高維空間中最相似的點,而排斥力則使它們遠離嵌入中的所有鄰近點。吸引力只作用于一小部分點(即相似的鄰近點),而排斥力對所有點對都起作用。因此,tSNE 需要大量的計算和多次的目標函數迭代,使得數據集大小局限為僅數百個數據點。為改進蠻力解決方案,采用了Barnes-Hut算法近似計算排斥力和目標函數的梯度。這使得計算能力擴展到數萬個數據點,但是計算 C++ 實現中的MNIST嵌入需要超過 15 分鐘。在論文中,我們針對上述擴展問題提出了一種解決方案,使用在 WebGL 中生成的紋理來近似計算目標函數的梯度。這一技術在每次最小化迭代中使用三通道紋理繪制 “排斥場”,其中 3 個分量被視為顏色并在 RGB 通道中繪制。為每個點獲取排斥場,以表示該點產生的水平和垂直排斥力,以及用于歸一化的第三分量。直觀地說,歸一化期用于確保移位的幅度與高維空間中的相似性度量值相匹配。此外,紋理的分辨率會根據情況自動改變,以便保持繪制的像素數量恒定。
三個函數的渲染,用于近似計算單點產生的排斥效應。在上圖中,排斥力表示藍色區域中的點被向左/向下推動,而紅色區域中的點被向右/向上推動,而白色區域中的點不動
然后,將每個點的作用添加到 GPU 上,從而產生與下面 GIF 中呈現的近似排斥場的圖像相似的紋理。相對于更常用的點間相互作用計算方法,這種新型排斥場方法對 GPU 更加友好。這是因為在 GPU 中可以同時且非常快速地計算多個點的排斥力。另外,我們在 GPU 中實現了點間吸引力的計算。
此動畫顯示了 tSNE 嵌入(左上)和用于使用歸一化期(右上)、水平移位(左下)和垂直移位(右下)來近似計算梯度的標量場的演化
我們還將臨時實現中的嵌入更新修改為一系列在TensorFlow.js(一種 JavaScript 庫,用于在網絡瀏覽器中執行張量計算)中計算的標準張量操作。我們的方法已在 TensorFlow.js 系列中以開放源代碼庫形式發布,通過該方法,我們可以完全基于 GPU 來計算 tSNE 嵌入的演化,同時計算復雜性大大降低。通過這種實現,以前需要 15 分鐘計算的內容(在 MNIST 數據集上),現在可以在網絡瀏覽器中實現實時可視化。此外,更大數據集的實時可視化也隨之成為可能,此功能在分析深度神經輸出時特別有用。我們研究的主要局限在于,這種技術目前只適用于 2D 嵌入。然而,2D 可視化通常比 3D 可視化更受歡迎,因為它們需要更多的交互來有效理解聚類結果。
-
嵌入式
+關注
關注
5068文章
19019瀏覽量
303308 -
神經網絡
+關注
關注
42文章
4763瀏覽量
100541 -
tensorflow
+關注
關注
13文章
328瀏覽量
60499
原文標題:使用 TensorFlow.js 實現實時 tSNE 可視化
文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論