|
世界上许多最艰巨的科学挑战,如开发高温超导体和理解空间和时间的真正本质,都涉及处理量子系统的复杂性。这些挑战之所以困难,是因为这些系统中的量子态数量呈指数级增长,使得强力计算变得不可行。为了解决这个问题,人们使用了称为张量网络的数据结构。张量网络让人们专注于与现实问题最相关的量子态(比如低能量状态),同时忽略不相关的其他状态。张量网络在机器学习 (ML) 中的应用也越来越多。但是,仍然存在一些困难阻碍它们在 ML 社区中的广泛使用:1) 尚未提供用于加速硬件的生产级张量网络库来大规模运行张量网络算法,2) 大多数张量网络文献都是面向物理应用的,并造成了一种错误的印象,即理解这些算法需要量子力学方面的专业知识。
为了解决这些问题,我们发布了TensorNetwork,这是一个全新的开源库,用于提高张量计算的效率,由我们与Perimeter 理论物理研究所和X合作开发。TensorNetwork 使用TensorFlow作为后端,并针对GPU处理进行了优化,与在 CPU 上工作相比,可使速度提高 100 倍。我们在一系列论文中介绍了 TensorNetwork,其中第一篇论文介绍了这个新库及其API,并向非物理学受众概述了张量网络。在我们的第二篇论文中,我们重点关注物理学中的一个特定用例,展示了使用 GPU 获得的加速。
张量网络有何用处?
张量是多维数组,根据其顺序分为多个层次结构:例如,普通数字是零阶张量(也称为标量),向量是一阶张量,矩阵是二阶张量,等等。虽然低阶张量可以很容易地用显式的数字数组或数学符号(如 T ijnklm)来表示(其中索引的数量代表张量的阶),一旦我们开始讨论高阶张量,这种符号就会变得非常麻烦。此时,使用图解符号会很有用,只需画一个圆圈(或其他形状),并从中引出多条线或腿,腿的数量与张量的阶数相同。在这种符号中,标量只是一个圆圈,矢量有一条腿,矩阵有两条腿,等等。张量的每个腿还有一个维度,即该腿的大小。例如,表示物体在空间中的速度的矢量将是三维的一阶张量。
以这种方式表示张量的好处是可以简洁地编码数学运算,例如,将矩阵乘以向量以产生另一个向量,或将两个向量相乘以得到一个标量。这些都是更通用的概念“张量收缩”的例子。
这些也是张量网络的简单示例,张量网络是将多个组成张量的张量收缩模式编码为一个新张量的图形方式。每个组成张量的顺序由其自身的支线数量决定。连接在一起的支线在图中形成一条边,表示收缩,而剩余悬空支线的数量决定了结果张量的顺序。
虽然这些例子非常简单,但感兴趣的张量网络通常表示以各种方式收缩的数百个张量。使用传统符号来描述这样的事情会非常晦涩难懂,这就是罗杰·彭罗斯 (Roger Penrose) 于 1971 年发明图解符号的原因
。实践中的张量网络
考虑一组黑白图像,每个图像都可以看作是N 个像素值的列表。单个图像的单个像素可以独热编码为二维向量,通过将这些像素编码组合在一起,我们可以对整个图像进行 2 N维独热编码。我们可以将该高维向量重塑为N阶张量,然后将图像集合中的所有张量相加,得到封装该集合的总张量T i1,i2,...,iN。
这听起来像是一件非常浪费的事情:以这种方式编码大约 50 个像素的图像已经占用了数 PB的内存。这就是张量网络的作用所在。我们不是直接存储或操作张量T,而是将T表示为许多较小组成张量的收缩,并以张量网络的形式呈现。事实证明,这样做效率更高。例如,流行的矩阵积状态(MPS) 网络会将T写成N 个小得多的张量,这样参数总数就仅与N呈线性关系,而不是指数关系。
高阶张量T由矩阵积状态张量网络中的多个低阶张量表示。
目前尚不清楚能否高效地创建或操作大型张量网络,同时始终避免对大量内存的需求。但事实证明,这在许多情况下是可能的,这就是张量网络在量子物理学和机器学习中得到广泛使用的原因。Stoudenmire和 Schwab使用刚刚描述的编码来制作图像分类模型,展示了张量网络的新用途。TensorNetwork 库旨在促进这类工作,我们的第一篇论文描述了该库如何用于一般的张量网络操作。
物理用例中的性能
TensorNetwork是一个用于张量网络算法的通用库,因此它对物理学家也应该有用。近似量子态是张量网络在物理学中的典型用例,非常适合说明 TensorNetwork 库的功能。在我们的第二篇论文中,我们描述了一种树形张量网络(TTN) 算法,用于近似周期性量子自旋链 (1D) 或薄环面 (2D) 上的晶格模型的基态,并使用 TensorNetwork 实现了该算法。我们比较了 CPU 与 GPU 的使用情况,发现使用 GPU 和 TensorNetwork 库时,计算速度显著提高,最高可达 100 倍。
计算时间与键维数 χ 的关系。键维数决定了张量网络组成张量的大小。键维数越大,张量网络越强大,但需要更多的计算资源来操作。
结论和未来工作
这是计划中的一系列论文中的第一篇,旨在说明 TensorNetwork 在实际应用中的强大功能。在我们的下一篇论文中,我们将使用 TensorNetwork 对MNIST和Fashion-MNIST数据集中的图像进行分类。未来计划包括 ML 方面的时间序列分析和物理方面的量子电路模拟。借助开源社区,我们也一直在为 TensorNetwork 本身添加新功能。我们希望 TensorNetwork 成为物理学家和机器学习从业者的宝贵工具。
致谢
TensorNetwork 库由 Google AI 的 Chase Roberts、Adam Zalcman 和 Bruce Fontaine;Perimeter Institute 的 Ashley Milsted、Martin Ganahl 和 Guifre Vidal;以及 X 的 Jack Hidary 和 Stefan Leichenauer 开发。我们还要感谢 X 的 Stavros Efthymiou 做出的宝贵贡献。
|
|