手把手教你将矩阵画成张量网络图

在以前的一篇文章中,咱们介绍过如何将矩阵&几率画成图,读者表示妙趣横生。最近,该文做者又动手实现了新的想法:将矩阵画成张量网络图。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
相关文章
相关标签/搜索