首页 / 机器学习框架

机器学习框架有效专利 发明

技术领域

[0001] 本发明属于量子计算技术领域,特别是涉及一种机器学习框架。

相关背景技术

[0002] 机器学习模型由于其优异的性能而被广泛应用于人工智能研究,通过利用标注好的训练数据对机器学习模型进行训练,可以得到符合预期的机器学习模型,进而将其用于语音识别、图像识别等具体应用工作。机器学习模型无须人为设立其用于具体应用工作的标准,通过训练机器学习模型可以自己建立相应的工作标准,对于不同应用工作具有较好的适应性。
[0003] 相关技术中,一些通用的机器学习模型及机器学习相关操作使用频率较高,为提高构建机器学习模型及训练该模型的效率,研发人员设计了机器学习框架内置通用机器学习模型及相关操作如TensorFlow。但是,对于量子机器学习,缺乏适用于量子机器学习的框架,使得量子机器学习的开发效率低下。

具体实施方式

[0069] 下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
[0070] 本发明实施例提供了一种机器学习框架20,该框架可以应用于电子设备,如计算机终端,具体如普通电脑、量子计算机等。
[0071] 下面以运行在计算机终端上为例对其进行详细说明。图1是根据一示例性实施例示出的一种机器学习框架20的计算机终端的硬件结构框图。如图1所示,计算机终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储基于所述机器学习框架20创建的机器学习模型的存储器104,可选地,上述计算机终端还可以包括用于通信功能的传输装置106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
[0072] 存储器104可用于存储应用软件的软件程序以及模块,如本申请实施例中的机器学习框架20对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0073] 传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
[0074] 需要说明的是,真正的量子计算机是混合结构的,它包含两大部分:一部分是经典计算机,负责执行经典计算与控制;另一部分是量子设备,负责运行量子程序进而实现量子计算。而量子程序是由量子语言如QRunes语言编写的一串能够在量子计算机上运行的指令序列,实现了对量子逻辑门操作的支持,并最终实现量子计算。具体的说,量子程序就是一系列按照一定时序操作量子逻辑门的指令序列。
[0075] 在实际应用中,因受限于量子设备硬件的发展,通常需要进行量子计算模拟以验证量子算法、量子应用等等。量子计算模拟即借助普通计算机的资源搭建的虚拟架构(即量子虚拟机)实现特定问题对应的量子程序的模拟运行的过程。通常,需要构建特定问题对应的量子程序。本发明实施例所指量子程序,即是经典语言编写的表征量子比特及其演化的程序,其中与量子计算相关的量子比特、量子逻辑门等等均有相应的经典代码表示。
[0076] 量子线路作为量子程序的一种体现方式,也称量子逻辑电路,是最常用的通用量子计算模型,表示在抽象概念下对于量子比特进行操作的线路,其组成包括量子比特、线路(时间线)、以及各种量子逻辑门,最后常需要通过量子测量操作将结果读取出来。
[0077] 不同于传统电路是用金属线所连接以传递电压信号或电流信号,在量子线路中,线路可看成是由时间所连接,亦即量子比特的状态随着时间自然演化,在这过程中按照哈密顿运算符的指示,一直到遇上逻辑门而被操作。
[0078] 一个量子程序整体上对应有一条总的量子线路,本发明所述量子程序即指该条总的量子线路,其中,该总的量子线路中的量子比特总数与量子程序的量子比特总数相同。可以理解为:一个量子程序可以由量子线路、针对量子线路中量子比特的测量操作、保存测量结果的寄存器及控制流节点(跳转指令)组成,一条量子线路可以包含几十上百个甚至成千上万个量子逻辑门操作。量子程序的执行过程,就是对所有的量子逻辑门按照一定时序执行的过程。需要说明的是,时序即单个量子逻辑门被执行的时间顺序。
[0079] 需要说明的是,经典计算中,最基本的单元是比特,而最基本的控制模式是逻辑门,可以通过逻辑门的组合来达到控制电路的目的。类似地,处理量子比特的方式就是量子逻辑门。使用量子逻辑门,能够使量子态发生演化,量子逻辑门是构成量子线路的基础,量子逻辑门包括单比特量子逻辑门,如Hadamard门(H门,阿达马门)、泡利‑X门(X门,泡利X门)、泡利‑Y门(Y门,泡利Y门)、泡利‑Z门(Z门,泡利Z门)、RX门(RX旋转门)、RY门(RY旋转门)、RZ门(RZ旋转门)等等;多比特量子逻辑门,如CNOT门、CR门、iSWAP门、Toffoli门等等。量子逻辑门一般使用酉矩阵表示,而酉矩阵不仅是矩阵形式,也是一种操作和变换。一般量子逻辑门在量子态上的作用是通过酉矩阵左乘以量子态右矢对应的向量进行计算。例如,量子态右矢|0>对应的向量可以为 量子态右矢|1>对应的向量可以为
[0080] 图2是根据一示例性实施例示出的一种机器学习框架的框图,如图2所示,本实施例提供一种机器学习框架20,所述框架20包括:
[0081] 数据结构模块21,被配置为创建用于输入机器学习模型的张量数据,以及对所述张量数据执行运算;
[0082] 量子模块22,被配置为创建用于创建机器学习模型的量子计算层;
[0083] 经典模块23,被配置为创建用于创建机器学习模型的经典计算层、用于封装所述量子计算层和所述经典计算层的抽象类层、用于训练优化所述机器学习模型的机器学习模型训练层。
[0084] 具体来讲,数据结构模块21定义了张量数据的数据结构,通过调用数据结构模块21,可以将输入的数据转化为张量数据,以用于输入机器学习模型进行正向计算。数据结构模块21还定义了张量数据之间的运算例如数学运算和逻辑运算等,进而可以调用数据结构模块21基于张量数据之间的运算关系创建机器学习模型的经典计算层,例如经典神经网络的全连接层通过函数y=wx+b定义了输入数据x和输出数据y之间的关系,其中w和b为参数,通过将输入数据x、参数w、参数b转化为张量数据,并调用数据结构模块21对这些张量数据执行与该函数对应的运算,可以构建全连接层。
[0085] 可选地,参见图3,所述数据结构模块21包括:
[0086] 张量创建子模块211,被配置为将输入数据按照预设的数据结构排列以创建用于输入所述机器学习模型的张量数据,和/或创建以所述预设的数据结构排列且数值确定的用于输入所述机器学习模型的张量数据;
[0087] 运算操作子模块212,被配置为对所述张量数据执行运算。
[0088] 其中,预设的数据结构可以为0维的标量结构如单个数字0,或者为1维的向量结构如[1,2,3],或者2维的矩阵结构如[[1,2,3],[4,5,6]],更高维度的数据结构可以依次类推,张量创建子模块211在获取输入数据后可以将输入数据按照对应的数据结构排列,例如获取的输入数据为1,2,3,并通过输入参数指定张量数据的数据结构为1维的向量结构,则将输入的数据转化为[1,2,3],当然也可以直接输入具有特定数据结构的数据用于转化为张量数据,如输入数据为具有向量结构的[1,2,3],可以将其转化为以1,2,3为对角线数据的2维张量数据。
[0089] 需要说明的是,张量数据除包括按照预设的数据结构排列的数据值外,还可以包括计算得到该数据值的张量数据的信息以及该张量数据相对于包含所述数据值的张量数据的梯度函数,其中计算得到该数据值的张量数据的信息可以包括该张量数据的变量、数据值存储地址以及数据值等,只要其表明该张量数据对应节点是计算得到该数据值的张量数据对应节点的前驱节点即可。以上述函数关系y=wx+b为例,对于张量数据y,其包括y对应的数据值如[1,2,3],还包括计算得到y的w、x、b的张量数据的信息以及y分别相对于w、x、b的梯度函数,在一种可能的实施方式中,该信息可以包括w、x和b的数据值存储地址,张量数据y包括y相对于w的梯度函数x,y相对于x的梯度函数w,以及y相对于b的梯度函数1,进而在训练机器学习模型时,通过反向传播计算y分别相对于w、x、b的梯度值,具体可以直接从张量数据y中获取y的数据值,以及w、x、b的数据值和对应的梯度函数,通过这些数据值和对应的梯度函数计算y分别相对于w、x、b的梯度值。
[0090] 通过调用相应的接口,张量创建子模块211还可以创建数值确定的张量数据,例如创建数值全为1或0或为随机数的张量数据,该张量数据的数据结构可以与输入的张量数据的数据结构相同,也可以使用默认的数据结构。
[0091] 可选地,参见图4,所述运算操作子模块212包括以下至少一者:
[0092] 数学运算单元2121,被配置为对所述张量数据执行数学运算;
[0093] 逻辑运算单元2122,被配置为对所述张量数据执行逻辑运算;
[0094] 数据变换单元2123,被配置为对所述张量数据执行变换运算,以变换所述张量数据的数据结构。
[0095] 具体来讲,数学运算单元2121可以对张量数据执行如加、减、乘、除等数学运算,逻辑运算单元2122可以对张量数据执行与、或、非等逻辑运算,数据变换单元2123可以对张量数据执行转置、逆序等变换运算,以改变张量数据的数据结构。通过调用数学运算单元2121可以实现经典计算层如上述经典神经网络的全连接层的创建。运算操作子模块212可以包括上述三个单元中的任意一者,也可以如图4所示包括全部三个单元。
[0096] 具体来讲,对于量子模块22,可以通过调用该量子模块22创建量子计算层,量子计算层为包含量子线路的程序模块,可以用于实现对应量子线路的量子计算,通过对量子线路按照一定的标准进行封装,使得量子计算层便于在创建和训练机器学习模型时进行使用。对于机器学习模型通过量子计算实现的部分,均可以理解为对应的量子计算层。
[0097] 可选地,参见图5,所述量子模块22包括:
[0098] 量子逻辑门子模块222,被配置为通过已封装的量子逻辑门接口创建作用于量子比特的量子逻辑门;
[0099] 量子测量子模块223,被配置为通过已封装的量子测量接口创建作用于量子比特的量子测量操作;
[0100] 量子计算层子模块221,被配置为通过已封装的量子计算层接口创建机器学习模型的量子计算层,或通过所述量子逻辑门子模块222和所述量子测量子模块223创建机器学习模型的量子计算层。
[0101] 具体地,量子逻辑门子模块222用于创建量子逻辑门,量子逻辑门用于作用于量子比特使得量子比特执行特定的演化以实现特定的计算,量子比特的量子态可以用一个包含两个元素的向量表示,如 量子逻辑门作用于量子比特,相当于对应于量子逻辑门的一酉矩阵与该量子比特当前的量子态相乘,例如泡利X门对应的酉矩阵为 其作用于该量子比特相当于进行运算 量子逻辑门子模块222可以通过量子逻辑门接口调用对应于该接口的用于创建量子逻辑门的程序,进而运行该程序以创建量子逻辑门。
当然,该机器学习框架20也可以包含一个用于创建量子逻辑门的模块的框架,该模块包括一目标接口以及用于响应于该目标接口的调用以创建量子逻辑门的目标程序,调用量子计算层接口时可以先调用其内含的框架内的该目标接口,再通过该目标接口调用该目标程序以创建量子逻辑门。当包含该量子逻辑门子模块222创建的量子逻辑门的量子程序运行于经典计算机时,其创建量子逻辑门可以表现为创建一个对应的酉矩阵用于与量子比特的量子态对应的向量相乘,当包含该量子逻辑门子模块222创建的量子逻辑门的量子程序运行于量子计算机的量子设备部分时,其创建量子逻辑门可以表现为创建一个用于作用于量子比特的信号,以使得量子比特执行对应于该量子逻辑门的演化,量子逻辑门子模块222可以被配置为仅运行于经典计算机或量子计算机的量子设备,或同时具有运行于经典计算机或量子设备的能力,本发明对此不做具体限制。
[0102] 可选地,如图6所示,所述量子逻辑门子模块222包括:
[0103] 量子态编码逻辑门单元2221,被配置为创建将基于输入数据创建的张量数据编码至所述量子计算层中指定量子比特的量子态的逻辑门;
[0104] 量子态演化逻辑门单元2222,被配置为创建对所述量子计算层中指定量子比特执行对应于目标运算的演化的逻辑门。
[0105] 具体来讲,量子态编码逻辑门单元2221创建的逻辑门用于将张量数据编码至量子态,其表征经典数据向量子态的映射,量子态演化逻辑门单元2222创建的逻辑门用于使指定量子比特执行对应于目标运算的演化,其表征一个量子态向另一个量子态的映射。
[0106] 可选地,参见图7,所述量子态编码逻辑门单元2221可以包括以下至少一者:
[0107] 基态编码子单元22211,被配置为创建将基于输入数据创建的张量数据编码至所述量子计算层中指定量子比特的第一量子态的逻辑门,所述第一量子态的基态用于表示所述张量数据;
[0108] 幅度编码子单元22213,被配置为创建将基于输入数据创建的张量数据编码至所述量子计算层中指定量子比特的第二量子态的逻辑门,所述第二量子态的基态的振幅用于表示所述张量数据;
[0109] 角度编码子单元22212,被配置为创建将基于输入数据创建的张量数据作为参数的含参量子逻辑门,所述含参量子逻辑门用于作用于所述量子计算层中的指定量子比特,以得到用于表示所述张量数据的第三量子态;
[0110] 瞬时量子多项式IQP编码子单元22214,被配置为创建将基于输入数据创建的张量数据作为参数的IQP线路的逻辑门,所述IQP线路包括所述量子计算层中的指定量子比特,所述IQP线路的逻辑门用于作用于该指定量子比特以得到用于表示所述张量数据的第四量子态。
[0111] 在一种可能的实施方式中,量子态编码逻辑门单元2221可以包括上述部分子单元,也可以如图7所示包括前述所有的子单元。
[0112] 具体来讲,基态相对于任意量子态,相当于基向量相对于任意向量,例如对于量子态 其中|0>和|1>为基态,对于量子态|ψ>=c|00>+d|01>+e|10>+f|11>,其中|00>、|01>、|10>、|11>为基态。基态编码子单元22211创建的逻辑门用于使得指定量子比特演化至第一量子态,无论指定量子比特演化前为何种量子态,当然也可以固定指定量子比特演化前均为|0>。第一量子态的基态可以用于表示张量数据的二进制码,例如对于张量数据5,其二进制码为101,进而创建逻辑门作用于指定量子比特使其演化至第一量子态|101>,指定量子比特可以是通过向基态编码子单元22211传入参数指定的量子比特,例如有4个量子比特分别为0号,1号,2号,3号,传入参数q[1],指定1号量子比特为用于编码的指定量子比特。
[0113] 具体来讲,幅度编码子单元22213创建的逻辑门用于作用于指定量子比特使其演化至第二量子态,无论指定量子比特演化前为何种量子态,当然也可以固定指定量子比特演化前均为|0>。通过配置第二量子态的基态的振幅大小,来表示对应张量数据。举例来讲,对于张量数据[1,3],对其归一化后1对应于0.25,3对应于0.75,进而创建逻辑门作用于指定量子比特使其演化至第二量子态
[0114] 具体来讲,角度编码子单元22212本身包括含参量子逻辑门,将张量数据直接作为含参量子逻辑门的参数或者对张量数据进行函数变换后作为含参量子逻辑门的参数,该参数可以表示量子态在布洛赫球中的旋转角度,例如该含参量子逻辑门可以为RX旋转门、RY旋转门和RZ旋转门中的任意一者,进而将参数为该张量数据的含参量子逻辑门作用于指定量子比特,使得指定量子比特演化至第三量子态,无论指定量子比特演化前为何种量子态。举例来讲,含参量子逻辑门可以为RZ旋转门,其对应的酉矩阵为:
[0115]
[0116] 其中,i为虚数,进而对于张量数据x,可以对其进行反三角函数变换,如利用arctan函数得到arctan(x),再将arctan(x)带入上述酉矩阵中的θ得到酉矩阵如下:
[0117]
[0118] 将该酉矩阵作用于指定量子比特即可得到第三量子态。当然,在一种可能的实施方式中,也可以将x直接带入上述θ得到对应的酉矩阵。
[0119] 具体来讲,瞬时量子多项式IQP编码子单元22214采用IQP编码(instantaneous quantum polynomial style encoding),通过创建IQP线路的逻辑门作用于指定量子比特得到IQP线路,并将张量数据作为该IQP线路的参数,运行该IQP线路可以将张量数据x编码至第四量子态 其中,x为张量数据,H为上述H门,n为指定量子比n
特的数量,|0 >表示n个指定量子比特的初始量子态均为|0>,r表示 的重复次数,UZ(x)如下:
[0120]
[0121] 其中, 表示RZZ门,RZ表示RZ门,S表示被该UZ(x)逻辑门作用的量子比特的集合。参见图8,以包含4个指定量子比特的IQP线路为例,首先对每个指定量子比特依次作用H门和RZ门,然后对每两个相邻的指定量子比特作用RZZ门30,每个RZZ门30包括依次作用于指定量子比特的一CNOT门,RZ门以及另一CNOT门。需要说明的是,图8中其它CNOT门及两个CNOT门之间的RZ门也构成RZZ门,为简化图示,未对其进行标注。张量数据可以作为图8中紧邻H门的RZ门的参数,其它RZ门的参数则可以是具体情况设定。
[0122] 由于经典数据需要转换为量子态才能被量子程序处理,因此对经典数据编码是一个常见的操作,通过量子态编码逻辑门单元2221可以快速方便的对经典数据进行编码转化为对应的量子态,提高了机器学习模型的开发效率。
[0123] 可选地,参见图9,所述量子态演化逻辑门单元2222包括以下至少一者:
[0124] 基本量子逻辑门子单元22221,被配置为创建作用于所述量子计算层中指定量子比特的单比特量子逻辑门或多比特量子逻辑门;
[0125] 常用量子逻辑门子单元22222,被配置为通过封装的常用逻辑门接口创建常用逻辑门,所述常用逻辑门包括若干所述基本量子逻辑门单元对应的量子逻辑门的组合。
[0126] 具体来讲,量子计算层将张量数据转化编码至对应量子态后,需要操作指定量子比特使得其量子态演化,以执行相应的运算,而这些运算通过量子逻辑门完成,包括作用于单个比特的单比特量子逻辑门和作用于多个比特的多比特量子逻辑门,单比特量子逻辑门包括H门,泡利X门,泡利Y门,泡利Z门,RX旋转门、RY旋转门、RZ旋转门中的至少一者,多比特量子逻辑门可以包括作用于两个量子比特的CNOT门、CR门、iSWAP门以及作用于三个量子比特的Toffoli门中的至少一者,当然,在其他可能的实施方式中,还可以包括其它的单比特量子逻辑门或多比特量子逻辑门,对此本申请不作具体限制。
[0127] 常用量子逻辑门子单元22222通过对至少两个单比特量子逻辑门或至少两个多比特量子逻辑门的组合进行封装,得到用于调用该组合的常用逻辑门接口,以方便快速调用常用的逻辑门组合,例如可以定义常用逻辑门接口Rot()用于调用RX旋转门、RY旋转门和RZ旋转门的组合。需要说明的是,常用量子逻辑门子单元22222也可以对至少一个单比特量子逻辑门或至少一个多比特量子逻辑门进行封装,本发明对此不作具体限制。量子态演化逻辑门单元2222可以包括前述任一子单元或如图9所示同时包括前述两个子单元。
[0128] 为将经过量子计算后得到的结果量子态转换为经典数据,需要对结果量子态对应的量子比特进行测量。可选地,参见图10,所述量子测量子模块223包括以下至少一者:
[0129] 期望测量单元2231,被配置为基于目标可观测量对所述量子计算层中的指定量子比特进行测量得到对应的期望值;
[0130] 概率测量单元2232,被配置为对所述量子计算层中的指定量子比特进行测量得到该指定量子比特的量子态的不同基态的出现概率;
[0131] 次数测量单元2233,被配置为对所述量子计算层中的指定量子比特进行测量得到该指定量子比特的量子态的不同基态的出现次数。
[0132] 具体来讲,目标可观测量可以为泡利门或泡利门的组合,当然也可以为其它的哈密顿量,期望测量单元2231通过相应的量子测量接口创建用于测量得到指定量子比特的期望值的测量操作,例如对于目标可观测量为哈密顿量H时,其观测得到的期望值为,|y>为指定量子比特的结果量子态。
[0133] 对于概率测量单元2232和次数测量单元2233,其调用的量子测量接口创建的测量操作作用于指定量子比特后分别得到结果量子态的不同基态的出现概率和出现次数,举例来讲,对于量子态 基态|0>和|1>的测量出现的理论概率分别为0.25和0.75,通过概率测量单元2232进行测量时,其实际测量结果可能为,|0>和|1>的出现概率分别为0.24和0.76,通过次数测量单元2233进行测量时,其实际测量结果可能为,|0>和|1>在总共1000次测量中分别出现240次和760次。量子测量子模块223可以包括前述任一单元,或如图10所示包括全部三个单元。
[0134] 一般地,一个量子线路也即量子程序通常包括用于将经典数据转化为量子态的编码部分,用于对量子比特执行特定演化以实现量子计算的运算部分,以及用于将量子态转化为经典数据的测量部分,其分别可以通过上述量子态编码逻辑门单元2221、量子态演化逻辑门单元2222和量子测量子模块223实现,在创建好量子程序后,可以通过调用量子计算层子模块221中已封装的不同的接口对量子线路进行封装以得到量子计算层,其接口可以是一个具有指定输入参数的函数,例如接口QuantumLayer(pqctest,3,"cpu",4,1)可用于创建一个包含pqctest对应的量子线路、3个参数、4个量子比特以及1个经典比特且运行于CPU(central processing unit,中央处理器)的量子计算层,该量子计算层运行于CPU以通过经典计算的方式模拟量子计算。该量子计算层可以是包含自建量子线路或指定模型量子线路的量子计算层,如pqctest对应的量子线路可以是指定模型的量子线路如量子卷积层,也可以是基于量子逻辑门子模块222和量子测量子模块223自建的量子线路。
[0135] 可选地,所述量子计算层包括以下至少一者:通用量子计算层、兼容量子计算层、含噪量子计算层、量子卷积层、量子全连接层。
[0136] 可选地,参见图11,所述量子计算层子模块221包括以下至少一者:
[0137] 通用量子程序封装单元2211,被配置为通过已封装的通用量子计算层接口创建所述通用量子计算层,所述通用量子计算层接口用于提供基于所述机器学习框架20内含的量子计算编程库创建的量子程序;
[0138] 兼容量子程序封装单元2212,被配置为通过已封装的兼容量子计算层接口创建所述兼容量子计算层,所述兼容量子计算层接口用于提供基于非所述机器学习框架20内含的量子计算编程库创建的量子程序;
[0139] 含噪量子程序封装单元2213,被配置为通过已封装的含噪量子计算层接口创建所述含噪量子计算层,所述含噪量子计算层接口用于提供基于所述机器学习框架20内含的量子计算编程库创建的考虑噪声影响的量子程序;
[0140] 量子卷积层创建单元2214,被配置为通过已封装的量子卷积层接口创建所述量子卷积层;
[0141] 量子全连接层创建单元2215,被配置为通过已封装的量子全连接层接口创建所述量子全连接层。
[0142] 其中,通用量子程序封装单元2211调用通用量子计算层接口创建通用量子计算层,基于自身的机器学习框架20内含的量子计算编程库创建好量子程序后,调用该接口对该量子程序进行封装,得到通用量子计算层,使得对运行于自身机器学习框架20的机器学习模型进行创建和训练时,便于调用该量子程序计算机器学习模型中量子线路的参数的梯度。例如可以定义接口QuantumLayer()对自建的量子程序进行封装,自建的量子程序可以作为参数传入该接口对应的程序中,该接口封装的量子程序每次运行前均需要构建一次量子线路。还可以定义接口VQCLayer()对该量子程序进行封装,该量子程序可以作为参数传入该接口对应的程序中,该接口封装的量子程序运行时仅均需要构建一次量子线路,多次运行时仅需改变其量子程序中的参数值。需要说明的是,对于接口需要传入的参数,可以根据情况自己定义,例如可以定义与上述QuantumLayer()相同的接口QuantumLayerV2(),QuantumLayer()需要将封装的量子程序运行所需要的量子比特的数量作为参数传入,而QuantumLayerV2()则无需将封装的量子程序运行所需要的量子比特的数量作为参数传入,自动读取量子程序获取所需的量子比特的数量即可。
[0143] 兼容量子程序封装单元2212调用兼容量子计算层接口创建兼容量子计算层,基于第三方的量子计算编程库创建好量子程序后,调用该接口对该量子程序进行封装,得到兼容量子计算层,使得对运行于自身的机器学习框架20的机器学习模型进行创建和训练时,便于调用该量子程序。例如可以定义接口Compatiblelayer()用于对基于第三方量子计算编程库创建的量子程序进行封装。需要说明的是,所述机器学习框架20内含的量子计算编程库,指机器学习框架20运行所依赖的量子计算编程库如Qpanda,非所述机器学习框架20内含的量子计算编程库,指与机器学习框架20运行依赖的量子计算编程库不同的量子计算编程库,例如不同于Qpanda的Qiskit。
[0144] 考虑噪声影响的量子程序就是由含噪量子程序封装单元2213加入噪声的量子程序,含噪量子计算层接口用于提供基于所述机器学习框架20内含的量子计算编程库创建的用于模拟量子计算机运行环境的多种噪声(例如退相干噪声,比特翻转噪声等)和量子程序。含噪量子程序封装单元2213调用含噪量子计算层接口创建含噪量子计算层,通过含噪量子计算层接口提供基于自身的机器学习框架20内含的量子程序创建量子程序和噪声,将该噪声加入该量子程序,并对加入噪声的量子程序进行封装,得到含噪量子计算层,进而使得对运行于自身的机器学习框架20的机器学习模型进行创建和训练时,便于调用该量子程序。并且在该量子程序以经典计算的方式运行于虚拟机时,模拟其在真实的量子计算机上运行结果。例如可以定义接口NoiseQuantumLayer()用于对传入的量子程序加入噪声并进行封装,该量子程序和噪声的类型可以作为参数传入该接口对应的程序中。需要说明的是,噪声的类型以及如何向量子程序中加入噪声均可以采用现有技术实现。
[0145] 量子卷积层创建单元2214,通过量子卷积层接口如定义的QConv()创建量子卷积层,量子全连接层创建单元2215,通过量子全连接层接口例如Qlinear()创建所述量子全连接层,量子卷积层和量子全连接层可以封装有易于调用的接口,使得对运行于自身机器学习框架20的机器学习模型进行创建和训练时,便于调用该量子卷积层或量子全连接层,无需手动搭建量子全连接层或量子卷积层,提高了开发效率。需要说明的是,量子卷积层和量子全连接层分别为对应于经典神经网络的卷积层和全连接层基于量子计算的实现方法,其可以采用现有技术,本发明对其具体实现方式不做赘述。需要说明的是,量子计算层子模块221可以包括前述任意一个或部分单元,或如图11所示包括所有的单元。
[0146] 对于与机器学习模型相关的经典计算部分,可以通过经典模块23来实现。可选地,参见图12,所述经典模块23包括:
[0147] 经典计算层子模块231,被配置为创建用于创建机器学习模型的经典计算层;
[0148] 抽象类子模块232,被配置为创建用于封装所述量子计算层和所述经典计算层的抽象类层;
[0149] 机器学习模型训练层子模块233,被配置为创建用于训练优化所述机器学习模型的机器学习模型训练层。
[0150] 具体来讲,经典计算层为机器学习模型中的经典计算部分,其可以通过经典计算层子模块231进行创建,其可以是对创建好的经典计算程序按照一定标准进行封装,使得经典计算层便于在创建和训练机器学习模型时进行使用。在创建好量子计算层和经典计算层后,可以通过抽象类子模块232对其进行封装,以创建符合一定标准的抽象类层,抽象类层通过编程语言中的类(class)的方法实现,通过对量子计算层和经典计算层封装可以创建符合一定标准的机器学习模型,例如创建的抽象类层定义了正向运算机器学习模型的方式,便于在训练机器学习模型时对机器学习模型进行正向运算以得到用于计算损失函数的计算结果,同时也可以得到反向计算时进行梯度计算的顺序关系。机器学习模型训练层子模块233用于创建机器学习模型训练层对机器学习模型进行训练。
[0151] 可选地,参见图13和图14,所述经典计算层包括经典神经网络层,所述经典计算层子模块231包括经典神经网络层单元2311,所述经典神经网络层单元2311包括以下至少一者:
[0152] 指定模型经典神经网络层子单元23111,被配置为通过已封装的经典神经网络层接口创建指定模型的所述经典神经网络层;
[0153] 激活层子单元23112,被配置为创建用于对所述经典神经网络层的输出进行非线性变换的激活层。
[0154] 机器学习模型为经典神经网络模型时,经典计算层可以为包括经典神经网络计算程序的经典神经网络层,进而经典计算层子模块231可以包括用于创建经典神经网络层的经典神经网络层单元2311,该单元可以封装有自建模型或指定模型的经典神经网络计算层程序。经典神经网络层单元2311包括指定模型经典神经网络层子单元23111时,其可以创建指定模型的经典神经网络层例如经典的卷积层、池化层、归一化层,随机丢弃层,全连接层,嵌入层等,经典神经网络层单元2311包括激活层子单元23112时,其可以通过创建激活层对经典神经网络层包含的计算节点的输出进行非线性变换,激活层包括多个作用于所述计算节点的输出的激活函数,激活函数可以包括tanh激活函数、sigmoid激活函数、softmax激活函数中的至少一者,当然也可以包括其它的激活函数,本发明对此不作具体限制。经典神经网络层单元2311可以包括前述子单元的任意一者,也可以同时包括前述两个子单元。
[0155] 可选地,参见图15,所述机器学习模型训练层子模块233包括:
[0156] 损失函数单元2331,被配置为计算所述机器学习模型的损失函数;
[0157] 优化器单元2332,被配置为在训练所述机器学习模型时基于所述损失函数更新所述机器学习模型的参数,以对所述机器学习模型进行优化。
[0158] 具体来讲,损失函数单元2331用于计算机器学习模型的损失函数,例如可以计算机器学习模型的正向运算结果与标签数据的平方差作为损失函数,也可以计算该正向运算结果与标签数据的二元交叉熵(Binary Cross Entropy)作为损失函数。优化器单元2332则用于根据损失函数相对于机器学习模型的参数的梯度,利用梯度下降算法更新机器学习模型的参数对其进行优化。例如优化器采用的梯度下降算法可以为随机梯度下降算法(Stochastic Gradient Descent,SGD),自适应梯度算法(Adaptive gradient algorithm,Adagrad)、自适应矩估计(Adaptive Moment Estimation,Adam)中的任意一种,当然还可以采用其它的算法更新机器学习模型的参数,本发明对于损失函数单元2331可以计算哪些种类的损失函数以及优化器单元2332采用何种方法更新参数不作具体限制。
[0159] 基于上述技术方案,在创建机器学习模型时,可以调用量子模块和经典模块来对应创建机器学习模型的量子计算层和经典计算层,并通过经典模块创建抽象类层对量子计算层和经典计算层进行封装,形成便于训练的包含该量子计算层和该经典计算层的机器学习模型。通过数据结构模块向机器学习模型输入转化为张量数据的输入数据,以对输入数据进行处理。在需要对机器学习模型训练时,可以调用经典模块创建机器学习模型训练层对形成的机器学习模型进行训练,进而在创建和训练机器学习模型时,可以直接调用相应的模块,减少了创建和训练机器学习模型所需要的工作量,提高了其开发效率。当然,前述创建机器学习模型时,也可以仅调用量子模块创建仅包括量子计算层的纯量子机器学习模型,或仅调用经典模块创建仅包括经典计算层的纯经典机器学习模型,进而基于该机器学习框架可以在不同硬件上(量子计算机或经典计算机上)进行纯量子机器学习模型或纯经典机器学习模型、或两者混合的机器学习模型的创建和训练。
[0160] 需要说明的是,上述各个模块、子模块、单元、子单元可以通过编程语言中的函数来实现相应的功能,其均可以视为一个或多个函数的集合。每个函数均可以包括接口以及用于响应于该接口的调用实现相应功能的程序。对于每个模块、子模块、单元、子单元具体包括何种函数,本申请不作具体限制。图16是根据一示例性实施例示出的一种机器学习框架的另一框图,其集成了上述各个模块、子模块、单元、子单元,在对上述技术方案进行说明时,也可结合图16示出的机器学习框架进行解释说明。
[0161] 以上依据图式所示的实施例详细说明了本发明的构造、特征及作用效果,以上所述仅为本发明的较佳实施例,但本发明不以图面所示限定实施范围,凡是依照本发明的构想所作的改变,或修改为等同变化的等效实施例,仍未超出说明书与图示所涵盖的精神时,均应在本发明的保护范围内。

当前第1页 第1页 第2页 第3页
相关技术
机器学习相关技术
方圆发明人的其他相关专利技术