GPGPU線性複雜度的高維資料降維與視覺化

2021-10-03 11:30:51 字數 1850 閱讀 9992

「 今天閱讀 vis 2019 會議大資料與降維領域的**《gpgpu linear complexity t-sne optimization》,作者是nicola pezzotti,人工智慧和視覺分析研究科學家和工程師。開發了乙個在 tensorflow.js 家族中發布的開源庫。目前在飛利浦研究公司工作。」

理解資料點在高維空間中的排列方式在探索性資料分析中起著至關重要的作用。近年來,非線性降維技術成為從資料中挖掘知識的有力工具,例如發現聚類。在資料視覺化領域,這些技術用於將維度降低到二維或三維,以使視覺化成為可能。具體來說,演算法保留了資料的某些特徵,例如本地鄰域。

近年來,t 分布隨機鄰域嵌入(t-sne)演算法已經成為高維資料探索分析中最常用和最有前景的技術之一。它以不同的比例顯示高維資料點的聚類,同時只需要對其引數進行微小的調整。然而,演算法的計算複雜度限制了它只能在相對較小的資料集上應用。為了解決這個問題,近年來已經發展了幾個 t-sne 複雜度優化版本,主要集中在資料點之間相似性計算的可擴充套件性上。然而,當視覺化大資料集的 t-sne 嵌入時,這些貢獻不足以實現互動需要的速率。

雖然許多任務作集中於改進相似性計算,但是只花費了有限的努力來改進用於建立嵌入的最小化演算法。barnes-hut-sne (bh-sne)是由 van der maaten 提出的。它利用 barnes-hut 演算法進行 n 體模擬來近似資料點之間的斥力。斥力在最小化過程中發生變化,因為它們依賴於低維嵌入空間中的資料點位置。儘管有所改進,但對於大量資料點來說,計算成本仍然很高。

提出了一種新的最小化 t-sne 目標函式的方法,利用圖形硬體,並且具有線性計算複雜度。將在資料集上執行 t-sne 的計算成本降低了幾個數量級,並保留或提高了過去近似技術的準確性。通過為每個資料點分配核心紋理(kernel textures)來近似資料點之間的斥力。這種近似允許將 t-sne 最小化問題重新轉化為一系列張量運算,這些運算可以在圖形卡上有效地執行。

著重於最小化目標函式,即 kl 散度,以建立嵌入。觀察到 t-sne 使用的 t 分布的重尾使得 n 體模擬的應用不是特別有效。提出了從點到點計算到基於場的嵌入計算的正規化轉換,通過將目標函式的梯度重構為標量場和向量場與張量運算相結合的函式。

該技術具有線性時間和空間複雜度 o(n),適用於以圖形處理器的方式實現,與當前技術水平相比,提供了更短的計算時間。它還允許實現瀏覽器和桌面的版本,在幾秒鐘內最小化標準資料集的目標函式,從而有可能開發更高階的基於網路(web)的分析解決方案。整合實現的技術可以在tensorflow.js 和開源 c++ 庫中使用。

**包括以下核心部分。

提出的最小化 t-sne 目標函式的方法。其主要思想是將梯度重寫為依賴於二維嵌入域中的標量場 s 和向量場 v。這些場可以在 gpu 上以線性時間計算,並在常數時間內查詢。因此,該演算法的複雜度由二次降低為線性。具體包括基於場的梯度計算、支援場的計算等內容。

具體包括光柵化方法、計算著色器方法等。

為了評估所提出技術的有效性,使用三個測度來評估嵌入的計算成本和質量。首先,記錄 1000 次迭代中最小化過程的執行時間。其次,使用 kl 散度來評估結果嵌入的質量。最後,計算最近鄰保持(nnp)。

將gpgpu-sne的結果與 bh-sne 和沒有改進的 t-sne 演算法的結果進行比較。用 c++ 編寫,支援多執行緒計算,並在高維檢查器庫(hdi)中公開提供。

主要貢獻有兩方面:

t-sne 目標函式的線性複雜度最小化。具體來說,(1)利用基於紋理拼接(texture splatting)的 gpu 方法近似計算資料點之間的斥力;(2)採用基於張量的目標函式梯度計算。

方法實現作為谷歌的 tensorflow.js 庫和 c++ hdi 庫的一部分發布。不僅比 bh-sne 快幾個數量級,而且我們證明它除了具有更好的高維鄰域保持之外,還更有效地最小化了目標函式。

視覺化與降維緊密相關,如果能直接對高維資料進行視覺化,可能就不需要降維了。

線性篩選時間複雜度

今天可愛的mayuyu帶大家來學習線性篩選,以及分析它的時間複雜度。首先,我們學過素數篩選,它也叫線性篩選,因為對於每乙個數,我們只需要把它的倍數篩去就行了,這樣以及篩出 的就不再繼續判斷,mayuyu寫的的素數篩選 如下 void isprime cnt 0 memset prime,true,s...

演算法的複雜度 時間複雜度與空間複雜度

通常,對於乙個給定的演算法,我們要做 兩項分析。第一是從數學上證明演算法的正確性,這一步主要用到形式化證明的方法及相關推理模式,如迴圈不變式 數學歸納法等。而在證明演算法是正確的基礎上,第二步就是分析演算法的時間複雜度。演算法的時間複雜度反映了程式執行時間隨輸入規模增長而增長的量級,在很大程度上能很...

Joseph 約瑟夫環 線性複雜度

說有n個要被處決的人 編號0 n 1 從0開始報數,報到 m 1 的會被殺掉,剩下的人繼續從0開始報數,如此下去最後剩的乙個人會存活下來。說joseph發現了這個規律而且把他透露了出來,現在假如你在這n個人裡面,你會選擇幾號位置站下。很顯然你會選擇能活下來的那個位置,所以問題就是如何得到這個位置。首...