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

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

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

量子计算基本概念

量子计算是当今世界最具颠覆性的技术之一,各个国家和公司都在加大该领域的研发投入。量子计算机的概念最早是由著名物理学家费曼于1981年提出,按照他的想法,利用量子力学原理运行的量子计算机,相比于经典计算机能够更快的对复杂量子系统进行模拟。由于量子系统的纠缠性、叠加性和并行性,人们可以以多项式级乃至指数级的加速来实现一些算法,如用于大数分解的Shor算法、用于量子搜索的Grover算法等。为了让大家快速步入量子计算大门,我们首先需要了解一些基本的概念,包括用于信息存储的量子比特和对量子比特进行逻辑操作的量子门。

量子比特

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

量子逻辑门

量子线路

我们可以对量子线路演化后的量子态进行测量,从量子态中提取信息,并进行后续操作。

下面,我们利用MindQuantum来对上面的线路进行演化,并得到最终的量子态。首先,按照[安装指导](MindSpore/mindquantum)完成MindQuantum的安装,运行如下代码,将得到末态量子态。

import numpy as np
from mindquantum import Circuit
from mindquantum.highlevel import StateEvolutionc = 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, Hamiltonianencoder = 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 msclass Net(ms.nn.Cell):def __init__(self, pqc):super(Net, self).__init__()self.pqc = pqcdef 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/mindquantum/tree/master/tutorials

未来展望

未来我们将不断丰富量子神经网络模型,支持更多的硬件后端。也欢迎广大量子机器学习爱好者有兴趣能够加入我们,共同开发和维护MindQuantum开源社区。

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

点击关注,第一时间了解华为云新鲜技术~

带你认识MindSpore量子机器学习库MindQuantum相关推荐

  1. 一文带你认识MindSpore新一代分子模拟库SPONGE

    [本期推荐专题]物联网从业人员必读:华为云专家为你详细解读LiteOS各模块开发及其实现原理. 摘要:基于MindSpore自动并行.图算融合等特性,SPONGE可高效地完成传统分子模拟过程,利用Mi ...

  2. 谷歌迈出量子计算开源第一步,推出首个量子机器学习库TensorFlow Quantum

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 乾明 十三 发自 凹非寺 量子位 报道 | 公众号 QbitAI 刚刚,谷歌在量子计算 ...

  3. Google 发布开源库 TFQ,快速建立量子机器学习模型!

    整理 | 弯月 责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 近日,Google 与滑铁卢大学.大众汽车等联合发布 TensorFlow Quantum(TFQ),一个可快速建立量子机 ...

  4. Google重磅发布开源库TFQ,快速建立量子机器学习模型

    整理 | 弯月 编辑 | 郭芮 出品 | AI科技大本营(ID:rgznai100) 近日,Google 与滑铁卢大学.大众汽车等联合发布 TensorFlow Quantum(TFQ),一个可快速建 ...

  5. sklearn:Python语言开发的通用机器学习库

    引言:深入理解机器学习并全然看懂sklearn文档,须要较深厚的理论基础.可是.要将sklearn应用于实际的项目中,仅仅须要对机器学习理论有一个主要的掌握,就能够直接调用其API来完毕各种机器学习问 ...

  6. 15分钟带你入门sklearn与机器学习——分类算法篇

    作者 | 何从庆 本文转载自AI算法之心(ID:AIHeartForYou) [导读]众所周知,Scikit-learn(以前称为scikits.learn)是一个用于Python编程语言的免费软件机 ...

  7. 伟大前程与技术难关:量子机器学习该如何走进现实?

    量子为什么能够计算?量子机器学习该如何走进现实?本文回答了量子计算的原理,发展现状,以及成长预期,与大家分享! 在我们描述21世纪刚刚过去的第二个十年的技术版图中,人工智能(AI).大数据(Big D ...

  8. 一文看懂国产最大深度学习平台上新,国内率先加持量子机器学习

    金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 四年时间,累计开发者数量超190万,发布模型超23万,服务企业数量8.4万. 这就是国产最大深度学习开源平台--百度飞桨--在WAVE SU ...

  9. 一文看懂国产最大深度学习平台上新:35项全面升级,国内率先加持量子机器学习...

    金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 四年时间,累计开发者数量超190万,发布模型超23万,服务企业数量8.4万. 这就是国产最大深度学习开源平台--百度飞桨--在WAVE SU ...

最新文章

  1. go 清空文件内容_玩转Go单元测试,你只需要掌握这5点
  2. @autowired注解_SpringBoot常用注解大全
  3. React Native 加载多类型布局的实现——分类列表SectionList的封装
  4. 2021年必备 Python 插件!
  5. mySQL 数据库错误
  6. 基于融合计算?蚂蚁金服的在线机器学习是如何做的
  7. Python快速安装库的靠谱办法
  8. 最短路(hdu4725)(建点巧妙)
  9. JavaEE Tutorials (9) - 运行持久化示例
  10. 万年历 html 代码,用javascript 实现的万年历代码。
  11. usb无线网卡linux驱动,Linux系统下安装USB无线网卡驱动方法
  12. dede flag标签用法
  13. python统计分析-卡方分析和方差分析
  14. [Math]常见矩阵分解及复杂度 Cholesky QR LU
  15. Revit 2022安装教程(附详细安装步骤+激活教程)
  16. MySQL 使用SQL语句实现 增删改查
  17. in a frame because it set 'X-Frame-Options' to 'sameorigin'
  18. 1:Web开发入门-Java Web
  19. 暑期学习与“懒人电商”项目经验总结
  20. 无锡会计培训——出纳要考初级会计吗?

热门文章

  1. 理论 | 优雅的构建一个健壮的API接口
  2. Bootstrap3 栅格系统
  3. linux下apache无法访问localhost,CentOS 6.8安装httpd后无法访问
  4. c++ primer plus中文版_如何成为一名厉害的C/C++程序员?
  5. antdesign 柱状图_以Ant Design为例:看B端设计的基本套路
  6. C++自己实现一个String类(腾讯阿里面试题目)
  7. php(2)—基础补充
  8. FCC 中级算法题 所有素数之和
  9. mysql5.6-5.7性能调优
  10. free() 是如何释放不同内存区块大小的指针?