TFQ量子计算体验

简介: 问题 一直很苦恼深度学习对GPU的依赖,也很羡慕那些土豪玩家动不动几十张N卡训练各种复杂网络模型 各种打比赛,各种刷论文 可是身为草根屌丝的我,积累了N年也只有一个capability为4的显卡,难道就没办法玩复杂模型了吗? 于是我便开始不断琢磨使用更少量的计算和结构而能达到深度学习同样效果...

问题

一直很苦恼深度学习对GPU的依赖,也很羡慕那些土豪玩家动不动几十张N卡训练各种复杂网络模型

各种打比赛,各种刷论文

可是身为草根屌丝的我,积累了N年也只有一个capability为4的显卡,难道就没办法玩复杂模型了吗?

于是我便开始不断琢磨使用更少量的计算和结构而能达到深度学习同样效果的方法

发现

近期看到TensorFlow峰会介绍TFQ中实现了量子神经网络
https://www.bilibili.com/video/BV1Q54y1R7aS?from=search&seid=1236825802957325049

其中benchmark的效果让我眼前一亮
image
如上图,其中黄色和蓝色的部分是QNN迭代的结果,绿色是传统神经网络迭代的结果

于是开始恶补量子计算,想验证下

该文中描述的量子计算大致原理,使用一堆量子比特来描述某个问题集合发生的概率

思想有点类似于贝叶斯网络,只不过这里网络的节点换成了量子比特

但文中有一些关键点没有交代清楚:

1.“量子操作”具体该怎么操作?预先就知道答案了,对其中的候选量子进行加权,岂不是多此一举?

2.重复次数是怎么得到的?
image

于是,在好奇心的驱使下,我下载了TFQ的源码看看它是如何实现的?

分析

这里找到了TFQ官方公布的源码:

https://github.com/tensorflow/quantum/blob/master/docs/tutorials/mnist.ipynb

前面数据准备部分就不看了,关键部分就是将图像数据编码成量子电路:

qubits = cirq.GridQubit.rect(4, 4)

这里,我理解就是用16个量子比特来表征4*4的图像数据

再看看QNN量子神经网络是怎么搭建的:

class CircuitLayerBuilder():
    def __init__(self, data_qubits, readout):
        self.data_qubits = data_qubits
        self.readout = readout
    
    def add_layer(self, circuit, gate, prefix):
        for i, qubit in enumerate(self.data_qubits):
            symbol = sympy.Symbol(prefix + '-' + str(i))
            circuit.append(gate(qubit, self.readout)**symbol)

从源码上看,这里其实和传统神经网络结构也没什么差异
也是构建了很多层,只是将网络节点替换成了量子比特

继续往下看,从模型选择的损失函数和优化器来看
说明QNN也并未抛弃传统神经网络BP的策略

model.compile(
    loss=tf.keras.losses.Hinge(),
    optimizer=tf.keras.optimizers.Adam(),
    metrics=[hinge_accuracy])

那么,它凭什么就比传统神经网络收敛的快呢?

从代码分析来看,我初步得到以下一些推断(以下观点仅代表个人理解):

1.量子比特的粒度比CNN的卷积更细,卷积和池化层为了减少运算降低了精度,而在QNN中一个量子比特就能对应一个图像像素点;

2.量子比特的概率不是随机产生,而是通过样本数据不断累加,累加值就是最优值,所以从逼近凸函数的角度来看,QNN是从平面不断接近,而CNN是从凹凸不平的随机面不断接近,从宏观上看,从平面出发就会快一些。

结论

细看了QNN的实现过程后,也揭开了最开始我的两点疑惑:
1.“量子操作”在QNN中,其实就是根据已知测量的结果,增加一个Q比特(量子比特)输出某一状态的概率

举个简单的例子:
图像中某个在人脸范围内的Q比特,它的颜色值取[黄色|非黄色]
那么随着训练(测量)次数不断叠加,它取黄色的概率就越来越大
换句话说,这里Q比特的概率其实就可以看做节点权重

2.重复次数,我并未找到QNN中体现量子搜索次数的代码,可能在量子框架cirq的更底层API中实现了,有兴趣的同学可以去研究下

在QNN中还是会根据传统神经网络的epoch来不断迭代

所以,由上分析可以发现,QNN可以看做CNN的一种简化版结构,只是受到了量子叠加态这个现象的启发而进行的改进

感受

雾里看花,刚看觉得高大上,细看过后自然又有一丝失望和惆怅

想想,测试集只是MNIST,还好数据量不大,如果换成更复杂的图像和视频,又会是怎样的体验?

当然,无论如何QNN量子叠加的思想还是值得鼓励和继续关注的

好了,看来QNN在目前还不是草根的菜,我还得继续寻觅,期待未来能真正出现革命性的进步!

相关文章
|
7月前
|
算法 安全 量子技术
未来之光:量子计算的潜力与挑战
【6月更文挑战第4天】本文将探讨量子计算的基本原理、其对传统计算的颠覆性影响以及当前面临的技术挑战。我们将深入分析量子比特(qubit)的概念,量子纠缠现象以及量子算法如何为解决复杂问题提供新途径。同时,我们也将讨论量子计算机在材料科学、药物设计和加密领域的应用前景,以及实现商用量子计算机所需克服的技术和伦理障碍。
|
12天前
|
机器学习/深度学习 人工智能 安全
《鸿蒙系统AI技术:开启元宇宙与量子计算的无限可能》
鸿蒙系统的人工智能技术在元宇宙和量子计算等新兴领域展现出巨大潜力。在元宇宙中,AI可构建沉浸式虚拟环境、实现智能交互、助力虚拟经济管理;在量子计算方面,AI能加速模型训练、优化算法、推动量子人工智能融合发展。尽管面临隐私、安全及技术稳定性挑战,但其应用前景广阔,有望为用户带来更智能、便捷、安全的体验,推动科技与社会进步。
|
2月前
|
算法 安全 量子技术
深入理解量子计算:原理、挑战与未来展望
深入理解量子计算:原理、挑战与未来展望
|
2月前
|
传感器 供应链 数据挖掘
量子计算与环境保护:可持续发展的工具
量子计算作为21世纪的前沿技术,不仅在信息技术领域引发革命,还在环境保护和可持续发展方面展现了巨大潜力。本文探讨了量子计算在模拟复杂环境系统、优化能源利用、监测环境变化等方面的应用,以及面临的挑战和未来展望,揭示了量子计算在推动绿色转型中的关键作用。
|
5月前
|
物联网 测试技术 持续交付
软件测试的艺术与科学:探索自动化测试框架未来技术的融合与创新:探索区块链、物联网和虚拟现实的交汇点
【8月更文挑战第30天】在软件开发的海洋中,测试是确保航行安全不可或缺的灯塔。本文将带领读者揭开软件测试神秘的面纱,深入理解自动化测试框架的重要性和实现方法。通过实际案例,我们将一起探索如何构建高效、可靠的自动化测试系统,从而保障软件质量,提升开发效率。
|
5月前
|
监控 数据挖掘 量子技术
量子计算在教育领域的应用如何?
【8月更文挑战第4天】量子计算在教育领域的应用如何?
82 1
|
5月前
|
供应链 物联网 区块链
新纪元的技术潮流:区块链、物联网与虚拟现实的未来展望
随着科技的飞速发展,新兴技术如区块链、物联网和虚拟现实正逐渐渗透到我们的生活中。本文将深入探讨这些技术的发展趋势,以及它们如何改变我们的工作和生活方式。从区块链技术的安全性和去中心化特点,到物联网的智能化和互联性,再到虚拟现实的沉浸式体验,我们将一探究竟,看看这些技术如何塑造未来世界。
42 1
|
5月前
|
人工智能 并行计算 算法
揭秘未来技术:量子计算的奥秘与挑战
【8月更文挑战第19天】 在探索宇宙最深奥秘密的征途上,量子计算以其潜在的巨大计算能力成为了科技界的新星。本文将深入浅出地介绍量子计算的基本概念、工作原理以及面临的技术挑战,带领读者一探这项可能重塑未来的技术。
62 0
|
5月前
|
并行计算 算法 程序员
未来编程:量子计算的崛起与挑战
随着科技的迅猛发展,传统计算机正逐渐达到其物理极限。量子计算作为一种全新的计算范式,承诺将带来前所未有的计算能力。本文深入探讨了量子计算的基本原理、当前技术发展现状以及面临的主要技术挑战,旨在为读者揭示这一前沿技术领域的内在复杂性和未来潜力。
67 0
|
6月前
|
并行计算 算法 量子技术
探索未来:量子计算在现代科技中的应用与挑战
随着科技的不断进步,量子计算作为一种新兴技术,其潜力和影响力日益凸显。本文将深入探讨量子计算的核心原理、当前技术发展现状以及面临的主要挑战。通过分析量子计算在特定领域的应用案例,本文旨在提供一个全面的视角,以理解量子计算如何塑造未来的科技格局。