在之前的一篇文章中,我們介紹過如何將矩陣&概率畫成圖,讀者表示妙不可言。最近,該文作者又動手實現了新的想法:將矩陣畫成張量網路圖。

選自math3ma,作者:Algebra,機器之心編譯,參與:李志偉、張倩。

今天,我想分享一種不同的方法來描繪矩陣,它不僅用於數學,也用於物理、化學和機器學習。基本想法是:一個帶有實數項的 m×n 矩陣 M 可以表示從 R^n→R^m 的線性映射。這樣的映射可以被描繪成具有兩條邊的節點。一條邊表示輸入空間,另一條邊表示輸出空間。

我們可以用這個簡單的想法做很多事情。但首先,要指定 m×n 的矩陣 M,必須指定所有 mn 項 M_ij。索引 i 的範圍從 1 到 m,表示輸出空間的維數;j 的範圍從 1 到 n,表示輸入空間的維數。換言之,i 表示 M 的行數,j 表示其列數。如果我們願意,這些符號可以包括在圖中:

這個想法很容易概括。矩陣是一個二維的數組,而一個 n 維的數組被稱為一個 n 階張量或一個 n-張量。像矩陣一樣,一個 n 張量可以用一個節點來表示,每個維度有一個邊。

例如,一個數字可以被認為是一個零維數組,即一個點。因此,它是一個 0-張量,可以繪製為一個邊為零的節點。同樣地,一個向量可以被認為是一個一維的數組,因此是一個 1-張量。它由一個具有一條邊的節點表示。矩陣是二維數組,因此是 2-張量。它由一個有兩條邊的節點表示。三維張量是一個三維數組,因此是一個有三條邊的節點……。

矩陣乘法是張量的縮並

將兩個矩陣相乘就相當於「粘合」它們的圖。這叫做張量的縮並(tensor contraction)。

在上圖中,具有相同索引 j 的邊是縮並的邊。這與兩個矩陣只有在輸入/輸出維度匹配時才能相乘的事實是一致的。你還會注意到結果圖片有兩個自由索引,即 i 和 k,它們確實定義了一個矩陣。

順便說一下,畫出這些圖的一個關鍵特徵是我們不必攜帶索引。速查:矩陣被描述為一個單節點,每個向量空間有一個邊,但是上面的圖片有兩個節點。我們仍然希望它表示一個矩陣。我可以斷言,它還是一個矩陣!有一個很好的方法可以讓我們看出來:將藍色和綠色節點碰在一起。

這讓我想起雨水從窗戶滴下來:當兩個雨滴接觸時,它們融合成更大的雨滴。這是矩陣乘法。對於矩陣向量乘法,也有類似的情況:一個矩陣 M 乘以一個向量 v,得到另一個向量 Mv,它是一個具有一個自由邊的節點。

更通俗地說,兩個或更多張量的乘積由一組節點和邊表示,其中具有相同索引的邊發生縮並。

節點形狀可以表示不同的屬性

以上的節點都是用圓表示的,但這只是其中一種選擇。沒有人規定必須使用哪種形狀。這意味著我們可以發揮創造力!例如,我們可能只想為對稱矩陣保留一個圓形或其他對稱形狀,如正方形。

然後矩陣的轉置可以通過反轉其圖像來表示:

所以對稱矩陣的對稱性保留在圖中!

我也喜歡將等距嵌入(isometric embedding)繪製為三角形的想法:

等距嵌入 U 是從空間 V 到更大維度空間 W 的線性映射,它保留了向量的長度。這樣的圖滿足 U^?U=id_v,但 UU^?≠id_w。換句話說,你可以將小空間 V 嵌入到大空間,然後再投影回 V 中,而不扭曲 V 中的向量(與拓撲中的回縮映射(retraction map)不同)。但是將所有的 W 都壓縮到小 V 上後,你不能指望在將 V 轉回 W 的過程中修復損壞。三角形暗示了這種大與小的特徵。(三角形的底邊比它的尖端大!)一般來說,如下圖所示,單位線性運算元被畫成直線:

矩陣分解也可以畫出很好的圖

在討論矩陣乘法,即矩陣合成的時候,我們不要忘記矩陣分解!例如,每個矩陣都有一個奇異值分解。這是一張與之相關的很棒的圖片:

這裡,U 和 V 是一元矩陣,所以是等距矩陣,也是三角形。矩陣 D 是一個對角矩陣,我喜歡用一個菱形來表示。總之,矩陣分解是將一個節點分解為多個節點;矩陣乘法是將多個節點融合為一個節點。

上圖說明了這些圖的另一個特點:節點的空間位置並不重要。我可以畫黃色、藍色、綠色和粉色的節點,在水平線、垂直線或之字形等任何我想畫的形狀上。唯一重要的是圖有兩個自由邊。矩陣的乘積是另一個矩陣!

混亂的證明簡化為圖的證明。關於這個圖形符號,我們還有更多想說的,但我將用另一個值得注意的特性來總結:證明過程可以變得非常簡單!以矩陣的跡為例。矩陣的跡圖很簡單。它被定義為一個共同索引的總和:

這串圖沒有自由邊。這是一個循環。這與跡是一個數字的事實是一致的,它是一個 0 張量,所以它沒有自由索引。這裡有一個證明,在循環排列下,跡是不變的:

把珠子沿著項鏈滑。好簡潔!

命名之爭文章中討論的圖起源於 Penrose 的圖形符號,被稱為張量網路圖和/或字元串圖(string diagram),也許有一些微小的區別。「和/或」取決於你是誰。也就是說,在物理/機器學習社區(在那裡它們被稱為張量網路圖)和範疇論社區(在那裡它們被稱為字元串圖),將向量空間的圖可視化地表示為帶邊的節點。我認為這只是一個不同領域的例子,使用幾乎相同的符號來實現不同的目的。範疇論研究者使用字元串圖來證明事物。此外,字元串圖用於表示大多數類型的映射,而不僅僅是向量空間之間的映射。更正式地說,字元串圖可能出現在討論任何一類幺半範疇時。為了文雅地介紹這些範疇思想,請看 Fong 和 Spivak 的「Seven Sketches」以及 Coecke 和 Kissinger 的「Picturing Quantum Processes」。

另一方面,一些物理學家和機器學習研究者使用張量網路來計算事物。一個典型的情況可能是這樣的。你有一個量子系統。你想找到一個特殊的線性運算元的主特徵向量,稱為哈密頓量。這個特徵向量存在於一個大得不可思議的希爾伯特空間中,所以你需要一種技術來以壓縮的方式找到這個向量。輸入:Tensor Networks。

我所說的「大得不可思議」並不是誇張。如果你有一個阿伏伽德羅數的量子粒子,每個粒子只佔據兩個狀態,那麼你需要一個維數為

的向量空間。現在想像在這個空間上有一個線性運算元。這是一個包含

個項的矩陣。這比可見宇宙中原子的數目還要多,後者只有 10^80 個!要想把這個矩陣存在電腦上,那麼只能祝你好運。總之,張量網路有助於我們以一種原則性的、易於處理的方式處理大量參數。

張量網路也與圖模型、自動機等有很多重疊。當前研究的一個脈絡是識別並充分利用這些重疊。所以這裡有很多東西需要探索。可以從這些地方開始探索:
  • Miles Stoudemire 的 iTensor 庫 (itensor.org/):itensor.org/
  • Roman Orus 的「A Practical Introduction to Tensor Networks (arxiv.org/abs/1306.2164)」:arxiv.org/abs/1306.2164
  • Jacob Biamante 和 Ville Bergholm 的「Tensor Networks in a Nutshell」:arxiv.org/abs/1708.0000 (arxiv.org/abs/1708.0000)
  • Google 的 TensorNetwork 庫:github.com/google/Tenso

我一直在做一個項目,在一個更具計算性/物理性的環境中使用這些圖。因此,我傾向於把它們看作張量網路圖,而不是字元串圖。

這個項目以一種特殊的張量網路為特色,有一些非常好的數學知識,我很高興與大家分享。它還使用了之前在博客上討論過的將矩陣看作圖的思想。我計劃今年晚些時候在博客上討論這個問題。

原文鏈接:math3ma.com/blog/matric


推薦閱讀:
相关文章