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在目前还不是草根的菜,我还得继续寻觅,期待未来能真正出现革命性的进步!

相关文章
|
5月前
|
算法 安全 量子技术
未来之光:量子计算的潜力与挑战
【6月更文挑战第4天】本文将探讨量子计算的基本原理、其对传统计算的颠覆性影响以及当前面临的技术挑战。我们将深入分析量子比特(qubit)的概念,量子纠缠现象以及量子算法如何为解决复杂问题提供新途径。同时,我们也将讨论量子计算机在材料科学、药物设计和加密领域的应用前景,以及实现商用量子计算机所需克服的技术和伦理障碍。
|
3月前
|
并行计算 算法 安全
揭秘未来科技:量子计算的奥秘与挑战
在本文中,我们将深入探讨量子计算这一前沿科技领域,它如何颠覆传统计算模式,以及面临的主要技术难题和可能的解决方案。通过分析量子位的特性、量子纠缠现象及量子算法的优势,我们旨在为读者揭示量子计算背后的科学原理及其对未来信息技术发展的潜在影响。
47 4
|
3月前
|
监控 数据挖掘 量子技术
量子计算在教育领域的应用如何?
【8月更文挑战第4天】量子计算在教育领域的应用如何?
54 1
|
3月前
|
人工智能 并行计算 算法
揭秘未来技术:量子计算的奥秘与挑战
【8月更文挑战第19天】 在探索宇宙最深奥秘密的征途上,量子计算以其潜在的巨大计算能力成为了科技界的新星。本文将深入浅出地介绍量子计算的基本概念、工作原理以及面临的技术挑战,带领读者一探这项可能重塑未来的技术。
49 0
|
3月前
|
并行计算 算法 程序员
未来编程:量子计算的崛起与挑战
随着科技的迅猛发展,传统计算机正逐渐达到其物理极限。量子计算作为一种全新的计算范式,承诺将带来前所未有的计算能力。本文深入探讨了量子计算的基本原理、当前技术发展现状以及面临的主要技术挑战,旨在为读者揭示这一前沿技术领域的内在复杂性和未来潜力。
47 0
|
3月前
|
安全 算法 量子技术
探索未来:量子计算的奥秘与挑战
随着科技的不断进步,量子计算作为一项前沿技术,正逐渐从理论走向实际应用。本文将深入探讨量子计算的基本概念、发展现状以及面临的主要挑战,同时分析其对未来科技发展的潜在影响。通过具体案例和最新研究成果,我们将一窥量子计算如何重塑信息处理、药物开发等领域,并讨论其对传统加密技术的威胁及可能的解决方案。
|
4月前
|
人工智能 算法 安全
探索未来之光:量子计算的奥秘与挑战
在科技日新月异的今天,量子计算如同一颗冉冉升起的新星,引领着计算领域的革命。本文将深入探讨量子计算的核心原理、技术难题以及它对未来社会的深远影响,为读者揭开量子世界的神秘面纱。
|
4月前
|
并行计算 算法 量子技术
探索未来:量子计算在现代科技中的应用与挑战
随着科技的不断进步,量子计算作为一种新兴技术,其潜力和影响力日益凸显。本文将深入探讨量子计算的核心原理、当前技术发展现状以及面临的主要挑战。通过分析量子计算在特定领域的应用案例,本文旨在提供一个全面的视角,以理解量子计算如何塑造未来的科技格局。
|
4月前
|
算法 大数据 量子技术
探索未来:量子计算在解决复杂问题中的潜力与挑战
本文深入探讨了量子计算技术如何为解决传统计算机无法有效处理的复杂问题开辟新路径。通过分析量子计算的原理、当前发展状况以及面临的主要技术挑战,文章揭示了量子计算在未来可能带来的革命性变化,并讨论了其对科学研究、密码学和大数据处理等领域的潜在影响。
|
5月前
|
数据处理 量子技术 数据安全/隐私保护
未来编程:量子计算的兴起
【6月更文挑战第16天】本文将探讨量子计算的基本原理,以及它如何改变我们理解计算机科学的方式。我们将深入了解量子比特和量子纠缠的概念,以及它们如何使量子计算机比传统计算机更强大。我们还将讨论量子计算在解决复杂问题,如加密和药物发现等领域的潜在应用。
45 3