谷歌AI开源张量计算库TensorNetwork,计算速度暴涨100倍

作者:媒体转发 时间:2019-06-13 09:05

字号
谷歌宣布开源张量计算库TensorNetwork及其API,使用TensorFlow为后端,对GPU处理速度进行优化,与CPU相比,计算加速效果高达100倍。

现代科学领域中,有很多艰巨困难的科学任务,比如开发高温超导体材料、了解空间和时间的本质等,都涉及到处理量子系统的复杂性。这些问题之所以困难,是因为这些系统中的量子态数量呈指数级增长,使得暴力计算行不通了。 

为了解决这个问题,人们利用名为“张量网络”的数据结构,可以专注于与现实问题最为相关的量子态——低能量状态,而忽略其他不相关的状态。张量网络也越来越多地在机器学习中得到应用。

然而,目前在机器学习中应用张量还存在一些困难:比如用于加速硬件的生产级张量网络库尚未在大规模运行张量网络算法中部署,而且,大多数关于张量网络的文献是面向物理学科领域的应用。这也让人们产生一种错误印象,认为需要掌握量子力学的专业知识才能理解张量算法。

本次开源的TensorNetwork使用TensorFlow作为后端,并针对GPU处理进行了优化,与CPU相比,处理速度可以实现100倍的加速。此前已经介绍了TensorNetwork,包括新的库及其API,并针对非物理学背景的读者对张量网络进行了概述,介绍了张量网络在物理学中的特定应用实例,展示了使用GPU带来的处理速度的显著提升。

为什么Tensor Networks有用?从张量的图解表示说起

张量是一种多维数组,根据数组元素的顺序按层级分类:例如,普通数是零阶张量(也称为标量),向量可视为一阶张量,矩阵可视为二阶张量等等。低阶张量可以很容易用一个明确的数字数组或数学符号来表示。

不过涉及到高阶时,这种符号法就变得非常麻烦。使用图解符号对于解决这个问题很有用,一种方法是简单地绘制一个圆(或其他形状),引出多条线或者说“腿”,腿的数量与张量的阶数相同。在这种表示法中,标量表示为一个圆,矢量有一条腿,矩阵有两条腿等。张量的每条腿也有一个尺寸,就是腿的长短。例如,表示物体通过空间的速度的矢量就是三维的一阶张量。

谷歌AI开源张量计算库TensorNetwork,计算速度暴涨100倍

张量的图解表示法

以这种方式表示张量的好处是可以简洁地对数学运算进行编码,例如,用矩阵乘以向量,获得另一个向量,或者将两个向量相乘,得到一个标量。这些都是所谓“张量收缩”的更一般的概念。

谷歌AI开源张量计算库TensorNetwork,计算速度暴涨100倍

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

以下是张量网络的简单示例。张量网络是对几个张量收缩,形成新张量的模式进行编码的图形化表示。构成新张量的每个张量具有各自的阶数,图上表示为腿的数量。互相连接的腿,在图中形成边,表示张量的收缩,而剩余的悬在外面的腿的数量就是生成的新张量的阶数。

谷歌AI开源张量计算库TensorNetwork,计算速度暴涨100倍

左:四个矩阵乘积的表示,即tr(ABCD),它是一个标量,图中没有腿。右:三个三阶张量收缩,最终有三条腿悬在外面,即产生一个新的三阶张量。

虽然这些例子非常简单,但张量网络通常代表以各种方式收缩的数百个张量。用传统的符号来描述这样一件事是很难理解的,这就是Roger Penrose在1971年发明图解符号(diagrammatic notation)的原因。

张量网络在实践中的应用

想象一组黑白图像,每个图像都可以看作是一个n个像素值的列表。单个图像的单个像素可以被一个one-hot编码为二维矢量,通过将这些像素编码结合在一起,我们可以对整个图像进行2N维的one-hot编码。我们可以将这个高维向量重塑成一个order-N张量,然后将图像集中的所有张量相加,得到一个总张量Ti1,i2,…,iN集合。

责任编辑:CQITer新闻报料:400-888-8888   本站原创,未经授权不得转载
继续阅读
热新闻
推荐
关于我们联系我们免责声明隐私政策 友情链接