前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TensorNetwork,一个能够提高张量计算效率的开源库

TensorNetwork,一个能够提高张量计算效率的开源库

作者头像
AI研习社
发布2019-07-20 16:22:59
1.4K1
发布2019-07-20 16:22:59
举报
文章被收录于专栏:AI研习社AI研习社

世界上许多最棘手的科学挑战,如开发高温超导体和了解空间和时间的本质,都涉及到处理量子系统的复杂性。使这些挑战变得困难的原因是这些系统中的量子态数量呈指数级增长,使得暴力计算变得不可行。为了解决这个问题,使用了称为张量网络的数据结构。张量网络让人们专注于与现实问题最相关的量子态 - 低能量状态,而忽略其他不相关的状态。张量网络也越来越多地在机器学习(ML)中找到应用。然而,仍存在阻碍它们在ML领域中广泛使用的困难:

(1)用于加速硬件的企业级张量网络库尚未可用于大规模运行张量网络算法。

(2)大多数张量网络文献是面向物理应用,并产生错误的印象,即需要量子力学专业知识来理解算法。

为了解决这些问题,我们发布了TensorNetwork,这是一个全新的开源库,用于提高张量计算的效率,与Perimeter理论物理研究所和X合作开发.TensorNetwork,使用TensorFlow作为后端,并针对GPU进行了优化处理,与在CPU上工作相比,可以实现高达100倍的加速。我们在一系列论文中介绍了TensorNetwork,其中第一篇介绍了新的库及其API,并概述了非物理学观众的张量网络。在我们的第二篇论文中,我们关注物理学中的特定用例,展示了使用GPU的速度。

Tensor Networks有什么用?

张量是多维数组,根据它们的顺序按层次分类:例如,普通数组是零阶张量(也称为标量),向量是一阶张量,矩阵是二阶张量等等。虽然低阶张量很容易用一个明确的数字数组或一个数学符号来表示,例如 Tijnklm(其中索引的数量代表张量的阶数),一旦我们开始谈论高阶,这种符号就变得非常麻烦。在这一点上,开始使用图解符号很有用,其中一个简单地绘制一个圆圈(或其他形状),其中有多条边,从它出来的边的数量与张量的顺序相同。在这种表示法中,标量只是一个圆,一个矢量有一条边,一个矩阵有两条边等。张量的每条线也有一个尺寸,就是那条边的大小。例如,表示物体通过空间的速度的矢量将是三维的一阶张量。

张量的图表符号

以这种方式表示张量的好处是简洁地编码数学运算,例如,将矩阵乘以矢量以产生另一个矢量,或者将两个矢量相乘以产生标量。这些都是称为张量收缩的更一般概念的例子。

张量收缩的图解表示法。矢量和矩阵乘法以及矩阵迹线(即,矩阵的对角元素的总和)都是示例。

这些也都是张量网络的简单示例,张量网络是对几个组成张量的张量收缩模式进行编码以形成新张量的图形方式。每个组成张量具有由其自己的边数确定的顺序。连接的边,在图中形成边缘,表示收缩,而剩余的悬挂边的数量决定了合成张量的顺序。

左:四个矩阵乘积的轨迹,tr(ABCD),是一个标量。 你可以看到它没有晃来晃去的边。 右:三个张力收缩,三条边晃来晃去,产生一个新的张量。

虽然这些示例非常简单,但感兴趣的张量网络通常代表以各种方式收缩的数百个张量。使用传统符号来描述这样的事情会非常模糊,这就是为什么会使用Roger Penrose在1971年发明的图表符号。

在实战中的Tensor Networks

考虑一组黑白图像,每个图像都可以被认为是Npixel值的列表。可以将单个图像的单个像素一次热编码为二维矢量,并且通过将这些像素编码组合在一起,我们可以对整个图像进行2N维热编码。我们可以将这个高维向量重新整形为一个N阶张量,然后将我们的图像集合中的所有张量相加,得到一个总张量Ti1,i2,...,iN 封装集合。

这听起来像是一件非常浪费的事情:以这种方式编码大约50个像素的图像已经占用了数PB的内存。这就是张量网络进入的地方。我们不是直接存储或操纵张量T,而是将T表示为张量网络形状的许多较小组成张量的收缩。结果证明效率更高。例如,流行的矩阵乘积状态(MPS)网络将根据Nm个较小的张量来写入T,使得参数的总数仅在N中是线性的,而不是指数的。

高阶张量T用矩阵乘积状态张量网络中的许多低阶张量表示

显而易见的是,可以有效地创建或操纵大张量网络,同时始终避免需要大量内存。但事实证明,在许多情况下这是可能的,这就是为什么张量网络已广泛用于量子物理学,现在,在机器学习中, Stoudenmire和Schwab使用刚刚描述的编码来制作图像分类模型,展示了张量网络的新用途。TensorNetwork库旨在促进这种工作,我们的第一篇论文描述了库如何用于一般张量网络操作。

物理样例中的表现

TensorNetwork是张量网络算法的通用库,因此它也应该对物理学家有用。近似量子态是物理学中张量网络的典型用例,非常适合说明TensorNetwork库的功能。在我们的第二篇论文中,我们描述了一种树张量网络(TTN)算法,用于近似周期性量子自旋链(1D)或薄环面(2D)上的晶格模型的基态,并使用TensorNetwork实现该算法。我们将CPU与GPU的使用进行比较,并在使用GPU和TensorNetwork库时观察到高达100倍的显着计算速度。

计算时间作为键维数的函数,χ。键合维度决定了张量网络的组成张量的大小。更大的键维度意味着张量网络更强大,但需要更多的计算资源来操纵。

总结及未来的工作

这是一系列计划论文中的第一篇,旨在说明TensorNetwork在实际应用中的强大功能。在下一篇论文中,我们将使用TensorNetwork对MNIST和Fashion-MNIST数据集中的图像进行分类。未来的计划包括机器学习和时间序列分析,以及物理方面的量子电路仿真。通过开源社区,我们也会是向TensorNetwork本身添加新功能。我们希望TensorNetwork成为物理学家和机器学习从业者的宝贵工具。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Tensor Networks有什么用?
  • 在实战中的Tensor Networks
  • 物理样例中的表现
  • 总结及未来的工作
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档