乐趣区

关于量子计算机:带你认识MindSpore量子机器学习库MindQuantum

摘要:MindSpore 在 3.28 日正式开源了量子机器学习库 MindQuantum,本文介绍 MindQuantum 的关键技术。

本文分享自华为云社区《MindSpore 量子机器学习库 MindQuantum》,作者:HWCloudAI。

MindSpore 在 3.28 日正式开源了量子机器学习库 MindQuantum,本文介绍 MindQuantum 的关键技术。介绍 MindQuantum 前,先简略论述下量子计算的相干概念。

量子计算基本概念

量子计算是当今世界最具颠覆性的技术之一,各个国家和公司都在加大该畛域的研发投入。量子计算机的概念最早是由驰名物理学家费曼于 1981 年提出,依照他的想法,利用量子力学原理运行的量子计算机,相比于经典计算机可能更快的对简单量子零碎进行模仿。因为量子零碎的纠缠性、叠加性和并行性,人们能够以多项式级乃至指数级的减速来实现一些算法,如用于大数合成的 Shor 算法、用于量子搜寻的 Grover 算法等。为了让大家疾速步入量子计算大门,咱们首先须要理解一些根本的概念,包含用于信息存储的量子比特和对量子比特进行逻辑操作的量子门。

量子比特

在经典计算机里,人们通常用电位的高下来示意二进制的 0 和 1,而后利用三极管等半导体器件对电流进行操控,以实现通用逻辑运算。然而,在同一时间内,同一个比特只能处于低电位和高电位中的一种状况。在神奇的量子世界里,一些实体能够同时处于两种不同的状态。例如电子,它的自旋能够同时处于向上的状态和向下的状态,如果咱们把这种向上和向下的状态别离记为 0 和 1

量子逻辑门

量子线路


咱们能够对量子线路演变后的量子态进行测量,从量子态中提取信息,并进行后续操作。

上面,咱们利用 MindQuantum 来对下面的线路进行演变,并失去最终的量子态。首先,依照装置领导实现 MindQuantum 的装置,运行如下代码,将失去末态量子态。

import numpy as np
from mindquantum import Circuit
from mindquantum.highlevel import StateEvolution

c = Circuit()
c.h(0)
c.x(1, 0)
c.ry('theta', 2)

state = StateEvolution(c).final_state({'theta': np.pi/2}, ket=True)
print(state)

输入如下:

0.5¦000⟩
0.5¦011⟩
0.5¦100⟩
0.5¦111⟩

因而咱们失去最终用的量子态为:

量子在机器学习中的利用

早在上个世纪,科学家就提出了用于机器学习的量子感知机概念。最近 20 年,越来越多的用于机器学习的量子算法被发掘出来,其中包含用于求解线性方程组的 HHL 算法,和基于此的量子主成分剖析、量子反对向量机等。下图给出了各种量子机器学习算法对最好经典算法的减速成果。

然而,有意义地实用化这些算法须要成千上万,乃至百万量级的量子比特,在以后 NISQ(Noisy Intermediate-Scale Quantum)阶段,实在量子计算机的比特数只能达到几十到几百的量级,且零碎含有较多噪声。为了在 NISQ 阶段展示量子计算机的劣势,人们倒退进去了量子经典混合机器学习库,经典计算机与量子计算机相辅相成,共同完成一个简单的工作,例如量子化学模仿和组合优化等。

量子机器学习库 MindQuantum

MindQuantum 是联合 MindSpore 和 HiQ 开发的量子机器学习库,反对多种量子神经网络的训练和推理。得益于华为 HiQ 团队的量子计算研发能力和 MindSpore 高性能主动微分能力,MindQuantum 可能高效解决量子机器学习、量子化学模仿和量子优化等问题,性能达到业界 TOP1,为宽广的科研人员、老师和学生提供了疾速设计和验证量子机器学习算法的高效平台。

下图是 MindQuantum 的架构图,以后咱们利用量子模拟器算子来对量子体系进行模仿,它能够实现前向流传和梯度计算的性能,在此基础之上,咱们有量子算法库,例如量子神经网络啊、量子化学模仿的 VQE 和量子优化算法的 QAOA 等,再往上就有了量子利用,咱们能够利用 MindQuantum 的量子算法来进行机器学习、化学模仿和运筹优化等工作。

在 MindQuantum 中,量子神经网络的构造如下图所形容,其中的量子线路由三大块形成,编码线路会将经典数据编码到量子态上,而后是待训练线路,咱们能够通过调节线路中逻辑门的参数来使得最初的测量后果合乎预期。

通过 MindQuantum 中的 MindQuantumLayer,咱们能够很容易的搭建量子机器学习层,并且能够无缝的跟 MindSpore 中其余的算子形成一张更大的机器学习网络。上面,咱们联合一个简略的例子来体验一下 MindQuantum 量子机器学习库。

MindQuantum 量子神经网络初体验

1. 量子线路的搭建

import numpy as np
from mindquantum.ops import QubitOperator
from mindquantum import Circuit, Hamiltonian

encoder = Circuit().rx('alpha', 0).ry('beta', 0).no_grad()
ansatz = Circuit().rx('a', 0).ry('b', 0)
circ = encoder + ansatz
ham =  Hamiltonian(QubitOperator('Z0'))
alpha, beta = 0.5, 1.2
encoder_data = np.array([[alpha, beta]]).astype(np.float32)

2. 搭建训练网络

from mindquantum.nn import MindQuantumLayer
import mindspore as ms

class Net(ms.nn.Cell):
    def __init__(self, pqc):
        super(Net, self).__init__()
        self.pqc = pqc
 
    def construct(self, x):
        return -self.pqc(x)

pqc = MindQuantumLayer(['alpha', 'beta'], ['a', 'b'], circ, ham)
train_net = Net(pqc)

3. 训练

opti = ms.nn.Adam(train_net.trainable_params(), 0.2)
net = ms.nn.TrainOneStepCell(train_net, opti)
for i in range(100):
    print(net(ms.Tensor(encoder_data)))

最初收敛后果为 -0.993。同时咱们也能够求得最初量子态与指标态的保真度。

from mindquantum.highlevel import StateEvolution

a, b = pqc.weight.asnumpy()
pr = {'alpha': alpha, 'beta': beta, 'a': a, 'b': b}
state = StateEvolution(circ).final_state(pr)
fid = np.abs(np.vdot(state, [1, 0]))**2

通过下面的训练,咱们利用量子神经网络对消了零碎的误差,使得最初的量子态的保真度达到 99.9999%。

更多样例

除了下面简略的例子外,咱们还给出了利用 MindQuantum 来进行自然语言解决、量子化学模仿、组合优化求解和手写体辨认等案例,具体请参考上面链接:https://gitee.com/mindspore/m…

将来瞻望

将来咱们将不断丰富量子神经网络模型,反对更多的硬件后端。也欢送宽广量子机器学习爱好者有趣味可能退出咱们,共同开发和保护 MindQuantum 开源社区。

理解完 MindSpore 的关键技术是不是很心动呢!连忙【点击链接】并【立刻报名】,即可在 ModelArts 平台学习到一个经典案例把握基于 MindSpore 的深度学习!

点击关注,第一工夫理解华为云陈腐技术~

退出移动版