内部矩阵维度必须一致simulink_手把手教你将矩阵画成张量网络图

8c43a286344124a6a3bbec36d0bc1446.png
在之前的一篇文章中,我们介绍过如何将矩阵&概率画成图,读者表示妙不可言。最近,该文作者又动手实现了新的想法:将矩阵画成张量网络图。

选自math3ma,作者:Algebra,机器之心编译,参与:李志伟、张倩。

今天,我想分享一种不同的方法来描绘矩阵,它不仅用于数学,也用于物理、化学和机器学习。基本想法是:一个带有实数项的 m×n 矩阵 M 可以表示从 R^n→R^m 的线性映射。这样的映射可以被描绘成具有两条边的节点。一条边表示输入空间,另一条边表示输出空间。

09704f67bf66bbd73f9cf8ee0f47be43.png

我们可以用这个简单的想法做很多事情。但首先,要指定 m×n 的矩阵 M,必须指定所有 mn 项 M_ij。索引 i 的范围从 1 到 m,表示输出空间的维数;j 的范围从 1 到 n,表示输入空间的维数。换言之,i 表示 M 的行数,j 表示其列数。如果我们愿意,这些符号可以包括在图中:

b915fde8334d326fdd3fed130ac302ea.png

这个想法很容易概括。矩阵是一个二维的数组,而一个 n 维的数组被称为一个 n 阶张量或一个 n-张量。像矩阵一样,一个 n 张量可以用一个节点来表示,每个维度有一个边。
例如,一个数字可以被认为是一个零维数组,即一个点。因此,它是一个 0-张量,可以绘制为一个边为零的节点。同样地,一个向量可以被认为是一个一维的数组,因此是一个 1-张量。它由一个具有一条边的节点表示。矩阵是二维数组,因此是 2-张量。它由一个有两条边的节点表示。三维张量是一个三维数组,因此是一个有三条边的节点……。

8f532b335b1bef662ddd79c052e52ede.png

矩阵乘法是张量的缩并
将两个矩阵相乘就相当于「粘合」它们的图。这叫做张量的缩并(tensor contraction)。

93a130719712af1b771a9c5441787414.png

在上图中,具有相同索引 j 的边是缩并的边。这与两个矩阵只有在输入/输出维度匹配时才能相乘的事实是一致的。你还会注意到结果图片有两个自由索引,即 i 和 k,它们确实定义了一个矩阵。
顺便说一下,画出这些图的一个关键特征是我们不必携带索引。
速查:矩阵被描述为一个单节点,每个向量空间有一个边,但是上面的图片有两个节点。我们仍然希望它表示一个矩阵。我可以断言,它还是一个矩阵!有一个很好的方法可以让我们看出来:将蓝色和绿色节点碰在一起。

cd0317c0bc126c742ff102abd9403aa4.png

这让我想起雨水从窗户滴下来:当两个雨滴接触时,它们融合成更大的雨滴。这是矩阵乘法。对于矩阵向量乘法,也有类似的情况:一个矩阵 M 乘以一个向量 v,得到另一个向量 Mv,它是一个具有一个自由边的节点。

51666e4f7f4b55d01f006e3c56f20de2.png

更通俗地说,两个或更多张量的乘积由一组节点和边表示,其中具有相同索引的边发生缩并。

aa8039577e964e736c083569773721d8.png

节点形状可以表示不同的属性
以上的节点都是用圆表示的,但这只是其中一种选择。没有人规定必须使用哪种形状。这意味着我们可以发挥创造力!例如,我们可能只想为对称矩阵保留一个圆形或其他对称形状,如正方形。

168032eaf2eb6933df4fa0e4d797f899.png

然后矩阵的转置可以通过反转其图像来表示:

45ec678564fdfefc70f95d25b2f06acb.png

所以对称矩阵的对称性保留在图中!

8bb8ef80b1c32ddfd1da2409e50ac261.png

我也喜欢将等距嵌入(isometric embedding)绘制为三角形的想法:

ef8bdfefb95b3eafd6386ba6c798acb9.png

等距嵌入 U 是从空间 V 到更大维度空间 W 的线性映射,它保留了向量的长度。这样的图满足 U^⊤U=id_v,但 UU^⊤≠id_w。换句话说,你可以将小空间 V 嵌入到大空间,然后再投影回 V 中,而不扭曲 V 中的向量(与拓扑中的回缩映射(retraction map)不同)。但是将所有的 W 都压缩到小 V 上后,你不能指望在将 V 转回 W 的过程中修复损坏。三角形暗示了这种大与小的特征。(三角形的底边比它的尖端大!)一般来说,如下图所示,单位线性算子被画成直线:

8537867fd57d22ae99bdd666b8532c0d.png

矩阵分解也可以画出很好的图
在讨论矩阵乘法,即矩阵合成的时候,我们不要忘记矩阵分解!例如,每个矩阵都有一个奇异值分解。这是一张与之相关的很棒的图片:

56cca152c6f9d77b74dfb5c0ea81c1e3.png

这里,U 和 V 是一元矩阵,所以是等距矩阵,也是三角形。矩阵 D 是一个对角矩阵,我喜欢用一个菱形来表示。总之,矩阵分解是将一个节点分解为多个节点;矩阵乘法是将多个节点融合为一个节点。

7f9c3d63bebb9253408edfdb134ef084.png

上图说明了这些图的另一个特点:节点的空间位置并不重要。我可以画黄色、蓝色、绿色和粉色的节点,在水平线、垂直线或之字形等任何我想画的形状上。唯一重要的是图有两个自由边。矩阵的乘积是另一个矩阵!混乱的证明简化为图的证明。
关于这个图形符号,我们还有更多想说的,但我将用另一个值得注意的特性来总结:证明过程可以变得非常简单!以矩阵的迹为例。矩阵的迹图很简单。它被定义为一个共同索引的总和:

04b3fc976be99e0fc3d5f6d7cd5d4732.png

这串图没有自由边。这是一个循环。这与迹是一个数字的事实是一致的,它是一个 0 张量,所以它没有自由索引。这里有一个证明,在循环排列下,迹是不变的:

28762c5d9e8b13eebacf9fe51d61316b.png

把珠子沿着项链滑。好简洁!命名之争
文章中讨论的图起源于 Penrose 的图形符号,被称为张量网络图和/或字符串图(string diagram),也许有一些微小的区别。「和/或」取决于你是谁。也就是说,在物理/机器学习社区(在那里它们被称为张量网络图)和范畴论社区(在那里它们被称为字符串图),将向量空间的图可视化地表示为带边的节点。我认为这只是一个不同领域的例子,使用几乎相同的符号来实现不同的目的。
范畴论研究者使用字符串图来证明事物。此外,字符串图用于表示大多数类型的映射,而不仅仅是向量空间之间的映射。更正式地说,字符串图可能出现在讨论任何一类幺半范畴时。为了文雅地介绍这些范畴思想,请看 Fong 和 Spivak 的「Seven Sketches」以及 Coecke 和 Kissinger 的「Picturing Quantum Processes」。
另一方面,一些物理学家和机器学习研究者使用张量网络来计算事物。一个典型的情况可能是这样的。你有一个量子系统。你想找到一个特殊的线性算子的主特征向量,称为哈密顿量。这个特征向量存在于一个大得不可思议的希尔伯特空间中,所以你需要一种技术来以压缩的方式找到这个向量。输入:Tensor Networks。
我所说的「大得不可思议」并不是夸张。如果你有一个阿伏伽德罗数的量子粒子,每个粒子只占据两个状态,那么你需要一个维数为

294eb352e74fef820cf4518c96796773.png

的向量空间。现在想象在这个空间上有一个线性算子。这是一个包含

2c1ba07f4eb54a4ab11318cf1e85f345.png

个项的矩阵。这比可见宇宙中原子的数目还要多,后者只有 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

我一直在做一个项目,在一个更具计算性/物理性的环境中使用这些图。因此,我倾向于把它们看作张量网络图,而不是字符串图。
这个项目以一种特殊的张量网络为特色,有一些非常好的数学知识,我很高兴与大家分享。它还使用了之前在博客上讨论过的将矩阵看作图的思想。我计划今年晚些时候在博客上讨论这个问题。

5938f7fc91c2068502c24c18db644acd.png

原文链接:https://www.math3ma.com/blog/matrices-as-tensor-network-diagrams

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值