谷歌宣布開源張量計算庫TensorNetwork及其API,使用TensorFlow為后端,對GPU處理速度進行優化,與CPU相比,計算加速效果高達100倍。
現代科學領域中,有很多艱巨困難的科學任務,比如開發高溫超導體材料、了解空間和時間的本質等,都涉及到處理量子系統的復雜性。這些問題之所以困難,是因為這些系統中的量子態數量呈指數級增長,使得暴力計算行不通了。
為了解決這個問題,人們利用名為“張量網絡”的數據結構,可以專注于與現實問題最為相關的量子態——低能量狀態,而忽略其他不相關的狀態。張量網絡也越來越多地在機器學習中得到應用。
然而,目前在機器學習中應用張量還存在一些困難:比如用于加速硬件的生產級張量網絡庫尚未在大規模運行張量網絡算法中部署,而且,大多數關于張量網絡的文獻是面向物理學科領域的應用。這也讓人們產生一種錯誤印象,認為需要掌握量子力學的專業知識才能理解張量算法。
本次開源的TensorNetwork使用TensorFlow作為后端,并針對GPU處理進行了優化,與CPU相比,處理速度可以實現100倍的加速。此前已經介紹了TensorNetwork,包括新的庫及其API,并針對非物理學背景的讀者對張量網絡進行了概述,介紹了張量網絡在物理學中的特定應用實例,展示了使用GPU帶來的處理速度的顯著提升。
為什么Tensor Networks有用?從張量的圖解表示說起
張量是一種多維數組,根據數組元素的順序按層級分類:例如,普通數是零階張量(也稱為標量),向量可視為一階張量,矩陣可視為二階張量等等。低階張量可以很容易用一個明確的數字數組或數學符號來表示。
不過涉及到高階時,這種符號法就變得非常麻煩。使用圖解符號對于解決這個問題很有用,一種方法是簡單地繪制一個圓(或其他形狀),引出多條線或者說“腿”,腿的數量與張量的階數相同。在這種表示法中,標量表示為一個圓,矢量有一條腿,矩陣有兩條腿等。張量的每條腿也有一個尺寸,就是腿的長短。例如,表示物體通過空間的速度的矢量就是三維的一階張量。
張量的圖解表示法
以這種方式表示張量的好處是可以簡潔地對數學運算進行編碼,例如,用矩陣乘以向量,獲得另一個向量,或者將兩個向量相乘,得到一個標量。這些都是所謂“張量收縮”的更一般的概念。
張量收縮的圖解表示法。圖中所示為矢量和矩陣乘法以及矩陣跡線(即矩陣的對角元素的總和)
以下是張量網絡的簡單示例。張量網絡是對幾個張量收縮,形成新張量的模式進行編碼的圖形化表示。構成新張量的每個張量具有各自的階數,圖上表示為腿的數量。互相連接的腿,在圖中形成邊,表示張量的收縮,而剩余的懸在外面的腿的數量就是生成的新張量的階數。
左:四個矩陣乘積的表示,即tr(ABCD),它是一個標量,圖中沒有腿。右:三個三階張量收縮,最終有三條腿懸在外面,即產生一個新的三階張量。
雖然這些例子非常簡單,但張量網絡通常代表以各種方式收縮的數百個張量。用傳統的符號來描述這樣一件事是很難理解的,這就是Roger Penrose在1971年發明圖解符號(diagrammatic notation)的原因。
張量網絡在實踐中的應用
想象一組黑白圖像,每個圖像都可以看作是一個n個像素值的列表。單個圖像的單個像素可以被一個one-hot編碼為二維矢量,通過將這些像素編碼結合在一起,我們可以對整個圖像進行2N維的one-hot編碼。我們可以將這個高維向量重塑成一個order-N張量,然后將圖像集中的所有張量相加,得到一個總張量Ti1,i2,...,iN集合。
這聽起來是一件非常浪費的事:用這種方式編碼大約50像素的圖像將占內存許多PB的空間。這就該用到張量網絡了。與其直接存儲或操縱張量T,不如將T表示為張量網絡形狀中許多較小組分張量的收縮。結果證明效率更高。例如,流行的矩陣積態(MPS)網絡將把T寫成N個更小的張量,這樣參數的總數在N中只是線性的,而不是指數的。
在矩陣積態張量網絡中,高階張量T用許多低階張量表示。
不明顯的是,大張量網絡可以被有效地創建或操作,同時始終避免占用大量內存。但事實證明,這在許多情況下是可能的,這就是為什么張量網絡在量子物理學和現在的機器學習中被廣泛使用的原因。
谷歌AI的研究人員Stoudenmire和Schwab使用剛才描述的編碼來建立一個圖像分類模型,展示了張量網絡的新用途。TensorNetwork庫的設計就是為了方便這種工作,我們第一篇論文(https://arxiv.org/pdf/1905.01330.pdf)就描述了該庫如何用于一般的張量網絡操作。
性能實例分析:計算速度提升100倍
張量網絡是張量網絡算法的通用庫,對物理學家也有一定的幫助。量子態的近似是物理中張量網絡的一個典型用例,非常適合用來說明張量網絡庫的功能。在第二篇論文(https://arxiv.org/pdf/1905.01331.pdf)中,我們描述了一種tree tensor network(TTN)算法,用于估算周期性量子自旋鏈(1D)或薄環面上的晶格模型(2D)的基態,并用張量網絡實現了該算法。在使用GPU和TensorNetwork庫時,我們比較了CPU和GPU的使用情況,并觀察到計算速度顯著提高,高達100倍。
計算時間作為鍵維數的函數,χ。 鍵合維度決定了張量網絡的組成張量的大小。 更大的鍵維度意味著更強大的張量網絡,但需要更多的計算資源來操縱。
未來方向:時間序列分析和量子電路模擬
我們計劃用一系列的論文來說明張量網絡在實際應用中的強大之處,這是第一篇。在下一篇論文中,我們將使用TensorNetwork對MNIST和Fashion-MNIST數據集中的圖像進行分類。
未來的計劃包括機器學習方面的時間序列分析和物理方面的量子電路模擬。通過開源社區,我們會經常為TensorNetwork添加新功能。我們希望TensorNetwork將成為物理學家和機器學習實踐者的寶貴工具。
-
谷歌
+關注
關注
27文章
6168瀏覽量
105393 -
AI
+關注
關注
87文章
30896瀏覽量
269110 -
機器學習
+關注
關注
66文章
8418瀏覽量
132646
原文標題:谷歌AI開源張量計算庫TensorNetwork,計算速度暴漲100倍
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論