zl程序教程

您现在的位置是:首页 >  硬件

当前栏目

量子机器学习新思路——构建参数化的量子线路

机器学习 构建 参数 量子 新思路 线路
2023-06-13 09:15:37 时间

点击上方↑↑↑“量子发烧友”关注我

量子机器学习新思路——构建参数化的量子线路

人工智能的发展已经历60余年,自1956年至今人工智能发展共经历了三个发展阶段。在技术阶段上,AI发展的技术阶段可分为运算智能阶段、感知智能阶段和认知智能阶段三个层次。当前,人工智能的发展正处于第三次发展浪潮之中,处于认知智能时代的初级阶段。

数据、算法、算力是人工智能发展的三驾马车。大数据为AI技术的生长提供了一片沃土,算法是AI技术的底层框架,而算力则是AI技术发展与应用的重要推手。在人工智能领域,所谓算法模型即为了求解给定的问题而经过充分设计的计算过程和数学模型。

一个好的算法模型是评价人工智能与否的关键要素,因此我们常见到这样一种说法来表达算法模型对AI技术的重要意义——算法模型是“人工智能的灵魂”。

在人工智能行业中,高算力AI芯片是AI发展的必要条件,也成为了企业之间角逐的重要引擎。而AI芯片也被称为AI加速器或计算卡,其基本原理仍在于如何通过现有的技术手段提高算力。

AI芯片是专门用于处理人工智能应用中的大量计算任务的模块(其他非计算任务仍由CPU负责)。从广义上讲,能运行AI算法的芯片似乎都可以被称为AI芯片。正是AI技术的算力需求,为量子计算与AI的融合发展提供了良好的契机。国内BAT等巨头互联网公司也逐步推出量子AI软件产品,基于经典的底层模拟探索量子计算对AI应用的加速作用。启科量子技术是量子AI技术应用队伍中的一员。

人工智能可分为深度学习、自然语言处理、计算机视觉、智能机器人、自动程序涉及、数据挖掘等六大领域。机器学习和自然语言处理是人工智能的代表性技术。本文将对不同方式的机器学习做简要介绍,并以启科量子的量子编程框架为例介绍如何使用QuTrunk构建参数化的量子线路。

MindSpore Quantum与TensorFlow Quantum均有采用参数化的量子线路(Parameterized Quantum Circuits, PQCs)方法实现量子机器学习。

1.机器学习

机器学习(Machine Learning)是计算机科学与人工智能的重要分支领域,本质上就是让计算机自己在数据中学习规律,并根据所得到的规律对未来数据进行预测。机器学习的基本思路是模仿人类学习的行为过程。

人类学习行为的一般过程为对新问题进行经验归纳和总结,从而在遇到新问题时运用之前总结的规律预测未来行为。类比人类学习,机器学习是一种学习系统,可通过数据集训练过的计算机,对新数据进行基于一定信息的预测。

在机器学习中,机器学习的效率在很大程度上取决于它所提供的数据集,数据集的大小和丰富度也决定了结果的质量。量子计算能超越传统二进制编码系统扩大和丰富数据集,从而更好的训练机器学习模型,助力解决现实生活中的一些问题。

1.1经典机器学习

机器学习简而言之就是给机器输入一些数据样本,让机器在数据中寻找数学规律。输入的数据样本越丰富,最终得到预测结果将越准确。所谓经典机器学习是相对于量子机器学习而言,其中的主要区别在于,经典机器学习的数据样本是经典的、计算系统采用的是经典计算机系统。

1.2量子机器学习

已在Science杂志上发表的论文《Quantum advantage in learning from experiments》中,研究人员描述在谷歌“悬铃木”Sycamore量子计算机上进行测试的理论和结果,认为量子计算机在处理某些学习任务时,比传统计算机速度优势更大。在证明物理系统特性、执行量子原理成分分析、学习物理动态学等方面都表现出巨大优势,这一结果证明了量子处理器在机器学习方面可能具有显著量子优势。

从现有的物理技术现状而言,我们距离一台通用的量子计算机还十分遥远。虽然已有研究人员证实了量子计算机在机器学习方面的诸多优势,但是直接使用量子计算设备加速传统的机器学习任务尚且达不到实用的程度。因此本文将借鉴现有的量子机器学习软件MindSpore Quantum、TensorFlow等思路,在普通深度学习模型的基础上加入PQC,使用启科量子编程框架构建混合-经典机器学习模型。

1.3 混合量子-经典机器学习

参数化量子线路(Parameterized Quantum Circuit, PQC)即由含参数的量子逻辑门组合而成的量子线路。这种量子线路可以处理量子数据集,再将参数化量子线路嵌入经典机器学习模型。最后将最终的测量值转换为经典数据,再通过经典模型计算出损失值计算模型的参数梯度并更新模型参数。

图来源:https://mp.weixin.qq.com/s/_nAVZ1W5WACi1A_Vc9nXLg

2.使用QuTrunk搭建变分量子线路

在QuTrunk量子中已经封装过Rx、Ry、Rz门。Rx、Ry分别表示量子态在布洛赫球中绕X轴和Y轴旋转0角度,该旋转带来的0角度变化表示对应量子态概率的变化。Rz表示对应量子态在布洛赫球中绕Z轴旋转给定的角度,绕Z轴旋转会改变相位角φ角,即表示该量子态相位的变化。

Rx、Ry、Rz门属于含参数类的量子逻辑门,也被称为旋转门。只需要对Rx、Ry中的0进行赋值即可调节参数得到具有不同作用的逻辑门,因此称Rx、Ry、Rz门属于含参数类的量子逻辑门。那么本文的主要内容——参数化量子线路(Parameterized Quantum Circuit, PQC),即使用这些含参数的量子逻辑门构建一个量子线路。

2.1环境准备

使用启科量子产品导入导入PQC线路的所需要依赖模块。


import numpy as np # 导入numpy库并简写为np

from qutrunk.core.circuit import QCircuit
from qutrunk.core.printer import Printer
from qutrunk.core.gates import H, Y, RY # 导入量子门H, Y, RY
from qutrunk.core.backends import BackendQuSim
from qutrunk.core.exporter import Exporter

说明:core.circuit调用量子线路相关模块。core.gates调用已经封装的量子逻辑门。core.backends调用启科量子的后端QuSimlator(现更名为QuSprout)。QuSprout基于经典计算资源的量子计算模拟软件,支持多线程、多节点、GPU加速,可预安装在QuBox中。QuBox是预装了QuSprout的PKS体系硬件,以产品形态为用户提供量子模拟资源。

2.2构建含参数的量子线路

方式一:直接使用QuBranch新建文件进行输入相应代码

含参量子线路中需要引入含参数类的量子逻辑门。Ry(pi/2) | qr[2]命令中默认的参数0值为π/2,其中0值可以根据需要进行调节。当0值为π/2时,Ry(pi/2) | qr[2]的作用相当于H | qr[2]


import numpy as np # 导入numpy库并简写为np

from qutrunk.core.circuit import QCircuit
from qutrunk.core.printer import Printer
from qutrunk.core.gates import H, Y, RY # 导入量子门H, Y, RY
from qutrunk.core.backends import BackendQuSim  #  调用后端资源
from qutrunk.core.exporter import Exporter

H | qr[0]
Ry(pi/2) | qr[2]
CNOT | (qr[0],qr[1])

打印量子线路结果如下:

q0: ──────H────────●──
                   │
q1: ───────────────⊕──

q2: ──RY(theta)───────

方式二:使用可视化的量子计算产品进行量子线路拖拽自动生成量子线路代码

参数化量子线路(PQC)提供了一种具体的方法实现量子算法,可以将其训练用于各种机器学习任务。参数化量子线路通常由固定门(例如受控NOT)和可调门(例如量子位旋转)组成。即使在量子线路深度较低的情况下,一些类型的PQC也能够产生高度非平凡的输出。例如,在公认的复杂度理论假设下,被称为瞬时量子多项式时间的PQC类线路是无法通过经典资源进行有效模拟的。

混合量子-经典计算主要由三部分组成:人、经典计算机和量子计算机。首先由人类拆解问题信息并选用相对应的初始模型对问题进行表示。其次是经典计算机的处理环节,在经典计算机上对数据进行预处理以确定PQC的一组参数。然后,由量子硬件按照PQC的规定准备量子态并执行测量。最后,测量结果由经典计算机进行处理后生成预测信息返回给人类。

通过训练PQC模型可以解决许多现实问题。本文只是对基础的参数化量子线路(PQC)进行了简单的介绍,可以参考相应的QuTrunk使用步骤去构建更多适用的参数化量子线路(PQC)进行机器学习任务训练实践。

— 完 —