编译 |  琥珀

出品 | AI科技大本营(ID:rgznai100)

世界上许多最严峻的科学挑战,如开发高温超导体和理解时空的本质,都涉及处理量子系统的复杂性。然而,这些系统中量子态的数量程指数级增长,使得暴力计算并不可行。为了解决该问题,数据结构采用了张量网络的方式。张量网络让人们关注与现实世界问题最相关的量子态,如低能态。张量网络已经越来越多地在机器学习中得到应用。

然而,目前仍存在相当多的一些挑战阻碍了其在机器学习社区中的广泛使用:1)用于加速硬件的生产级张量网络库还不能用于大规模运行张量网络算法;2)大多数张量网络文献是面向物理应用的,并产生了一种错误的印象,即需要量子力学方面的专业知识来理解算法。

为了解决这一问题,谷歌 X 实验室与加拿大 Perimeter 理论物理研究所(Perimeter Institute for Theoretical Physics )的研究人员合作开发了张量网络 TensorNetwork,以 TensorFlow 作为后端,针对 GPU 处理进行了优化。与在 CPU 上计算工作相比,可以实现高达 100 倍的加速。这是一个全新的开源库,旨在提高张量计算的效率。

据悉,研究人员已经发布了一些列论文对张量网络的概念、特性以及应用特例等方面进行了详细阐释。

论文链接:

https://arxiv.org/abs/1905.01330

https://arxiv.org/abs/1905.01331

GitHub 链接:

https://github.com/google/tensornetwork

工作原理

张量是一种多维数组,按照顺序进行分类。例如,一个普通数零阶张量,也称为标量,一个向量是一阶张量,一个矩阵是二阶张量。虽然低阶张量可以很容易地用数字数组或像 Tijnklm 这样的数学符号来表示,但一旦开始讨论高阶张量,这个符号就变得非常麻烦。

这一点上,使用图解记数法是非常有用的,在这种记数法中,人们只需画一个有许多条线或” 腿 “的圆(或其他形状)。在这个符号中,标量只是一个圆,向量只有一条腿,矩阵有两条腿等。张量的每条腿也有大小,也就是腿的长度。

张量的图解符号

以这种方式表示张量的好处是简洁地编码数学运算,例如,将一个矩阵乘以一个向量得到另一个向量,或者两个向量相乘得到标量。这个过程被称为张量收缩。

张量收缩的图解表示法

向量和矩阵乘法以及矩阵迹线(即矩阵对角元素的总和)。

除了这些案例之外,还有以张量收缩模式进行编码以形成一个新张量的图形方式。每个组成张量都有一个由自己的腿数决定的顺序。连接的腿在图中形成一条边,代表收缩,而剩余悬空腿的数量决定了合成张量的顺序。

左:四个矩阵乘积的表示,即 tr(ABCD),它是一个标量。右:三个三阶张量收缩,三条腿悬空,产生一个新的三阶张量。

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

实践过程

以一些黑白图像为例,每个图像可以被看做是 N 个像素值的列表。单个图像中的单个像素可以被独热编码( one-hot-encoding)成二维向量,并且通过这些像素编码组合在一起,我们可以得到 2N 个维独热编码的结果。我们可以将高维向量转化为 N 阶张量,然后将图像集合中所有张量相加,得到量 Ti1,i2,...,iN 的集合。

这听起来像是一件非常浪费时间的事情。因为以这种方式对约 50 像素的图像进行编码已经占用了数千兆字节的内存。这正是张量网络的作用所在。研究人员没有直接存储或操纵张量 T,而是将张量 T 作为张量网络内的多个小的张量组合。结果证明这非常有效。例如,流行的矩阵乘积态(matrix product state,MPS)网络可以将 T 表示为 N 个较小的张量,从而总参数量为 N 的线性级,而不是指数级。

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

但在有效构建或操纵大型张量网络的同时又能始终避免使用大量内容的需求,是不太明显的。但事实证明,这在许多情况下是可能的,这也是张量网络广泛用于量子物理和机器学习领域的原因。Stoudenmire 和 Schwab 使用这种编码来构建图像分类模型,展示了张量网络的新用途。而 TensorNetwork 库旨在推进这类工作,研究人员在 TensorNetwork 相关论文中介绍了该库如何应用于张量网络的操作。

在物理场景中的应用性能

TensorNetwork 是一个针对张量网络算法的通用库,因此它适用于物理学场景。逼近量子态是张量网络在物理学中的一个典型用例,可说明张量网络库的能力。在另一篇论文《TensorNetwork on TensorFlow: A Spin Chain Application Using Tree Tensor Networks》中,研究人员提出了一种近似树张量网络(tree tensor network,TTN),并使用张量网络库实现了该算法。此外,研究人员还对比了 CPU 和 GPU 的情况,发现在使用 GPU 和张量网络库时,计算速度显著提高了近 100 倍。

计算时间作为连接维度的函数 X。连接维度( bond dimension )决定了张量网络中张量的大小。连接维度越大意味着张量网络约强大,但这个过程也需要更多的计算资源。

总结及未来工作

本文是讲述 TensorNetwork 实际应用案例的第一篇文章,后续的论文中,研究人员将使用 TensorNetwork 在 MNIST 和 Fashion-MNIST 上执行图像分类,后面还将包括时序分析、量子电路仿真等。研究人员希望 TensorNetwork 能成为物理学家和机器学习从业者的宝贵工具。

相关链接:

https://ai.googleblog.com/2019/06/introducing-tensornetwork-open-source.html

如何挑战百万年薪的人工智能!

https://edu.csdn.net/topic/ai30?utm_source=csdn_bw

作为码一代,想教码二代却无从下手:

听说少儿编程很火,可它有哪些好处呢?

孩子多大开始学习比较好呢?又该如何学习呢?

最新的编程教育政策又有哪些呢?

下面给大家介绍CSDN新成员:极客宝宝(ID:geek_baby)

戳他了解更多↓↓↓

 热 文 推 荐 

☞挥别百度,那些顶级技术人才都去哪儿了?

☞开源正在蚕食 500 亿美元的数据库行业!

☞漫画:什么是二分查找?

☞惊!为拯救美国落伍的 STEM 教育,纷纷出手教老师编程?!

程序员爬取 42 年高考数据,告诉你高考为什么这么难?

☞把病毒写到区块链上可以永远不死? 我们做了一个大胆的实验…… | 技术头条

新一代私有云来了!看透基于开源生态的产品化

☞Python实现生命游戏

B站超全分享!2万人收藏的免费计算机科学速成课

☞敲代码时,程序员戴耳机究竟在听什么?

你点的每个“在看”,我都认真当成了喜欢

直接拿来用!谷歌开源网络库 TensorNetwork,GPU 处理提升 100 倍相关推荐

  1. 谷歌开源张量网络库TensorNetwork,GPU处理提升100倍!

    编译 |  琥珀 出品 | AI科技大本营(ID:rgznai100) 世界上许多最严峻的科学挑战,如开发高温超导体和理解时空的本质,都涉及处理量子系统的复杂性.然而,这些系统中量子态的数量程指数级增 ...

  2. MIT 的新型开源系统 Taco 将数据分析速度提升 100 倍 !(附论文)

    来源:全球人工智能 概要:麻省理工学院(MIT)开发的一种新型计算机系统为涉及"稀疏张量"(sparse     tensor)的计算加快了速度,稀疏张量是主要由0组成的多维数据数 ...

  3. 开源sk-dist,超参数调优仅需3.4秒,sk-learn训练速度提升100倍

    作者 | Evan Harris 译者 | Monanfei 编辑 | Jane  出品 | AI科技大本营(ID:rgznai100) [导语]这篇文章为大家介绍了一个开源项目--sk-dist.在 ...

  4. AI一分钟 | 李开复:AI创业公司估值今年会降20%~30%;谷歌让搜索结果加载速度提升两倍...

    ▌李开复:AI 创业公司估值今年会降 20%~30% 创新工场创始人李开复的新书<AI·未来>昨天正式全球发售,在发布现场,李开复谈到目前国内 AI 创业企业现状时表示,今年国内 AI 创 ...

  5. ICML 2021:矩阵乘法无需相乘,速度提升100倍,MIT开源最新近似算法

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 在不做乘 ...

  6. 矩阵乘法无需相乘,速度提升100倍,MIT开源最新近似算法 | ICML 2021

    萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 在不做乘加操作(multiply-adds)的情况下,能计算矩阵乘法吗? 矩阵乘法包含大量a+b×c类运算,因此常在运算中将乘法器和加法器进 ...

  7. 唯快不破:开源网络库的分析libevent muduo nginx

    每一个开源项目存在都有它的道理和意义,不同的思想有不同的优缺点. libevent:这是一个用纯C写的开源库,属于一个轻量级的网络中间件.其中用到的基本数据结构也是非常巧妙.展现反应堆模型的基本使用方 ...

  8. 开源网络库Alamofire的安装及简单使用

    方式一.使用CocoaPods添加Alamofire依赖 1. 安装CocoaPods(一种第三方依赖管理工具) 网址:COCOAPODS 打开电脑上的终端(Terminal) 在终端输入COCOAP ...

  9. go开源网络库nano(6)-hander逻辑

    hander 前言 hander 定义 方法 1. 注册服务 本地服 远程服务 2. 获取服务 本地 远程 3. 查找远程服务 4. 处理调用 包的处理 消息处理 本地调用处理 远程调用处理 下一章 ...

最新文章

  1. ueditor与七牛云存储结合
  2. spring 注解@PathVariable
  3. 列注释_简单5步了解相关矩阵的注释热图
  4. python处理excel表格数据-利用Python处理和分析Excel表中数据实战.doc
  5. Oracle 序列和触发器
  6. java 原子类能做什么_Java原子类中可以靠版本号比较为什么还需要CAS操作??
  7. 图书管理系统——运行及总结
  8. PointConv论文阅读笔记
  9. 软件测试相关的63个国外站点
  10. 机器学习实战笔记1-机器学习基础
  11. 2016noip蚯蚓《单调队列》
  12. conan入门(六):conanfile.txt conanfile.py的区别
  13. 初探一个0代码开发—iVX平台
  14. Qt基于mupdf的pdf转图片
  15. 内网穿透的几种方式-免费与收费(钉钉、Frp、花生壳、nat123)
  16. 给自己一个618消费的理由 飞利浦B8905回音壁有料分享
  17. 三维重建:几种坐标系的简介
  18. Spring 注解@Value详解
  19. 反思|Android 事件拦截机制的设计与实现,android组件化开发
  20. 安全进化的终极猜想— 以“AI之盾”对抗“AI之矛”

热门文章

  1. 《Linux编程》上机作业 ·002【Linux常用工具GCC、GDB、Make】
  2. [Python] zip
  3. fft qt 代码_最简洁的FFT代码(C++实现)
  4. vue如何生成公钥私钥_百行Python代码演示1私钥生成多公链公钥原理。|区块链财富指北私钥篇(2)...
  5. linux下部署Tesseract OCR及调用
  6. C,C++中转义字符的用法
  7. 三菱fx3u通讯手册_三菱FX3U与变频器通讯程序如何编写
  8. 台式临床化学分析仪行业调研报告 - 市场现状分析与发展前景预测
  9. 中国体脂分析仪行业市场供需与战略研究报告
  10. 2021-2025年中国电动足部检查椅行业市场供需与战略研究报告