干货!从基础到进阶,长文解析微软量子计算概念和算法(上)
雷锋网按:本文为雷锋字幕组编译的微软量子计算短片,原标题Achieving practical quantum computing,作者为MICROSOFT QUANTUM TEAM。
翻译 | 杨惠淳 程炜 字幕 | 凡江 整理:余杭
一、量子计算的前世今生
欢迎来到微软量子计算介绍。
主讲人是 Dave Wecker,微软量子计算团队的合伙架构师。可能你也注意到了,量子计算相较过去正获得越来越多的媒体关注,但这其实是一把双刃剑。弊端是,你的老板会更加频繁地关注项目的进展,因为现在这变得非常重要;另一方面,我们同时也获得了更多来自企业提供的演示材料, 就像下面所展示的这样:
我们谈论的量子计算,是一个完全不同的领域。量子计算让我们能够以秒级、 小时级或者几天的时间去解决那些以现在的技术需要花费上亿年计算的问题,我们完全重新定义了所做计算的尺度。
打个比方,量子计算相较于经典计算,就好比人类从爬行相较于前往另一颗行星一样,这是完全不同的。很自然,我们想用世间最强大的设备去对抗世间最困难的问题。
我们能够探测到全球气候变暖问题,解决设备安全问题,探索机器学习所能达到的极限到底在哪,并以此对抗疾病,量子计算的可能性是无穷的。微软在量子计算问题上有着最好的最先进的理论,变革真的在发生,进展非常快。
二、量子计算为何如此神速
我们正在建造一台量子计算机,但世界希望知道这台机器启动起来的时候会发生什么。当使用一台能够同时在十亿个平行宇宙间计算的计算机时,什么样的问题会变得迎刃而解,我们计算的方式在过去的几千年来从未改变,而现在我们有机会转变到另一种范式。当我们进行经典计算的时候,所做的其实就是一个固有的顺序过程。我们每次只做一件事,即便进行并行处理,也只是简单地复制了硬件,这样我们就可以每次处理多件事。
量子计算本身就是并行的,我们可以同时做完迷宫的所有路径,这就是量子计算非常快的原因。但同样的,这类计算需要大量的内存。量子计算所用的单元是量子比特,计算过程中它增长速度非常快,达到了我们传统上不能保存同样数量信息的水平,这涉及到指数级的增加,每增加一个,量子位就会翻倍。这意味着,即使只有相对少量的量子比特,我们也很快地超过了构建一台可以保存相同数量信息的经典计算机的可能性。
三、量子计算的应用
使用量子计算机,有几个大型问题被证明能够被更快解决。其一就是破译密码。
这是一个很典型的数字,它是由两个质数相乘得出的一组 2048 位数字:
这是一道经典的难以处理的问题。
在一台中等尺寸的量子计算机上,这个问题仅仅需要花费一百多秒。现如今,我们只能使用世界上最大的超级计算机去解决那些问题,而这些问题可能在量子计算机上能够更好得到更好的解决,当然这前提是我们已经有量子计算机了。
大多数时间,或者超过半数的时间被花在了诸如材料和化学建模的问题上( 如下图所示 ),只要其中分子是由元素周期表前几行中的原子组成的,这些都不是问题。
但一旦我们接触到模型含有金属原子和 d&f 轨道的分子的时候 (如下图所示),在一台经典计算机上精确地模拟出他们是完全不可能的事,更别提去进行我们想要的分析。
如果我们好好看看那些可以使用经典计算机模拟的分子,和那些不能模拟的分子,以及计算他们的规模如何,我们会发现对于经典计算机来说有一个确定的比例曲线。
这意味着无论我们让经典计算机的运算速度达到多快,某些问题也不可能进行处理。即使我们往后看 20 年,曲线也并没有改变很多。
但在另一方面,量子计算有一个完全不同的比例曲线。
四、经典计算和量子计算的差异
让我们来谈谈经典计算和量子计算有什么不同。
在经典计算中,我们以比特位计算,有 0 或 1;在量子计算中,我们以量子位计算,人们通常说既有 0 又有 1。
要注意,在 0 前面的α以及在 1 前面的 β 实际上是个复数。这意味着我们其实有一个可以填充信息的四维空间。现在我们还没发完全填充他,因为α0 加 β1 的和的大小必须为 1。所以实际上我们是在一个四维球的表面上,但我们可以在一个量子位中存储很多信息;在经典计算中,我们有逻辑运算,我们可以使用门电路。
图中所展示的非门,能够将输入的 a 转换成非 a。
在量子计算中我们有作用相同的运算,只不过门电路实际上变成了矩阵运算。
在这展示的是,向量中的 α 和 β 与矩阵,也就是 x 门得到了 [ β α ]。值得注意的是,这保存了所有我们在四维球中存储所有的信息。无论我们以何种方式填入 α 和 β,得到的都只是与原来相反的 α 和 β。
在经典计算中,我们使用真值表描述不同的门。
A B是输入,Y 是得到的输出。
在量子计算中,我们有矩阵定义。输入和输出的数量是完全相同的,这也意味着门是可逆的。
可以正向运行也可以反向运行,因为这只是矩阵运算。
控制非门,或者说 CNOT 门实际上是量子领域与异或运算相同的门。
只不过一个是经典运算,一个是量子运算。当然,经典模型有输入输出,门只能由一个方向通过。既然我们使用矩阵,任何在量子层面上进行的运算都是可逆的,甚至是整个回路。我们可以使用输出,一路逆向运算,得到输入。这对程序员来说其实意味着一种完全不同的编程模型。
另一件改变经典计算中的编程模型的关键是,我们已经习惯了使用临时副本。我们制作一个数据的副本,使用它进行操作,然后释放它。但既然输入和输出是守恒的,那么我们没法生成独立副本
我们可以声明副本,但所有的一切都是通过这些矩阵运算联系起来的。所以当声明了一百个副本,如果改变了其中一个,就改变了所有的副本,根本没办法去进行独立操作,这让我们在怎样设计量子算法的问题上产生了巨大的不同。
还有一个问题是,到处都是噪声。在经典运算中,我们使用校验位。我们使用汉明码,以此进行误差校正来清除噪音系统,达到好像完全没有噪音的效果;我们可以在量子运算中做同样的事,但是量子层面的误差校正操作起来非常困难。每一个量子位需要一个四维空间,把他们放在一起的空间是指数级增长的,因此我们需要大量额外的硬件存储去进行误差校正,这其实就是量子运算和经典不同的关键。
接下来说说存储能力。
如果存在一个32 位寄存器,它能够容纳的一个是从 0 到 2 的 32 次方减 1 的数字,大概在四十亿上下。但在量子领域,实际上在 32 个量子位中容纳下的是四十亿个数字,它们都是相互叠加的,因此可以同时对他们进行操作。
说白了就是,在经典计算中,当你把两个 32 位数字相加,得到的是一个 32 位数字。如果将两个 32 位量子比特寄存器相加,就是同时将两组四十亿个数字相加,得到四十亿个数字,这就是量子计算有多么强大的一个例子。另一方面,输入和输出在经典计算层面是线性的,即放入输入得到输出,这都是每次一个。量子运算其实不如经典运算,输入是同样的,但对于输出,这四十亿个在 32 个量子比特中的值在要去读取的时候,其实只得到了一个值,同时那个值还是概率性的。四十亿个数值中的一个值会以某种概率输出,这与薛定谔的猫是一样的。当这只猫既是活着的状态又是死了的状态的时候,是量子层面。当你打开盒子看的时候,就变成要么活着要么死了。所以当我们看盒子里的值是什么的时候,已经不再是量子层面了,就已经是经典计算层面了。 大部分的量子算法所做的,就是去将那些我们希望得到答案的概率提得更高,这样当我们运行算法的时候,就能有一个足够高的概率得到正确答案,因为我们没法查看所有的答案。
五、物理上真实的量子比特与逻辑量子比特
我们所讨论的所有的量子比特都是完美量子比特,称之为逻辑量子比特。就像我前一张幻灯片所提到的,你需要对量子比特进行误差校正以此得到一个逻辑量子比特。
所以我们要来谈谈那些物理上真实的量子比特。我们就是用这些量子比特制造量子计算机的,来看看需要多少物理量子比特去生成出一个逻辑量子比特。
现在主要以两种量子比特进行开发。第一种很符合比例,它们就是使用普通的光刻技术被制造出来的,就像制作集成电路一样。我们可以在一个芯片上放成百上千乃至几万个量子比特,芯片就是按个数成比例扩大的。问题在于他们的噪声非常得大,这就意味着错误率很高。所以在给定个数情况下,需要大量的物理层面的量子比特去生成一个逻辑量子比特;还有另一种量子比特在抗噪声方面表现更好,当然也意味着错误率非常低。但他们在物理层面上并不符合比例,没法把他们大量地放在一起,只能做到将几十个放在一起。
我们真正想要的是同时具备这两种优点的东西,这就是微软团队所带来的。我们正在尝试做出我们所说的拓扑量子比特。它既在尺寸比例上严格符合我们包装的比特数量,同时又有非常非常低的错误率。
曾经有一段时间报纸上说世上只有 12 个人理解相对论,我不相信曾经有过这样的时刻。可能曾经有一段时间只有一个人理解,因为在他写论文之前,他是唯一一个明白相对论的人。当人们读了这篇论文之后,很多人以某种方式理解了相对论,不过肯定超过了 12 个。
另一方面,我觉得我可以肯定地说,没有人理解量子力学。现在我要告诉你们它的自然行为是什么样的,如果你承认了,也许它确实就是这样表现的。你会发现她是一个令人愉快、令人着迷的东西。我们要讨论一个很有趣的物质状态,它是在 1937 年被 Ettore Majorana 提出的,在 19 世纪末被 Alexei Kitaev 开发成一种计算方式,然后 Alexei 和在微软的 Michael Friedman 将拓扑量子计算的概念结合起来,使用它来构建高保真的量子位,同时是成比例的。
六、Station Q 团队与准拓扑粒子
我们在 2006 年建立了 Station Q 团队,该团队致力于实现拓扑量子计算机的目标。在 2012 年 我们在世界上第一次证明了我们制造出了准拓扑粒子。同时在实验室中观测到了这个粒子,它有着我们所期待所想要的特性。在 2018 年,我们正在建造一台大小可控的商用量子系统,并以此解决当下一些无法解决的问题。
所以物质的拓扑状态到底是怎么回事?
拓扑状态其实和叠加态有关,就是同时既是 0 又是 1。假设我们有一条很长很细的纳米线,细到只能排列单电子。在这电子都有实部和虚部,小小的矩形就假设为电子。
在任何一处,我可以让一个电子自旋向上,也可以让另一个电子自旋向下。所以这一行有两个电子沿着导线从一端移动到另一端。如果使用合适的材料同时达到极低的温度,会得到超导体。所有的超导体就是将自旋向上和向下的电子结合成对,形成一个叫做 库伯对 的东西。
此时电子对就像光子一样,它们没有阻力,这样就得到了所有超导性的特性以及它们所能做的一切。
我们所做的是使用一种不同的物质,同时加上强磁场,这种物质是高自旋轨道耦合的,最终所做的其实还是配对,但是以 45 度的角度配对。
七、如何构建稳定的拓扑系统
你会注意到在每一端都有一个实部和一个虚部。所以有了这条长线,实际上,这线上一端有半个电子,另一端有半个电子,但半个电子是不存在的,所以它们一起组成了一个电子,即使他们在空间上被分隔了。
八、退相干现象
这使得所构建的拓扑量子比特对噪音扰动抗性极强,原因在于,噪音会引起一种叫做退相干的现象。量子状态会因为被宇宙中的某些东西观察到而坍缩。记得薛定谔的猫么?当有人朝盒子里看的时候,猫要么是死的要么是活的,已经不再是量子态了。当然,并不是真的有人在往盒子里看,而是宇宙中间物质的相互作用。在这呢,就是一个流浪的粒子或者其他的扰动都可能击中这个系统。如果它击中了左边的实部,那么他没有击中右边的虚部,所以部分的信息保持了一致。
如果我们建立一个有一点冗余的系统,它将在计算状态中保持一致,我们不会丢失量子比特,就是这个想法形成了这些稳定的拓扑系统。这有点像用粉笔写字和用绳子打结表示字的区别。
如果来了场暴风雨,风都吹在这两个东西上,粉笔字就这样消失了,它们就这样被冲走了,但是绳结依然存在。
这就是两者的拓扑差异,这就导致了所有的不同。基于这个产生了一个可以持续分钟级的量子比特, 然而其他的量子比特的寿命要短好几个数量级。
它跑得很快,所以你可以用它制造一台电脑,但是纠错成本可能只是 10 的 1 次方的冗余量子比特,而不是 10 的 3 次方到 10 的 4 次方,那需要更多的量子比特。所以物理量子比特才是我们用作构建系统的。但是逻辑量子比特才是那个运行起来仿佛没有噪声扰动的,逻辑量子比特才是被完全错误校正过的。
如果我们好好看看这张表,会发现:
如果我们需要一百个逻辑量子比特,可能只要构造一千个物理量子比特。如果别人使用不同的技术,可能要去构造十万或者百万级的物理量子比特。话说回来,如果要做量子计算,其中一件要去做的事,就是去做逻辑门。在拓扑中这等同于去编制或者将粒子在相互之间移动,这是非常难实现的。
九、基于测量的量子计算
我们想到了一种技术,这种技术还要归功于 1588 年英国与西班牙舰队的战役。
如果你可以把风投射到两个方向,实际上你可以顺风航行。因此,如果有一个龙骨和一面船帆,就能改变风向,这样就能真正地顺风航行。在风中航行并移动的这个矢量在物理学中被称为投影。投影其实就是测量的另一个说法。实际上可以对不同方向的量子比特进行测量,然后通过旋转达到移动他们的目的。这就是我们所做的,我们把这个方法称为基于测量的量子计算。
十、以马约拉纳费密子构建 t 门
如果我们取量子位的定义,在这个例子中,红色的小点是这些马约拉纳费密子。这些是我们制造的准粒子,其中的四个组合在一起形成了一个量子比特。
我们现在可以测量这两个定为 z 方向。
把另外两个定为 x 方向。
把另外两个定为 y 方向。
现在我们可以通过成对的测量,将量子比特移到 8 个不同的方向上。问题在于仅有这八个方向并以此做通用计算是不够的。我们缺少一个门,叫做 t 门,或者π/ 8 门。我们没有办法直接从马约拉纳费密子制造出来。不过我们有办法从坏的 t 门中创造出好的 t 门,只要我们能够做出近似的 t 门。
就是这些虚线的蓝色方框。在这个例子中我们就可以把这十五个连接起来,然后通过一段误差校正代码,以此做出一个更好的 t 门。换句话说就是量子比特比刚开始的时候更好了。然后可以把它们叠加起来。
这还有些别的代码,关键点就在于,这项被称为魔态蒸馏的技术使得拓扑计算机能够更加普遍。
十一、模拟电路
这也是我们在这里展示的第一个例子,关于我们如何使用软件堆栈来分析这些问题,同时制造我们所要使用的电路,还能模拟这些电路。
这是一个手绘电路,如果我们取实际的代码,让其通过系统,然后画出电路,我们就得到了计算机化的版本。但更重要的是,把其中的门转换成基于测量的量子计算。现在我们在整个系统中得到了单量子比特和双量子比特的测量结果,同时用额外的量子比特来执行我们需要的测量。这就是整个电路。
现在我们将从测量中获得输出并应用到我们在实验室中构建的实际设备中。下面这副图是一个真实的循环量子比特的例子。
下图是我们在哥本哈根所构建的图例。
然后我们可以把这些量子位连起来,做一个量子模拟来测试这个算法的效果如何。如果我们用不同的体系结构,不同的几何图形来设计这些量子比特,最终得到的就是这些各方各面的结果,关于他们的效率如何,电路是如何运作的,他们对噪音的抗性,等等。
这将在最后关于量子开发工具包,和微软的用来构建这些系统并模拟它们软件中继续讨论。
十二、着手构建量子系统
现在已经到了研究部分告一段落的阶段,是时候要开始动手建造了。但建造一台完整的比例可伸缩的量子系统涉及到很多东西。我们需要考虑到室温,要从 300 开一直降到 15 毫开,然后一直保持在这个温度,要知道这个温度比外层太空还要冷一百倍,可以看出仅仅让信号从上至下传输就已经很困难了。
右边展示的东西我们称其为稀释制冷机,就是这台仪器能够将温度从 300 开降到 15 毫开。可以看到这里所有的电线都是用来控制量子比特的,这非常得困难。你会发现经典的电子设备在这条轴上也有容身之处,而且相比外面室温环境,它们的工作更有效率。低温计算机的运行温度在 77 开尔文 ( 液态氮的温度 ) 和 4 开尔文 ( 液态氦的温度 ) 以下,量子计算机的温度则控制在 15 毫开尔文。
因此,在我们的系统中有三个抽象层次,最下面是量子硬件,中间是量子机器代码,然后是编译的量子算法,并找到通过这个层叠向下执行的方法。
十三、微软量子开发工具包集成 VisualStudio 以及仿真模拟
它包含一个完整的量子编程语言,称为 Q#。它被集成到 VisualStudio 中,并在仿真级别上支持完全调试。你可以在本地和云模拟器上实际运行量子算法,看看在未来的量子机器中它们将如何工作。另外还有一个扩展库,示例和文档。
在最后提供一个网址,在那里你可以下载所有这些内容,并自己实际操作。
让我举个例子。
这相当于经典的 Hello World 程序,在这个例子中,每个人都从 teleport 代码开始。Alice 有一个消息,她想稍后传送给 Bob,事实上,Alice 稍后会传达信息。她还没有这条信息,但要注意,他们要交换一个信息。所以 Alice 和 Bob 将使用一个量子位,使他们纠缠在一起,然后 Bob 将要离开,可能是天涯海角。然后 Alice 会收到信息,把它发送给 Bob。 Bob 马上就会得到他的信息。他说,等一下。一瞬间,他就在天涯海角。
那么在相对论中,会如何呢?请期待下集。
视频原址: https://cloudblogs.microsoft.com/quantum/2018/06/01/achieving-practical-quantum-computing/
雷锋网雷锋网 (公众号:雷锋网)
。