手把手教你將矩陣畫成張量網絡圖

在以前的一篇文章中,咱們介紹過如何將矩陣&機率畫成圖,讀者表示妙趣橫生。最近,該文做者又動手實現了新的想法:將矩陣畫成張量網絡圖。git

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

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

咱們能夠用這個簡單的想法作不少事情。但首先,要指定 m×n 的矩陣 M,必須指定全部 mn 項 M_ij。索引 i 的範圍從 1 到 m,表示輸出空間的維數;j 的範圍從 1 到 n,表示輸入空間的維數。換言之,i 表示 M 的行數,j 表示其列數。若是咱們願意,這些符號能夠包括在圖中:數組

這個想法很容易歸納。矩陣是一個二維的數組,而一個 n 維的數組被稱爲一個 n 階張量或一個 n-張量。像矩陣同樣,一個 n 張量能夠用一個節點來表示,每一個維度有一個邊。

例如,一個數字能夠被認爲是一個零維數組,即一個點。所以,它是一個 0-張量,能夠繪製爲一個邊爲零的節點。一樣地,一個向量能夠被認爲是一個一維的數組,所以是一個 1-張量。它由一個具備一條邊的節點表示。矩陣是二維數組,所以是 2-張量。它由一個有兩條邊的節點表示。三維張量是一個三維數組,所以是一個有三條邊的節點……。網絡

矩陣乘法是張量的縮並app

將兩個矩陣相乘就至關於「粘合」它們的圖。這叫作張量的縮並(tensor contraction)。機器學習

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

順便說一下,畫出這些圖的一個關鍵特徵是咱們沒必要攜帶索引。

速查:矩陣被描述爲一個單節點,每一個向量空間有一個邊,可是上面的圖片有兩個節點。咱們仍然但願它表示一個矩陣。我能夠斷言,它仍是一個矩陣!有一個很好的方法可讓咱們看出來:將藍色和綠色節點碰在一塊兒。學習

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

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

節點形狀能夠表示不一樣的屬性

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

而後矩陣的轉置能夠經過反轉其圖像來表示:

因此對稱矩陣的對稱性保留在圖中!

我也喜歡將等距嵌入(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 庫 (http://itensor.org/):http://itensor.org/

  • Roman Orus 的「A Practical Introduction to Tensor Networks (https://arxiv.org/abs/1306.2164)」:https://arxiv.org/abs/1306.2164

  • Jacob Biamante 和 Ville Bergholm 的「Tensor Networks in a Nutshell」:https://arxiv.org/abs/1708.00006 (https://arxiv.org/abs/1708.00006%E4%BB%A5%E5%8F%8AGoogle%E7%9A%84)

  • Google 的 TensorNetwork 庫:https://github.com/google/TensorNetwork

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

這個項目以一種特殊的張量網絡爲特點,有一些很是好的數學知識,我很高興與你們分享。它還使用了以前在博客上討論過的將矩陣看做圖的思想。我計劃今年晚些時候在博客上討論這個問題。


原文連接:https://www.math3ma.com/blog/matrices-as-tensor-network-diagrams
相關文章
相關標籤/搜索