新智元报道
作者:姜炜文
编辑:好困
神经网络是当下计算应用中发展最快,使用最广的机器学习算法。然而,随着应用不断复杂化导致网络结构不断扩大,存储性能瓶颈已逐渐凸显。
在传统计算平台上,N个数字比特只能表示1个N位数据,然而在量子计算中,M个量子比特却同时能表示2^M个数据,并能同时操作这些数据。
量子计算机如此强大的存储与计算能力,使其拥有巨大潜能打破神经网络在传统计算平台上的性能瓶颈,获取量子优势。
量子神经网络是根据量子计算机的特性设计的神经网络。具体而言,研究者们根据量子计算机所提供的基本计算单元(即量子逻辑门)进行量子线路设计,以实现神经网络的计算。
该框架第一次展示了通过协同优化神经网络结构与量子线路设计,可以较传统计算机获得指数级加速。
图1 基于QuatnumFlow量子神经网络设计栈
并在即将召开ICCAD’21,添加了两个新成员:
(1)第一个对噪声感知的量子神经网络训练器QF-RobustNN;
(2)基于不同量子神经元设计的量子神经网络结构设计器QF-Mixer。
至此,第一个开源量子神经网络设计栈横空出世,为量子神经网络应用提供了坚实基础。
QFNN
在刚刚结束的QuantumWeek会议上,JQub团队开源了由胡芷瑞研究员主要参与设计的量子神经网络(Quantum Neural Network)编程框架,QFNN。
https://github.com/JQub/qfnn
QFNN以Pytorch和IBM Qiskit为基础,为实现了神经网络在量子电路进行训练和推理提供了基础函数。研究人员可以通过简单调用少数函数,便可以轻松构建可以在IBM量子计算机上进行部署的针对神经网络推理的量子电路。
QFNN不仅支持QuantumFlow的所有功能,同时也支持其它量子神经网络设计,包括Variational Quantum Circuits(VQC)。
除此之外,QFNN还提供了量子神经网络电路相对应的经典计算模拟,可以用于验证量子神经网络的正确性以及辅助量子计算机进行模型训练。
图2 QuantumFlow协同设计框架
在对QuantumFlow的支持上,QFNN采用与QuantumFlow中的结构相同。如图2所示,该框架分为四个模块,包括qf_circ,qf_net,qf_fb和qf_map。
目前QFNN支持QuantumFlow中的所有模块,并在QF-Net中,加入了对VQC等量子电路的支持。
利用QFNN,研究者可以快速搭建量子机器学习电路,在经典计算机上对网络进行训练,在量子平台上进行推理。
同时,QFNN还支持量子网络结构的探索,即QF-Mixer。QFNN在github上进行开源,并欢迎有兴趣者共同开发,加入更多的基础量子神经元实现与量子神经网络实现。
QF-RubostNN
在即将于11月1日召开的ICCAD会议上,JQub团队提出了首个通过训练,在量子网络中学习量子位误差的研究工作,即QF-RubostNN。
https://arxiv.org/pdf/2109.03430.pdf
该研究由梁之鼎博士生主要参与,提出了一个通用的训练框架来进行错误感知学习,这个框架将解决部署神经网络到近期嘈杂的中级量子(NISQ)时期的核心问题:如何抵抗噪声对神经网络推理的影响。
虽然量子计算发展非常迅速,但是目前量子比特在量子机器上的错误率会达到10^-2,和经典比特在经典的CMOS机器上大约10^-15的错误率对比无疑是个巨大的差距。
对此,JQub团队设计了QF-RubostNN做出了第一个将噪声学习到量子神经网络的尝试,展示出了量子神经网络的容错性:在量子模拟器和IBM量子机器上分别运行了QF-RubostNN,并极大地提升了量子神经网络的推理精确度。
图3 QF-RubostNN产生的总体框架简图
QF-RobustNN最上层的训练权重由量子神经网络,如QuantumFlow产生。在每次循环中的训练权重会产生对应的量子线路,此时是在逻辑量子位上的逻辑量子线路,经过设计出的特定应用的量子映射,逻辑量子位被映射到物理量子位,由此便有了对应的物理量子线路。
再将物理量子线路运行在量子机器或者量子模拟器中,得到模型准确率的输出,通过训练框架找到在这时候的噪声下表现最好的训练权重,最后将搜索到的训练权重更新到最上层的训练权重。
这种方法固定初始到结束的逻辑-物理量子映射的规律,使错误可以被预估,并且也可以有效减少附加门的数量,从而降低消耗。
图4 QF-RobustNN在不同噪声模型下,对准确率的测量结果
QF-RobustNN采用在0噪声环境(perfect model)下表现最好的训练权重当作实验的Baseline,通过改变模型的Error rate(噪声情况)观察QF-RobustNN的实现。
在实验结果中可以看到,经过QF-RobustNN的准确率相较baseline的情况有所提高,而且值得注意的是,随着错误率增加,QF-RobustNN对准确率的推动作用更加明显,最高达到了28%的效果。
该实验展示了量子神经网络学习量子位错误的可能性,在NISQ时代的量子机器,噪声是极大的问题与挑战。实验结果展示了QF-RobustNN的有效性。
QF-Mixer
QF-Mixer 是由汪哲鹏博士生主要参与,是第一个探索量子神经网络设计的文章。
这些工作通过堆叠各自提出的量子神经元搭建量子神经网络,在简单的机器学习任务中 (比如MNIST 2分类问题)可以取得较高的准确率。然而,当应用于更复杂的机器学习任务(比如MNIST 10分类问题)时,该类量子神经网络的准确率便会大打折扣。
基于这样的现状,QF-Mixer提出了要混合不同种类的现有的量子神经元来构建一个性能更高的异构量子神经网络。
然而,搭建这样的异构量子神经网络并非易事。
首先,不同的量子神经元对输入和输出的量子态 (quantum state) 有着不同的要求,任意地连接两类神经元往往无法达到这些预设的要求。
其次,不同的神经元在计算上也有着不同的特性和逻辑,更高的准确率未必能通过混合不同神经元达到。只有找到合适的神经元组合,才能起到1+1>2的效果。
针对第一个问题,QF-Mixer 给出了一套在混合不同神经元需要遵循的准则,这为异构量子神经网络的设计提供了理论支持。
针对第二个问题,JQub团队发现Quantumflow中的量子神经元和变分量子电路 (Variational Quantum Circuit)有着极为互补的特性。
一方面,Quantumflow中的量子神经元 (QF-量子神经元) 的可学习参数是二值化的,在表达能力上有着较大的限制。变分量子电路的可学习参数则为任意实数。因此,变分量子电路可以为QF-量子神经元提供更强的表示能力。
另一方面, 变分量子电路仅是一个线性分类器,QF-量子神经元则可以轻松地搭建起拥有多个非线性层的量子神经网络。QF-量子神经元可以帮助变分量子电路构建出更为复杂的模型。
基于上述观察,QF-Mixer提出了QF-MixNN,一个混合了QF-量子神经元和变分量子电路的异构神经网络框架。QF-MixNN在遵循了QF-Mixer提出的混合准则的同时,也在不同的数据集上展现出了更高的准确率。
图6 QF-Mixer在10类分类问题取得高精度
这一点在图6中的表格中也得以体现。可以看到,在MNIST数据集上,QF-量子神经元构成的神经网络和变分量子电路均表现不佳,分别仅有52.77%和69.92%的准确率。
与此同时, QF-MixNN则有着想当亮眼的表现。它在MNIST上取得了超过90%的准确率。对比QF-量子神经元构成的神经网络和变分量子电路,准确率的提升分别为20.7% 和37.85%。
JQub团队介绍
姜炜文助理教授于2021年加入乔治梅森大学并建立了量子-经典计算机辅助设计实验室(JQub)。
该实验室致力于研究神经网络和硬件加速器(包括量子计算机)的协同设计,在量子神经网络方向,JQub与圣母大学史弋宇教授,布法罗大学熊瑾珺教授,以及新墨西哥大学杨蕾助理教授合作。
并在《自然通讯》期刊,量子计算机周(QuantumWeek),嵌入式系统周(ESWEEK),以及计算机设计会议(ICCAD)上发表多篇文章,并进行在线课程辅导(Tutorial)讲座。
作者简介
项目领导人姜炜文目前是乔治梅森大学助理教授。他于2019年获重庆大学博士学位;2017年到2019年,曾在匹兹堡大学电子和计算机工程系参与研究工作;2019-2021年,曾在圣母大学做博士后研究助理。
博士期间,姜炜文在国际会议和主要期刊上发表了50多篇研究论文,其中包括10多篇 IEEE/ACM 会刊论文,他在硬件加速和神经网络结构方面的合作研究获得了IEEE TCAD 2021最佳论文,以及 DAC’19,CODES+ ISSS’19和 ASP-DAC’20最佳论文提名。
他在神经网络和并行系统等方面的研究工作引起了业界的广泛关注,得到了美国国家科学基金会国际自然科学联合会的科研基金,与 IBM,Facebook、 Edgecortix inc. (日本/新加坡) 等公司开展了合作研究。
参考资料:
QuantumFlow: https://www.nature.com/articles/s41467-020-20729-5
QFNN: https://jqub.ece.gmu.edu/categories/QF/qfnn/
QF-RobustNN: https://arxiv.org/pdf/2109.03430.pdf
QF-Mixer: https://arxiv.org/pdf/2109.03806.pdf
QuantumFlow Tutorial Github: https://github.com/JQub/QuantumFlow_Tutorial
Tutorial at ESWEEK on Youtube: https://www.youtube.com/watch?v=bYRNU2Ry4h0