九章不是计算机,是浮夸宣传?这是严重的误解 | 袁岚峰
关注风云之声
提升思维层次
导读
有些人整天叫中国没有创新,真到重大的创新放在他们眼前,他们又认不出来。分不清稻草和黄金,把引领世界的成就当作骗局,这实在是太荒诞了。
视频链接:
精彩呈现:
最近,有一位朋友来咨询我一些问题。
他说:中国的量子计算机“九章”大家都很关注,不过也有一些反对的声音。最基本的问题是,它到底是真的还是假的?
我说:当然是真的,全世界很多专家发来了祝贺。
他说:我们是被当年的汉芯搞怕了。
我说:汉芯是一直藏着掖着,没有任何中间成果,最后只有一个打磨的芯片。而九章用到了大量的先进技术,当今世界最好的量子光源、最好的干涉技术、最好的锁相技术、最好的单光子探测器等等。例如九章在2米自由空间加20米光纤的光程中能够保证抖动不超过25纳米,这相当于100公里的距离误差小于一根头发丝《让中央集体学习的量子科技究竟是啥?这个科普我已经做了五年(五)在九章中介绍九章 | 袁岚峰》。
九章在《Science》上的论文,正文有4页,附件长达64页,详细描述了论证过程与实验细节。
多位国际专家对九章的评价《比最快的超级计算机快一百万亿倍!中国科学家实现“量子计算优越性”里程碑》
这些技术在九章之外也会有很多用处,例如打造更好的雷达、更好的卫星,所以怎么可能是假的呢?
这位朋友说:这我就放心了。下一个问题是,很多人说它不是个计算机,对此该怎么看?
我说:很多人有这个问题。例如有文章说《杂谈|是量子计算,还是光学实验?》:
该“SCIENCE”文章,混淆了“实验”与“计算”的概念,所做的光学实验与量子计算无关,“九章”机器不是量子计算机,不能直接显示量子计算的优越性。
又如有文章说《高斯玻色采样不是量子并行计算而是经典的硬件蒙特卡洛模拟》:
就好比你用很多支手电筒在装满凹凸不平的镜子的屋子里乱照一通,然后让经典计算机计算出光的图像。你完全可以说你用手电筒就那么一晃,超级计算机就得计算几亿年。并且随着你的计算精度要求的提高,超级计算机的计算年数还可以无限延长。但这与量子霸权无关。这是模拟霸权。
又如有文章说《“九章”量子计算机为啥这么快?玻色采样问题是什么?量子霸权时代是否已经到来?》
九章只能算是一个原型机,而不是计算机。因为它使用量子的方法去模拟量子过程,速度当然会超过经典计算机。这就好像点燃一个爆竹问碎片怎么飞,物理方法1秒就知道了,可是用计算机去计算可能要知道爆竹的结构、火药的种类,甚至要知道每一个分子和原子的位置,要获得足够的精度,计算量非常大。这并不是因为经典计算机不行,而是因为世界太复杂。
因为这些问题,所以有文章说,九章是“科学宣传的浮夸风”《科学宣传的浮夸风?中国量子计算机比超级计算机快1百万亿倍》。
这些说法似乎很有道理。但请仔细想一想,难道九章是这么简单的东西吗?为什么九章能发《Science》,而拿手电筒乱照或者点爆竹不能发任何科学杂志?
基本的道理在于,计算机必须要稳定地、可重复地获得数据。九章确实做到了这一点,而拿手电筒乱照或者点爆竹不能做到,它们不具备可重复性。你这次点个爆竹,和下次点个爆竹,有多少碎片、这些碎片往哪儿飞,都是不一样的。你没法控制,除非你能控制爆竹中的每个原子。
所以,九章是计算机,而拿手电筒乱照或者点爆竹不是计算机。
你也许想问,九章究竟计算了什么?回答是“积和式”(Permanent)。
什么叫做积和式呢?取一个n × n的方阵,在第一行取一个数字,在第二行不同的列取一个数字,在第三行跟前两个数字不同的列取一个数字,如此等等,总共取n行的n个数字,然后把它们乘起来。
如果你学过高中数学,你立刻就会认出来:这不是行列式(Determinant)吗?没错,行列式就是这样做的。不过关键在于,行列式中这样的n个数字的乘积,有一半要加个负号,有加有减。例如对于a、b、c、d四个数组成的方阵A,
它的行列式
det(A) = ad - bc。
但在积和式中,所有的乘积前面都是正号,只有相加,没有相减。对于上面这个方阵,它的积和式就是
perm(A) = ad + bc。
这个符号之差,就带来了计算量的巨大差别。在经典计算机上,行列式有快速的算法,但积和式至今都没有快速的算法。你要让经典计算机算一个比较大的方阵的积和式,它到太阳爆炸都算不完。
现在来看九章是怎么计算积和式的。它是一个光学实验装置,做的任务叫做“玻色子取样”(boson sampling)。这个任务可以大致理解为:一个光路有若干个入口和若干个出口,把若干个光子放进去,让它们经过复杂的透射、反射和干涉,问光子从每一个出口出去的概率是多大。
玻色子取样的结果,是直接跟积和式相关的。所以我们可以根据要算的方阵,设计一个玻色子取样的实验装置,对它取样,然后就能算出这个方阵的积和式了。九章用200秒取样5千万次,而现在最强的经典计算机计算同样的体系需要6亿年,九章实现了一百万亿倍的优势。
现在你完全明白了吧?
拿手电筒乱照或者点爆竹很复杂,是因为其中的粒子很多,而你的控制能力很差,所以你无法精确表述问题。而玻色子取样很复杂,是因为计算量太大,但这个问题是可以精确表述的。九章通过精密的操作,快速解决了这样一个有精确表述的复杂问题,这当然是了不起的成就。
有些人整天叫中国没有创新,真到重大的创新放在他们眼前,他们又认不出来。分不清稻草和黄金,把引领世界的成就当作骗局,这实在是太荒诞了。
关于九章的突破之大,有一个戏剧性的故事。有一位以色列数学家吉尔·凯莱(Gil Kalai),是一个铁杆的量子计算反对者。在他看来,量子计算机永远都不可能成功。他预言,玻色子取样不可能做到8至10个光子以上。
但九章做到的是多少呢?平均43个光子,最多达到76个光子!远远超出了凯莱的预测。这就像1943年,IBM董事长托马斯·沃森(Thomas John Watson,1874 - 1956)的名言:“全世界有5台计算机就够用了。”
玻色子取样是美国理论家斯科特·阿伦森(Scott Aaronson)和他的学生亚历克斯·阿尔希波夫(Alex Arkhipov)提出的,他们指出这个问题很适合量子计算机超越经典计算机,即实现量子优越性。
最近阿伦森在自己的博客上(https://www.scottaaronson.com/blog/?p=5122)庆祝了九章的成功,并专门记录了凯莱立的这个flag及其被打脸。群众都喜闻乐见。
有人可能还想问:九章确实快速得到了结果,但它不是把数据输进去一步步地计算,而是运行玻色子取样这个物理过程,这能算是计算吗?
其实这是典型的外行问题,真正研究量子计算的都不会问这个。因为他们知道,量子计算机本来就是这么做的,否则它凭什么能超过经典计算机呢?
量子计算的起源之一,是1981年伟大的物理学家理查德·费曼(Richard Phillips Feynman,1918 - 1988)的一个演讲《用计算机模拟物理》(Simulating Physics withComputers)。
他在里面指出,现在的计算机用来模拟经典力学很合适,但模拟量子力学就会遇到计算量爆炸。因为量子力学里同一个原因会产生不同的结果,我们的描述只能用概率的语言。请注意,这是一个质的区别。我们平常见到的随机都是伪随机,而量子力学里的随机是真随机!
现在来看看,概率为什么会导致计算量爆炸。对于一维空间中的一个粒子,它只有一个坐标x,我们可以用一个函数f(x)来表示在x这个位置找到这个粒子的概率。假如把空间分成N个格点,我们就需要知道f(x)在这N个位置的N个取值。
这看起来很简单。但真正的麻烦在于,当我们有R个坐标时,概率函数就成了一个多元函数f(x1,x2, x3, …, xR)。每一个坐标有N个取值,所以总共有NR组坐标,我们需要知道这个多元函数的这么多个取值才行。数据量对R是指数增长的,这是灾难性的增长。
例如,中国信息通信研究院发布的《大数据白皮书(2020年)》说(https://www.sohu.com/a/441067752_100000136),2020年全世界产生的数据量是47 ZB。1 ZB是1021字节,47 ZB就是4.7 × 1022字节或者3.76 × 1023比特。1 ZB约等于十亿TB,大家平时用的硬盘容量在1 TB左右,所以全世界一年大约填满了470亿个硬盘。
请问,什么样的量子体系所需的数据量会超过47 ZB?答案非常惊人。
只要我们在三维空间中取8个粒子,每个粒子有3个坐标,总共24个坐标,即R = 24。每个坐标取10个值,即N = 10。这么小的体系,它的概率函数的数据量就是1024,超过了47 ZB这个全球一年的数据量。存都存不下,更不用说计算了。
现在,大家明白量子力学的计算为什么这么困难了吧?
面对这种计算量爆炸,费曼提出了一个办法,就是用量子体系去模拟量子体系。
我们不是直接用解析的方法去计算多元概率函数,而是构造一个量子体系,它演化的方式跟要模拟的体系在数学上等价。然后我们去测量这个量子体系的演化结果,也就是取样。做若干次取样后,我们就直接知道了这个多元概率函数。当然是在一定的误差范围内,这个误差会随着取样的增加而减少。
这种思路可以表述为:只有魔法才能打败魔法,只有量子才能打败量子。
所以你看,九章做的不正是费曼建议的吗?这正是量子计算机的本意。
通过以上的解释,你也会明白,为什么现在的量子计算机做的往往都叫做某某取样:九章做的叫做玻色子取样,2019年谷歌实现量子优越性的计算机“悬铃木”(Sycamore)做的叫做“随机线路取样”(random circuit sampling)。因为取样正是适合量子计算机干的事情。那些认为九章不是计算机、是浮夸宣传的人,其实踩的不只是九章,而且还包括悬铃木,包括现在所有的量子计算机。
量子计算这个领域以前突出的困难在于,没有任何一台量子计算机在任何一个问题上超越经典计算机。大家都好像玩具模型一样,能算,但是算得很慢。所以有凯莱这种唱衰派,认为量子计算机永远不可能成功。九章和悬铃木的成就,就是突破了这个限制,显示出了量子计算机真正有用的前景。
我的朋友立刻明白了这些道理,他总结道:九章是一台原理验证机。他的下一个问题是:有人说九章不能编程,所以它不是个计算机,对此应该怎么看?
我的回答是:真正的关键在于,许多人对量子计算机的编程有误解。他们以为量子计算机是在所有问题上都能超越经典计算机,就像486比386快,所以他们觉得量子计算机一定要能编程。但这完全是错的。
486跟386运行的是同样的底层逻辑,486更快只是因为它的主频更高、晶体管更小、内存更大等等。但量子计算机跟经典计算机的底层逻辑完全不同,它们的基本操作单元就不同。
经典计算机的基本操作单元是“比特”,即一个体系有且只有两个状态。好比一个开关,它只有开和关两个状态。量子计算机的基本操作单元是“量子比特”(qubit),它好比一个旋钮。旋钮跟开关的区别是什么?它不是只有两个状态,而是有无穷多个状态。
用数学语言来表述,如果一个量子比特能处于|0>和|1>两个状态,那么它也能处于这两个状态的任何叠加态,即a|0> + b|1>。这里的a和b是两个数,|>叫做“狄拉克符号”(Dirac notation),在其中填上任何的数字或字母就可以表示一个量子力学的状态。
经典计算机的基本操作,是对比特进行的。例如把0变成1、把1变成0,这叫做“非门”(NOT gate)。
量子计算机的基本操作,是对量子比特进行的。例如把a|0> + b|1>变成b|0> + a|1>,这叫做“泡利-X门”(Pauli-X gate)。
所以你看,量子计算机跟经典计算机的编程完全不是同样的意义。经典计算机的算法都是人用手算可以实现的,只是算得慢点。而量子计算机的算法是人用手算无法实现的,因为基本操作就不同。
量子计算机超越经典计算机的关键,在于量子算法。对于某些问题,我们设计出了快速的量子算法,例如因数分解《让中央集体学习的量子科技究竟是啥?这个科普我已经做了五年(四)量子因数分解与破解密码 | 袁岚峰》,这时它们就可以远远超越经典计算机。而对于另一些问题,我们没有快速的量子算法,例如最基本的加减乘除,这时量子计算机就没有任何优势。
所以,量子计算机的用处就是解决某些经典计算机难以处理的问题,而不是解决所有的问题。许多人以为量子计算机将来会取代经典计算机,这是误解。无论量子计算机进步到什么程度,它都不会完全取代经典计算机。正确的前景是,量子计算机跟经典计算机联合使用。
因此,量子计算机只要在一个问题上超越了经典计算机,它就是有价值的。这正是九章和悬铃木的成就。在当前阶段,编程并不是主要目标。
事实上,光量子计算机首先在原理上是可以实现编程的。然后,现在的九章可以部分的编程,这可以通过调整实验中光的强度、干涉仪的透射率、反射率等参数来实现。潘建伟指出,九章的下一步,就是要成为一个可完全编程的计算机。
上海纽约大学计算机教授张峥表示,大众理解的“编程”是码农写程序,而九章和悬铃木的编程指的是硬件的“重构”(reconfiguration)。前者是用程序指令调动计算机的硬件资源,包括计算和存储,而后者有点像用乐高积木根据任务搭一个硬件。这两者的编程在目前并不在一个层面上。
我的朋友完全明白了这些道理,然后用自己的语言总结了一番,可见确实是理解了。我很高兴为这位朋友解答了问题。如果大家都有这样的思考能力和学习能力,我们的社会将会进步得多么快啊!
扩展阅读:
背景简介:袁岚峰,中国科学技术大学化学博士,中国科学技术大学合肥微尺度物质科学国家研究中心副研究员,科技与战略风云学会会长,“科技袁人”节目主讲人,安徽省科学技术协会常务委员,中国青少年新媒体协会常务理事,中国科普作家协会理事,入选“典赞·2018科普中国”十大科学传播人物,微博@中科大胡不归,知乎@袁岚峰(https://www.zhihu.com/people/yuan-lan-feng-8)。 责任编辑:祝阳