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

2021-01-10 手機鳳凰網

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

今天,我想分享一種不同的方法來描繪矩陣,它不僅用於數學,也用於物理、化學和機器學習。基本想法是:一個帶有實數項的 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 庫 (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

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

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

相關焦點

  • 網絡圖怎麼畫?手把手教你快速繪製高大上的網絡圖
    網絡工程師繪製網絡圖,通常將網絡節點設備和通信介質進行物理布局,以清晰地展示網絡傳輸方式和途徑。網絡拓撲圖有許多種結構類型,通常有星型、環型、總線型、樹型、網狀、分布式結構、等等。網絡圖常見用途網絡圖在計算機及軟體行業應用較為廣泛。
  • CFD理論掃盲|02 矩陣與張量
    本文描述CFD理論中常用的矩陣、張量及其運算法則。一個有N個未知數N個方程的方程組可以寫成:可以將其轉化為矩陣方程的形式:寫成緊湊形式的矩陣方程為:4 矩陣的行列式行列式是一個與方陣,然後將結果相加來進行計算的,數學表達為:很容易得到一個N階的上三角矩陣、下三角矩陣或對角矩陣
  • 手把手教你畫一條小魚,簡單又可愛,趕快來畫吧!
    手把手教你畫一條小魚,簡單又可愛,趕快來畫吧!先看看完成圖:喜歡畫畫的小夥伴可以一起來分享自己的繪畫心得哦~過程圖解析:001、0.5的黑色中性筆先畫出小魚的輪廓,注意線條的流暢度哦~金魚可以找很多參考,但是畫的時候並不是完全臨摹,而是在素材的基礎上簡化魚身,放大魚尾部分;002、繼續用0.5的黑色中性筆加粗輪廓的線條,讓小魚看起來更有立體感;003、從魚的頭部開始畫細節線條
  • 手把手教你畫簡筆畫,平時用的中性筆就可以畫~好看又治癒
    手把手教你如何畫簡筆畫,平時用的中性筆就可以畫~好看又治癒,先看看完成圖:喜歡畫畫的小夥伴可以一起來分享自己的繪畫心得哦~#簡筆畫教程#過程圖解析:001、鉛筆先畫出鳥的大概形,然後在形的基礎上再加入花朵和小白,豐富畫面;002、0.5的黑色中性筆畫出具體的輪廓,注意線條的流暢度哦~不要斷斷續續;003、適當的把線條加粗處理,讓整體看著更有立體感,小鳥嘴巴和花託部分可以直接塗黑;004、先畫出花朵的細節線條,以點、線結合的方式,花瓣裡面的線條畫得稀疏些;
  • 線條雖然簡單,畫出來卻很好看,手把手教你8步畫簡筆畫
    線條雖然簡單,但是畫出來卻很好看,手把手教你8步畫一幅簡筆畫,先看看完成圖:過程圖解析:001、鳥類真的是超好看的,尤其是羽毛的顏色,但是線描畫不上色,所以要儘量找一些造型好看的鳥類,又很多鳥類有著長長的尾巴,我們可以利用尾巴做一些有趣的造型,由於絲帶和尾巴上的線條比較多,所以鉛筆稿一定要畫的清晰點,以防描線的時候出錯;002、0.5的黑色中性筆描摹出輪廓,注意線條的前後關係,不要畫錯了哦,然後把鉛筆稿擦掉;003、適當的把線條加粗一遍,注意線條的粗細變化要均勻,不要出現斷層,嘴巴和下面的花梗部分可以直接塗黑
  • 小白福利-手把手教你畫幾何體
    塗圖匠今天就手把手地教大家畫幾何體!首先,一些乾貨知識是你必須知道的——素描三大面:素描三大面:亮面(受光部分)、暗面(背光部分)、灰面素描五大調:高光、投影、明暗交界線、反光、灰面高光:受光物體最亮的點,表面是物體直接反射光源的部分,常見於物體較光滑的地方。投影:本身遮住光線後在空間中產生的暗面。
  • 一支鋼筆,教你畫出好看的風景畫
    她的教育模式偏向於「手把手」教學,以至於很多對手繪有著濃厚興趣的人士報名參加,有許多之前在其他系列課堂參加過她的課程的學員們,也都成為了她的粉絲。可見石導師的魅力不一般呀!一開課,石導師向大家說明課程的兩個主要內容——藝術鑑賞和動手繪畫,先進行鋼筆畫的藝術鑑賞,了解鋼筆作畫的形式和特點、技法,剖析鋼筆畫的步驟,等學員們對鋼筆畫有了一定的了解,再動手繪製一幅鋼筆畫。
  • 「簡筆畫教程」:手把手教你畫人物簡筆畫,簡單又好看,菜鳥也會
    今日繪本:手把手教你畫風格:簡筆畫01工具準備A4白紙、橡皮擦、鉛筆、黑色彩鉛、0.1針管筆、鋼筆、紅色筆、黑色馬克筆馬上曬出你的成果吧
  • 深度學習的敲門磚:手把手教你TensorFlow初級入門
    毫無疑問,你會經常一次處理多個向量。 矩陣簡明地表示了向量列表,其中矩陣的每列表示一個特徵向量。 在TensorFlow中用向量的向量表示矩陣,每個向量具有相同的長度。 圖1是一個兩行三列的矩陣的示例,例如[[1,2,3],[4,5,6]]。 注意,這是一個包含兩個元素的向量,每個元素對應一個矩陣行。
  • 深度學習基礎:張量運算
    因此,在底層,我們討論的所有這些權重都是n維矩陣或張量。由於每個權值都是一個n維矩陣或張量,權值的學習和優化涉及數百萬個矩陣乘法。在過去的6-7年中,我們已經看到許多DL框架的出現,它們簡化了這個任務。
  • 手把手教你怎麼畫龍
    傳說多為其能顯能隱,能細能巨,能短能長,所以畫龍是個很費勁的事情,今天就由畫龍名家張登強老師教大家怎麼畫龍。畫龍的基本思路龍是很多動物的合體,所以畫的時候也要從部分到整體,所以的先畫龍的身子,也就是蛇。先畫條蛇,蛇好找吧?照著蛇打個型然後再找頭鹿,把鹿角畫上,然後找條鯉魚,把魚鱗畫到身上,找頭牛,畫臉,找只鷹,畫爪子其他的。
  • 百倍提升張量計算:谷歌開源TensorNetwork
    在這種情況下使用圖解表示法(diagrammatic notation)是更好的選擇,人們只需要畫一個圓(其他形狀也行)和若干條線(或腿),腿的數量表示張量的階數。在這種符號體系中,標量是一個圓,向量有一條腿,矩陣有兩條腿,以此類推……張量的每一條腿也有一個維度,就是腿的長度。例如,代表物體在空間中速度的向量就是三維一階張量。
  • 能「看到」的張量運算:因子圖可視化
    上面動畫的最後一部分給出了一個重要的直覺觀察:每個因子圖都有一個完全收縮的狀態——愛因斯坦求和的右側(示例中的 2 維張量 D)。通過將圖中的所有因子組合成單個因子,然後將每個灰色的變量求和,可以得到這個狀態。現在剩下的是僅連接到未求和變量的單個因子——這就是收縮狀態。
  • 歡迎來到AI的張量世界。是時候直面維度災難了
    通常,9216個MAC可以用來構建一個96*96的脈衝陣列,但是計算一個96*96的矩陣乘法(matrix multiplication,簡稱MM)將延遲至少96個時鐘周期。也就是說,構建這個脈動陣列需要96個96*96矩陣乘法。歡迎來到AI的張量世界。是時候直面維度災難了。
  • 縮並任意張量網絡研究取得進展
    張量網絡在物理中有著廣泛的應用。在量子物理中,張量網絡可以作為高效的變分波函數擬設;在統計物理中,配分函數可以轉換成張量網絡的縮並進而利用重整化群和低秩近似方法來進行有效的計算;另外,在量子計算中,量子線路可以視為具有么正性的特殊張量網絡,其單個振幅的計算亦可以轉換成張量網絡縮並問題。然而,經典的張量網絡縮並方法,例如張量重整化群方法,通常假設系統定義在格點之上。
  • 手把手教你製作ppt日記本
    手把手教你製作ppt日記本時間:2017-07-16 15:06   來源:三聯   責任編輯:沫朵 川北在線核心提示:原標題:ppt怎麼製作筆記本? 手把手教你製作ppt日記本 ppt怎麼製作筆記本?本文介紹了使用ppt製作日記本的方法,製作方法簡單,一起來學習吧!
  • 手把手教你學ELISA、PCR、免疫組化
    1.手把手教你學ELISAELISA的基礎是抗原或抗體的固相化及抗原或抗體的酶標記。結合在固相載體 表面的抗原或抗體仍保持其免疫學活性,酶標記的抗原或抗體既保留其免疫學活性,又保留酶的活性。2.手把手教你學PCR實時螢光定量PCR,簡稱RT-QPCR,屬於Q-PCR的一種,目前該技術已得到廣泛應用,如:擴增特異性分析、基因定量分析、基因分型、SNP分析等。
  • 【萬萬】手把手教你畫3D立體畫
    一張橫放的紙和一張豎放的紙,撐起一個立起來的「人」小恐龍復活了萬萬教您自創3D畫第一步:將左手微微張開,放在一張16開白紙上。第六步:最後,再用黑色水筆在直線和弧線銜接的地方做加粗,強化視覺效果處理,ok,舉起畫紙,欣賞你的第一副立體畫吧。
  • 如何用張量分解加速深層神經網絡?(附代碼)
    這幫助我很好的開始學習這塊內容,建議你閱讀一下這些內容。加上裁剪(pruning),張量分解是加快現有深度神經網絡的實用工具,我希望這篇文章能讓這些內容更加容易理解。這些方法需要將一個層分解成幾個更小的層。儘管在分解後會有更多的層,但是浮點運算次數和權重的總數會變小。
  • 一文弄清深度學習、TensorFlow和張量之間的關係
    結果就是,當你瀏覽熱詞時,你會發現,真的有一些基礎強大的、有用的並且可用的方法,它們能夠充分利用張量所能提供的,而這不僅僅是針對深度學習而言的。這就是為什麼張量為什麼那麼受歡迎。 如果說計算也是有傳統特點的話,那麼使用線性代數的數值計算就是最受歡迎的計算之一了。