當前位置:
首頁 > 知識 > TensorNetwork,一個能夠提高張量計算效率的開源庫

TensorNetwork,一個能夠提高張量計算效率的開源庫

原標題 |Introducing TensorNetwork, an Open Source Library for Efficient Tensor Calculations

作者 |Chase Roberts、Stefan Leichenauer X

譯者 | 汪鵬(重慶郵電大學)

世界上許多最棘手的科學挑戰,如開發高溫超導體和了解空間和時間的本質,都涉及到處理量子系統的複雜性。使這些挑戰變得困難的原因是這些系統中的量子態數量呈指數級增長,使得暴力計算變得不可行。為了解決這個問題,使用了稱為張量網路的數據結構。張量網路讓人們專註於與現實問題最相關的量子態 - 低能量狀態,而忽略其他不相關的狀態。張量網路也越來越多地在機器學習(ML)中找到應用。然而,仍存在阻礙它們在ML領域中廣泛使用的困難:

(1)用於加速硬體的企業級張量網路庫尚未可用於大規模運行張量網路演算法。

(2)大多數張量網路文獻是面向物理應用,併產生錯誤的印象,即需要量子力學專業知識來理解演算法。

為了解決這些問題,我們發布了TensorNetwork,這是一個全新的開源庫,用於提高張量計算的效率,與Perimeter理論物理研究所和X合作開發.TensorNetwork,使用TensorFlow作為後端,並針對GPU進行了優化處理,與在CPU上工作相比,可以實現高達100倍的加速。我們在一系列論文中介紹了TensorNetwork,其中第一篇介紹了新的庫及其API,並概述了非物理學觀眾的張量網路。在我們的第二篇論文中,我們關注物理學中的特定用例,展示了使用GPU的速度。

Tensor Networks有什麼用?

張量是多維數組,根據它們的順序按層次分類:例如,普通數組是零階張量(也稱為標量),向量是一階張量,矩陣是二階張量等等。雖然低階張量很容易用一個明確的數字數組或一個數學符號來表示,例如 Tijnklm(其中索引的數量代表張量的階數),一旦我們開始談論高階,這種符號就變得非常麻煩。在這一點上,開始使用圖解符號很有用,其中一個簡單地繪製一個圓圈(或其他形狀),其中有多條邊,從它出來的邊的數量與張量的順序相同。在這種表示法中,標量只是一個圓,一個矢量有一條邊,一個矩陣有兩條邊等。張量的每條線也有一個尺寸,就是那條邊的大小。例如,表示物體通過空間的速度的矢量將是三維的一階張量。

張量的圖表符號

以這種方式表示張量的好處是簡潔地編碼數學運算,例如,將矩陣乘以矢量以產生另一個矢量,或者將兩個矢量相乘以產生標量。這些都是稱為張量收縮的更一般概念的例子。

張量收縮的圖解表示法。矢量和矩陣乘法以及矩陣跡線(即,矩陣的對角元素的總和)都是示例。

這些也都是張量網路的簡單示例,張量網路是對幾個組成張量的張量收縮模式進行編碼以形成新張量的圖形方式。每個組成張量具有由其自己的邊數確定的順序。連接的邊,在圖中形成邊緣,表示收縮,而剩餘的懸掛邊的數量決定了合成張量的順序。

左:四個矩陣乘積的軌跡,tr(ABCD),是一個標量。你可以看到它沒有晃來晃去的邊。右:三個張力收縮,三條邊晃來晃去,產生一個新的張量。

雖然這些示例非常簡單,但感興趣的張量網路通常代表以各種方式收縮的數百個張量。使用傳統符號來描述這樣的事情會非常模糊,這就是為什麼會使用Roger Penrose在1971年發明的圖表符號。

在實戰中的Tensor Networks

考慮一組黑白圖像,每個圖像都可以被認為是Npixel值的列表。可以將單個圖像的單個像素一次熱編碼為二維矢量,並且通過將這些像素編碼組合在一起,我們可以對整個圖像進行2N維熱編碼。我們可以將這個高維向量重新整形為一個N階張量,然後將我們的圖像集合中的所有張量相加,得到一個總張量Ti1,i2,...,iN 封裝集合。

這聽起來像是一件非常浪費的事情:以這種方式編碼大約50個像素的圖像已經佔用了數PB的內存。這就是張量網路進入的地方。我們不是直接存儲或操縱張量T,而是將T表示為張量網路形狀的許多較小組成張量的收縮。結果證明效率更高。例如,流行的矩陣乘積狀態(MPS)網路將根據Nm個較小的張量來寫入T,使得參數的總數僅在N中是線性的,而不是指數的。

高階張量T用矩陣乘積狀態張量網路中的許多低階張量表示

顯而易見的是,可以有效地創建或操縱大張量網路,同時始終避免需要大量內存。但事實證明,在許多情況下這是可能的,這就是為什麼張量網路已廣泛用於量子物理學,現在,在機器學習中, Stoudenmire和Schwab使用剛剛描述的編碼來製作圖像分類模型,展示了張量網路的新用途。TensorNetwork庫旨在促進這種工作,我們的第一篇論文描述了庫如何用於一般張量網路操作。

物理樣例中的表現

TensorNetwork是張量網路演算法的通用庫,因此它也應該對物理學家有用。近似量子態是物理學中張量網路的典型用例,非常適合說明TensorNetwork庫的功能。在我們的第二篇論文中,我們描述了一種樹張量網路(TTN)演算法,用於近似周期性量子自旋鏈(1D)或薄環面(2D)上的晶格模型的基態,並使用TensorNetwork實現該演算法。我們將CPU與GPU的使用進行比較,並在使用GPU和TensorNetwork庫時觀察到高達100倍的顯著計算速度。

計算時間作為鍵維數的函數,χ。鍵合維度決定了張量網路的組成張量的大小。更大的鍵維度意味著張量網路更強大,但需要更多的計算資源來操縱。

總結及未來的工作

這是一系列計劃論文中的第一篇,旨在說明TensorNetwork在實際應用中的強大功能。在下一篇論文中,我們將使用TensorNetwork對MNIST和Fashion-MNIST數據集中的圖像進行分類。未來的計劃包括機器學習和時間序列分析,以及物理方面的量子電路模擬。通過開源社區,我們也會是向TensorNetwork本身添加新功能。我們希望TensorNetwork成為物理學家和機器學習從業者的寶貴工具。

致謝

TensorNetwork庫由Chase Roberts,Adam Zalcman和Google AI的Bruce Fontaine開發;

Perimeter研究所的Ashley Milsted,Martin Ganahl和Guifre Vidal;

X的Jack Hidary和Stefan Leichenauer。

我們還要感謝X的Stavros Efthymiou作出了寶貴的貢獻。

本文編輯:王立魚

英文原文:https://ai.googleblog.com/2019/06/introducing-tensornetwork-open-source.html

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI研習社 的精彩文章:

如何用 seq2seq 模型來應對 NLP 任務
解析卷積神經網路——深度學習實踐手冊

TAG:AI研習社 |