量子机器学习借助量子计算的高并行性,实现进一步优化传统机器学习的目的。
介绍
机器学习, 尤其是基于人工神经网络的深度学习近年来得到了迅猛发展. 而在量子信息科学领域,它与量子计算技术的结合也正在成为一个飞速发展的研究方向. 事实上, 机器学习的思想很早就应用于量子力学系统的优化控制中, 并在量子化学和物理实验的广泛应用中获得巨大成功. 近年来, 随着深度学习的流行, 各种机器学习算法被用来探索量子多体物理中许多难于解析分析的问题, 并得到了许多有趣的结果.
机器学习与量子物理结合的另一个自然思路是利用量子状态的叠加和量子算法的加速, 来解决当前数据科学中数据量巨大, 训练过程缓慢的困难. 这方面的研究在量子计算的发展初期实际已经有人开始研究, 但是限于实验条件和当时学术界对量子计算发展前景的困惑, 并没有得到长足的发展. 近年来, 随着
量子计算机在计算规模和稳定性的突破, 基于量子算法的机器学习重新得到关注, 并成为一个迅速发展的研究方向.事实上, 从经典–量子的二元概念出发可以将机器学习问题按照数据和算法类型的不同分为4类(如图1), 将对C–Q(利用经典算法解决量子物理问题)进行简单介绍, 然后重点对Q–C(利用量子算法加速机器学习)进行综合讨论, 因为本文认为后者更体现量子机器学习的本质所在, 对未来机器学习的发展推动作用更为巨大. Q–Q是一个开放的领域, 也在此不做评论.
量子系统控制中的一个基本问题是对控制对象的建模, 即对系统的哈密顿量以及确定扰动, 噪声等参数特征进行辨识, 这些问题都属于C–Q的范畴. 例如,研究人员提出使用贝叶斯推断中的似然函数对量子系统的哈密顿量进行学习, 并进行了实验验证, 结果表明学习算法具有一定的鲁棒性, 即使假设模型结构中有缺项, 学习结果仍是实际模型的最佳近似.
基于一定量的量子测量数据出发判断和确定其未知量子态的性质, 例如如何判别一个量子态是分离还是纠缠的, 也可以看作一类机器学习问题. 研究人员提出用监督式学习的方法对量子态做分类, 容易理解,直接使用量子模型, 量子数据的全量子方式, 其分类正确率比使用经典模型和经过量子随机存储器(quantum random access memory, QRAM)调用转换的量子数据的半经典方式更高. 其后, 他们提出不需要使用QRAM的量子态分类方法, 且算法所需的经典存储器规模仅随训练比特数以对数速度增长.此外, 他们还专门研究了光子相干态的分类问题, 发现对训练样本和反射信号进行联合全局测量, 比先对训练集进行基于高斯测量的幅值估计, 再对反射信号进行状态判别的识别率要高. 对于量子系统演化所对应的酉变换, 如何从有限样本集中进行辨识学习, 也是一个重要的问题. 该问题可以归结为一个双重优化问题, 同时需要最优输入态和最优测量. 近年来, 也有学者开始着手于研究用机器学习方法获取量子系统的属性和统计参数, 如相变点, 期望值等. 该思想也可用于量子多体系统的模拟问题. 在此不做重点描述.
利用量子理论改进机器学习(Q–C)的方法大致可以分为两种: 1) 通过量子算法使某些在经典计算机上不可计算的问题变为可计算的, 从而大幅降低机器学习算法的计算复杂度, 如量子退火(quantum annealing, QA)算法、Gibbs采样等; 2) 量子理论的并行性等加速特点直接与某些机器学习算法深度结合, 催生出一批全新的量子机器学习模型, 如张量网络、概率图模(probabilistic graphical model, PGM)等.
数数据的量子化表达和读写
量子机器学习的训练数据必须以某种可以为
量子计算机识别的格式载入, 经过量子
机器学习算法处理以后形成输出, 而此时的输出结果是量子格式的, 需要经过测量读出得到笔者所需的最终结果(如图2所示). 因此, 量子机器学习的复杂度与这3个过程都有关系. 大致说来, 基于量子相位估计的学习算法可以实现算法的指数加速, 但是对数据的载入和完整结果的读出要求很高, 而基于量子搜索的算法相对较复杂,但是数据的读入读出则相对比较容易. 常用的两种方式以及为之需要匹配的读入读出方式.
数字型
众所周知, 数字计算机中所有数据都是有限字长的. 假设某训练数据向量为⃗x = [x1· · · xn], 若每个元素都用长度为m的二进制数据表示, 则整个向量需要 n · m 个比特, 在量子计算机中它们对应于 N =n · m个量子位. 每个数据向量都对应于输入态希尔伯特空间的一个基矢|⃗x⟩.
这其实是一个量子化的过程. 类似的, 输出数据⃗y= [y1· · · yq]也可以用适当长度的二进制数表示相应, 并通过量子化对应于输出态希尔伯特空间的一个基矢. 对比下面将要提到的模拟型数据, 这种表示通过冯诺伊曼投影测量即可进行读出, 其代价是最低的.进一步, 如果训练数据集中有M个数据, 自然的方式是用N · M个量子位存储这些数据, 但这样耗费的资源无疑十分巨大, 特别在海量数据集的情形下. 为此可以充分利用量子系统的叠加特性, 将这些数据以“叠加”的方式存储在N个比特上, 用状态 表示. 这样可以存储最2N个数据向量, 并且数据处理可以并行进行, 其中单个或多个数据的提取根据数据特征(模式)采用Grover算法搜索得到, 因此称作量子关联存储器(quantum associative memory, QAM). 另一种方式是用log(M)个比特标记数据下标(地址), 从而数据可以并行存储在log(M) + n · m个比特中, 其中第j个数据表示为 可以通过设计存储器根据寻址请求调用相应的数据, 以叠加方式 并行载入数据, 这是与经典数据载入非常不同的地方.这里的概率幅系数 对应于经典数据处理中的随机采样概率分布, 但是以相干叠加的方式进行, 使得后续的数据处理可以并行进行, 设计巧妙的算法利用相干性带来的相长相消得到期望的结果, 以实现量子加速(quantum speed-up).
模拟型
训练数据还可以用半模拟的方式编码在量子态上.假设⃗x = [x1· · · xn]已经归一化,则可以用log(n)个比特, 其中数据分量对应于用叠加态 中各基矢的概率幅系数. 与数字型数据相比, 这种编码方式可以极大节省所需的量子位资源, 并避免数字化带来的圆整误差. 但它的最大问题是制备和读出的困难, 精确制备这样的量子态在实验上是非常困难的事, 而读出所需的精确层析技术也需要通过大量的重复实验才能准确重构这样的量子态. 由于所需重复样本随测控精度提高而上升, 因此也需要很大的时间复杂度代价.与数字型数据类似, 如果训练数据集中有M个数据, 可以用log(M)个比特表示下标, 从而用log(n·M)个比特表示整个数据集, 而且数据可以以 .
量子数据集的转换
从经典数据到量子数据的转换, 需要通过存储器来实现. 对于数字型数据, 其实对应于一个量子化的数字逻辑电路, 或者一个量子子程序, 通过执行该子程序将寄存器的状态制备到训练数据对应的状态. 这个子程序是模块化的, 由于在机器学习中会经常随机抽取或者检索该数据集中的数据, 因此它常常作为一个oracle供Grover算法调用, 而调用的次数则成为衡量机器学习算法复杂度的重要指标之一. 这类存储器具有专用名称-量子关联存储器(quantum associativememory, QAM).
显而易见, 模拟型量子数据是最节省资源的存储方式, 但是从物理实现的角度上, 需要对量子寄存器进行精确地状态制备和存储, 利用所谓的QRAM调用.
在训练过程中, 还应该能够高效地根据访问地址调用所需数据, 这些对量子系统的控制, 以及量子计算机体系结构和算法设计提出了重要挑战. 此外, 数据的读出是另外一个困难问题, 因为在这种情况下,通常需要对寄存器状态的最终值进行测量读出, 而这需要大量耗时的状态层析, 如果不精心设计的话, 所需代价甚至可能超过存储节省的资源.