继2019年10月谷歌在《Nature》上发布关于验证“量子优越性”论文之后,3月9日,谷歌再次就“量子”做出新的发布。
这次发布的是开源“量子版 TensorFlow”:TensorFlow Quantum(TFQ)。
简单来说,类似于TensorFlow ,TFQ 作为一个开源库,将直接降低量子机器学习的门槛,让我们能够快速构建量子机器学习模型。
TensorFlow Quantum专注于处理量子数据,及构建量子-经典混合模型(hybrid quantum-classical models)。它在 Cirq 中集成了设计的量子计算算法和逻辑,并提供与现有 TensorFlow API 兼容的量子计算原语,以及高性能的量子电路模拟器。
注:Cirq 是 Google 专为 NISQ 算法打造的框架,允许开发者为特定的量子处理器编写量子算法。
1、量子机器学习
在介绍TFQ之前,我们首先应当了解什么是「量子机器学习」;而要想理解量子机器学习,就必须先要理解两个概念:量子数据和量子-经典混合模型。
在我们日常生活的理解中,数据(以二值数据为例)似乎总是“要么是(1),要么非( 0 )”。然而当我们细想,就会发现我们的日常生活也并非完全的“是”“非”分明,往往则是“是”中有“非”,“非”中有“是”,“是”或“非”只是事态的两个极端。量子的思维正是这样。
在量子力学中常用“态”(这是一个希尔伯特空间的向量)来描述一个系统。例如经典的信息输入序列 01,用量子力学的语言描述即 |01>。经典的数据中态与态(向量与向量)之间只能是正交的,例如 |01> 与 |00> 不可能同时出现,这本质上就是或“是”或“非”的观点。显然对于这些正交态的操作也必须是正交的变换。
然而在量子数据中,扩展了经典数据原有的限制。例如二比特的量子数据,其态表示如下:
也即它同时可能是四种经典数据中的任何一种(取决于前面的系数,你可以简单理解为四个相互正交的向量之间的叠加),而不是非此即彼。
当我们用这种量子数据取代经典数据输入到网络中时,会发生什么呢?如下图所示:
谷歌强势开源量子版TensorFlow">
在经典的感知机中,我们输入的是一个 0 、1 组成的向量,但如果是量子感知机的话,它输入的就是许多个 |φ> = c1 |0> +c2 | 1> 组成的向量,而这个向量的每个元素又都可能既是 0 又是 1 。
然而到现实中,由于目前的量子处理器仍然存在尽管很小但仍不容忽视的噪声,这使得几乎不可能单独用量子处理器来学习量子数据。
于是只能退而求其次,谷歌的NISQ处理器需要与传统的处理器进行协同才能有效地抑制噪声的影响。这种硬件的协同也同样造成算法上的协同,因此便有了量子-经典混合模型,其中模型的量子部分在量子处理器上进行处理,而经典部分则在经典处理器上进行处理。
谷歌研究人员表示,在可预期的将来,量子计算机最有用的功能可能便是一个硬件加速器,也即它并不是作为一个单独的设备存在,而是作为CPU、GPU等传统处理器的加速辅助。因此提供设计量子-经典混合模型的工具就非常有必要。
值得一提的是,和机器学习一样,量子机器学习也经历了两代的发展。对应于第一代机器学习(以支持向量机、k-平均聚类等为代表),第一代量子机器学习主要是一些量子加速线性代数方法。随着以深度学习为代表的第二代机器学习的发展,量子机器学习也因为量子计算机算力的提升步入了第二代,其特点便是基于启发方法(和深度学习类似)。
2、TensorFlow Quantum
简单来说,TensorFlow Quantum 是一个基于TensorFlow的机器学习库,所面向的是量子-经典混合机器学习模型的设计。
更为直白一点,相关量子算法的研究可以调用 TFQ 内部的计算框架,然后用 Python 编程完成运算。另外,可以使用标准Keras功能进行训练。
在具体设计方面,TFQ实现了将TensorFlow与量子计算硬件集成所需的组件,并创建了两个数据类型原语。这两个原语分别是:
- 量子电路:表示TensorFlow中 Cirq 定义的量子电路,创建不同大小的电路批次,类似于不同的实值数据点的批次;
- Pauli sum:表示Cirq中定义的Pauli运算符的张量积的线性组合。像电路一样,创建一批大小不一的运算符。
上图为TFQ 的软件栈,显示了它与TensorFlow、Cirq和计算硬件的交互。栈的顶部是要处理的数据。经典数据由TensorFlow本地处理;TFQ增加了处理量子数据的能力,包括量子电路和量子运算符。
栈的下一层是TensorFlow中的Keras API。由于TFQ的一个核心原则是与TensorFlow内核进行集成,特别是与Keras模型和优化器进行集成,所以这个级别覆盖了整个栈的宽度。
在Keras模型抽象的下面是量子层和微分器,当连接到经典的张量流层时,它们能够实现量子-经典的混合自动微分。
在这些层和微分器之下,有TF Ops,它实例化了数据流图;TFQ Ops 可以控制量子电路的执行。这些电路可以通过调用qsim或Cirq从而以仿真模式运行,或者最终在QPU硬件上执行。
根据谷歌的白皮书[2],当前已经可以使用TFQ包括用于量子分类,量子控制和量子近似优化的监督学习。此外,高级应用还可用TFQ来解决高级量子学习任务,包括元学习、哈密顿学习和热采样。
AI科技评论简单介绍几个应用:
量子-经典卷积神经网络混合分类器。在量子数据的情况下,隐藏的经典参数可以嵌入到量子系统的非局域子系统或子空间中,然后研究员必须执行一些解缠的量子变换,以便从非局部的子空间中提取信息。
谷歌强势开源量子版TensorFlow">
经典的神经网络往往具有平移不变性,而具有平移对称性的量子数据有很多种。这样的量子数据往往是簇态(cluster states)。量子-经典卷积神经网络混合分类器可以解决簇态时检测错误的问题,具体做法是将其看做有监督的分类任务,不过训练所使用的数据将由各种正确和不正确准备的簇态组成,每个都与它们的标签配对。
量子控制中的混合机器学习。为了充分利用神经网络的优化能力的同时,而不用考虑计算开销,有必要对各种神经网络表示和不同类型的量子控制动力学之间的联系进行更深的理解。
谷歌强势开源量子版TensorFlow">
为了达到这个目标,需要TFQ集成几个功能:
- 混合量子-经典网络模型;
- 批量量子电路模拟器;
- 基于量子期望的反向传播;
- 基于梯度和基于非梯度的快速经典优化器。
量子近似优化算法(简称QAOA)。QAOA最初是用来求解最大割问题, 目前的QAOA框架已寻找高阶哈密顿量和连续变量哈密顿量等类似问题。
3、怎么用?
TFQ可以让研究人员在单个计算图中将量子数据集、量子模型和经典控制参数构造为张量。当然与经典机器学习一样,量子机器学习的关键挑战也是对“噪音数据”进行分类。
谷歌强势开源量子版TensorFlow">
但是,要构建和训练这样的模型,研究人员必须执行以下操作:
- 准备量子数据集,每个量子数据张量都指定为用Cirq编写的量子电路,该电路可实时生成量子数据。
- 评估量子神经网络模型,量子模型实质上是对输入的量子数据进行解纠缠,从而留下以经典相关性编码的隐藏信息,从而使其可用于本地测量( local measurements )和经典的后处理( classical post-processing)。
- 样本或期望值。量子态的测量从经典随机变量中以样本形式提取信息。来自随机变量的值的分布通常取决于量子态本身以及所测得的可观测值。由于许多变分算法都取决于测量的平均值,因此TFQ提供了对涉及步骤(1)和(2)的多个运行求期望值的方法。
- 评估经典神经网络模型。提取经典信息后,其格式适用于进一步的经典后处理,由于提取的信息可能仍会以测量的期望之间的经典相关性进行编码,因此经典深度神经网络能应用于提取此类相关性。
- 评估损失函数 。根据经典后处理的结果,评估损失函数。
- 评估梯度和更新参数。评估损失函数后,应沿预期可降低损失的方向更新自由参数这通常是通过梯度下降执行的。
从代码方面来看。基础的安装与调用与Python其他深度学习库没有什么区别。
例如安装:
- pip install -q tensorflow-quantum
导入相关模块:
- import tensorflow as tf
- import tensorflow_quantum as tfq
- import cirq
- import sympy
- import numpy as np
- # visualization tools
- %matplotlib inline
- import matplotlib.pyplot as plt
- from cirq.contrib.svg import SVGCircuit
更多代码层面的教程请移步下面的链接,谷歌由浅入深专门介绍了如何运用TFQ。
https://www.tensorflow.org/quantum/tutorials/hello_many_worlds
在具体的算法层面,谷歌也在白皮书中放出了代码介绍,例如在量子-经典卷积神经网络混合分类器算法中的部分代码介绍如下:
4、So What?
Reddit 社区很快便有对谷歌开源TFQ的回应。有网友表示:
是的,量子机器学习平台的开源,与我们何干?
然而正如物理学家理查德·费曼所说,“自然世界不是经典的,如果你想模拟自然世界,最好使用一套量子的机制。”
在过去几年,尽管以深度学习为代表的机器学习方法在许多问题上产生了深远的影响。然而从长远来看,正如牛顿经典力学并不能精确描述自然世界一样,我们若想模拟自然世界,经典机器学习方法会显得力有未逮,而量子机器学习方法则将成为必然。
如今,诸多科技巨头相继布局量子计算,由此也可见,在未来的10~20年内,量子计算以及量子机器学习必将成为社会发展的重要推动力。
现在入手 TFQ,或恰逢其时。
展望未来,我们如何推动发展?量子计算或许是我们工具箱里可以使用的工具。
5~10年内,我们会面对前所未有的挑战,量子计算会破解我们今天所有的加密,但是我们可以想办法绕过去。任何不断发展的技术都会面临一些挑战,但人工智能和量子技术的结合将会帮助我们解决一些我们现在认为的最大的问题。