百倍提升张量计算:谷歌开源TensorNetwork

栏目: 软件资讯 · 发布时间: 5年前

内容简介:张量网络正越来越多地用于机器学习领域,它被用于执行复杂计算任务,但对于大多数人来说它仍然遥不可及——我们还没有开源库来大规模运行这种底层算法。幸运的是,谷歌正在解决这一问题。昨天,Google AI 发布了 TensorNetwork,它使用 TensorFlow 机器学习框架作为后端,并用 GPU 优化来提高张量计算的效率。TensorNetwork 链接:https://github.com/google/tensornetwork在科学领域有很多难度颇高的挑战,如开发高温超导体、理解时空的本质,这些任

张量网络正越来越多地用于机器学习领域,它被用于执行复杂计算任务,但对于大多数人来说它仍然遥不可及——我们还没有开源库来大规模运行这种底层算法。幸运的是,谷歌正在解决这一问题。昨天,Google AI 发布了 TensorNetwork,它使用 TensorFlow 机器学习框架作为后端,并用 GPU 优化来提高张量计算的效率。

TensorNetwork 链接:https://github.com/google/tensornetwork

在科学领域有很多难度颇高的挑战,如开发高温超导体、理解时空的本质,这些任务需要处理复杂的量子系统。其中最具挑战的是系统中量子态的数量呈指数级增长,使得暴力计算变得不可行。为了解决这个问题,人们开发了 张量网络 (tensor network)这一数据结构。

张量网络让我们专注于量子态与现实世界问题最相关的部分——如低能态,并忽略那些不太相关的部分。张量网络也越来越多地出现在机器学习(ML)应用中。然而,我们仍然能在 ML 社区中看到广泛应用张量网络所面临的困难:1)目前还没有生产级的张量网络库用于规模化地运行张量网络算法;2)大多数张量网络文献是物理学应用方向的,这就产生了一种错误的固有印象:只有通晓量子力学知识才能理解张量网络算法。

为了解决这些问题,谷歌发布了 TensorNetwork:一个旨在提高张量计算效率的全新开源库。谷歌表示,这个 工具 是与加拿大圆周理论物理研究所(Perimeter Institute for Theoretical Physics)、谷歌 X 公司共同开发的产品。它使用 TensorFlow 作为后端,针对 GPU 进行优化,与 CPU 上的运行速度相比实现了 100 倍的加速。

谷歌还在一系列论文中介绍了 TensorNetwork,其中第一篇论文《TensorNetwork: A Library for Physics and Machine Learning》介绍了这个库及其 API,并为非物理背景读者介绍了张量网络的背景。在第二篇论文《TensorNetwork on TensorFlow: A Spin Chain Application Using Tree Tensor Networks》中,谷歌将重点放在一个物理问题的案例上,介绍了如何使用这一工具并获得 GPU 加速。

为何张量网络如此好用?

张量是多维数组,按照阶数分类:例如普通数是零阶张量(也被称为标量),向量是一阶张量,矩阵是二阶张量,以此类推……虽然低阶张量可以简单地使用数组或者 T_ijnklm 这样的数学符号来表示(其中指数的数字代表张量的阶数),但如果我们要处理高阶张量,这种符号表示法就会很繁琐。

在这种情况下使用图解表示法(diagrammatic notation)是更好的选择,人们只需要画一个圆(其他形状也行)和若干条线(或腿),腿的数量表示张量的阶数。在这种符号体系中,标量是一个圆,向量有一条腿,矩阵有两条腿,以此类推……张量的每一条腿也有一个维度,就是腿的长度。例如,代表物体在空间中速度的向量就是三维一阶张量。

百倍提升张量计算:谷歌开源TensorNetwork

张量的图解表示

以这种方式表示张量的优点是可以简洁地编码数学运算,例如将一个矩阵乘以一个向量以产生另一个向量,或者将两个向量相乘以产生标量。这些都是更为通用的「张量缩并」概念的示例。

百倍提升张量计算:谷歌开源TensorNetwork

张量缩并的图解表示法。以上示例包括向量和矩阵相乘,以及矩阵迹(即矩阵对角元素的总和)。

以下是张量网络的简单示例,它们用图的形式表示将多个张量进行缩并形成新张量的过程。每个张量组件的阶数由其腿的数量决定。腿相连形成一条边表示缩并,而「落单」的腿的个数决定最终张量的阶数。

百倍提升张量计算:谷歌开源TensorNetwork

左:四个矩阵乘积的迹 tr(ABCD),这是一个标量(该图中没有出现「落单」的腿)。右:三个三阶张量通过张量缩并过程生成新的三阶张量(其中有三个「落单」的腿)。

尽管这些示例很简单,但张量网络通常可以表示压缩后的数百个张量。使用传统符号描述这一过程比较困难,这也是 1971 年 Roger Penrose 创造图解表示法的原因。

实践中的张量网络

给出一些黑白图像,每一张图像都可以被认为是 N 个像素值的列表。单个图像中的单个像素可以被 one-hot-encode 为二维向量,将这些像素编码结果结合起来会得到整个图像的 2^N 维 one-hot-encoding 结果。谷歌将高维向量转化为 N 阶张量,然后将所有图像的所有张量聚合到一起得到张量 T_(i1,i2,...,iN)。

这看起来似乎是在浪费时间:用这种方式编码约 50 像素的图像就需要拍字节级别(petabytes)的内存。而这正是张量网络的作用所在。研究人员没有直接存储或操纵张量 T,而是将 T 表示为张量网络内的多个小的张量组合,这样就高效得多了。例如,流行的矩阵乘积态(matrix product state,MPS)网络可以将 T 表示为 N 个较小的张量,从而使总参数量为 N 的线性级,而不是指数级。

百倍提升张量计算:谷歌开源TensorNetwork

在 MPS 张量网络中,高阶张量 T 被表示为多个低阶张量。

这并不能表明,在高效创建或操纵大型张量网络的同时能够持续避免使用大量内存。但这至少说明在某些情况下是可能的,这也是张量网络广泛用于量子物理和机器学习领域的原因。Stoudenmire 和 Schwab 在论文《Supervised Learning with Quantum-Inspired Tensor Networks》中使用这种编码来创建图像分类模型,展示了张量网络的新用途。而谷歌开发的 TensorNetwork 库旨在推进这类工作,谷歌在 TensorNetwork 相关论文《TensorNetwork: A Library for Physics and Machine Learning》中介绍了该库的用途。

TensorNetwork 在物理场景中的性能

TensorNetwork 是一个针对张量网络算法的通用库,因此它适用于物理学场景。逼近量子态是张量网络在物理学领域的传统用法,恰好可以说明 TensorNetwork 库的能力。谷歌在另一篇论文《TensorNetwork on TensorFlow: A Spin Chain Application Using Tree Tensor Networks》中,介绍了一种树张量网络(tree tensor network,TTN),它可以逼近周期性量子自旋链(一维)或 thin torus 上点阵模型(二维)的真值状态。谷歌使用 TensorNetwork 库实现了该算法。此外,谷歌研究人员还对比了使用 CPU 和 GPU 的情况,发现在使用 GPU 和 TensorNetwork 库时出现了显著的计算加速(100 倍)。

百倍提升张量计算:谷歌开源TensorNetwork

连接维度 vs 计算时间。连接维度(bond dimension)决定张量网络中张量的大小。连接维度越大说明张量网络越强大,但同时也需要更多的计算资源。

结论和未来工作

谷歌表示这是阐述 TensorNetwork 在现实应用中作用的系列文章的第一篇,后续谷歌将使用 TensorNetwork 在 MNIST 和 Fashion-MNIST 上执行图像分类,以及时序分析、量子电路模拟等。谷歌希望 TensorNetwork 能够成为物理学家和机器学习从业者的得力助手。

原文链接:https://ai.googleblog.com/2019/06/introducing-tensornetwork-open-source.html


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

PWA实战

PWA实战

[美]Dean Alan Hume / 郑丰彧 / 电子工业出版社 / 2018-6 / 69

Progressive Web App(PWA)是由谷歌提出的一整套技术解决方案,它致力于为 Web 提供出色的用户体验,并完美体现了渐进增强原则。作为为数不多的实战入门用书,《PWA 实战:面向下一代的Progressive Web App》旨在通过大量清晰示例来介绍 PWA 的主要特性。全书一共由五个部分组成:第一部分介绍 PWA 的概念及解锁 PWA 应用的关键—Service Worker......一起来看看 《PWA实战》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具