干货!从基础到进阶,长文解析微软量子计算概念和算法(下)
雷锋网按:本文为雷锋字幕组编译的微软量子计算短片,原标题Achieving practical quantum computing,作者为MICROSOFT QUANTUM TEAM。
阅读上篇请点击此处。
翻译 | 杨惠淳 程炜 字幕 | 凡江 整理 | 余杭
在相对论中,消息会马上到达,但 Bob 不能真正地看信息,理解它,直到 Alice 向他发送另外两条经典的信息。如果将这两条经典信息加密,则需要将它们解码。经典信息的传输速度比光慢。因此 即使数据可以快速移动,信息却不能。我将通过这一步,展示它是如何工作的,并从线性代数的角度来说明矩阵是如何使用的。所有这些都是非常简单、直接的线性代数,可以说,这之中没有什么神秘的。
左边的矢量是 100% 的 0 状态,这是 α;不存在 1 状态,这是 β,所以有两个量子位是 0。如果将它们相乘,得到它们的张量积,我可以把两个量子位看成 4 个状态,它们都在 00 状态,而不存在 01 、10 或者 11 。它们是向量的四行,让我们从那里开始。
我们有两个量子位,它们都处于零状态,现在要应用一个叫做 Hadamard 的门,它将把量子位进行翻转。也就是说,现在量子位有 50% 的可能性是 0 或 1。我们在这里做的是显示第一个量子位,它可能是 0 或 1,但是第二个量子位仍然是零。观察向量,可以计算得到,为保证计算后长度为 1,需要除以 2 的平方根。
因为是统一的,所以保证向量的长度总是保持不变。现在展示一个异或门,叫做 CNOT,CNOT 会把量子位纠缠在一起,所以现在它们要么是 00,要么 11。
如果我测量量子位,但在这一点上,我不知道我得到 50% 的可能性是 0 还是 1,但是无论我得到的量子位是什么,它一定会给我同样的值。在一次测量中,如果我测量的结果一个为 0,另一个也将是 0;如果我测量一个为 1,另一个也为 1,不管它们在宇宙中哪个地方,同样的事情总会发生。
现在这个消息进来了,这是我们的 a 和 b 量子位。
我们现在要用三个量子位来代表它,所以我们把它乘进去,显示 a 和 b 的位置。我们要用 Alice 的量子位与它纠缠,现在纠缠完成。
如果你注意到,它也与 Bob 的量子位纠缠在一起。但如果鲍伯现在测量,他有 50% 的机会获得两种不同的值, 但他不知道哪一个才是正确的值。现在我们来分析 Alice 的量子位,同时测量消息量子位。Alice 是发送一方,这给了我们两位的经典信息。所以我们得到的是鲍勃的测量可能是 ab 或 ba,但是既然我们已经测量过了,我们就知道了修复量子位的正确方法,所以我们要发送两行经典信息,基于它们,要么执行 X 要么执行 Z 。得到量子位为 ab 状态 ,这正是我们发送的信息。
我不想太过深入,这有太多的工作要完成。但我想表明,我们所做的只是将每个操作符的矩阵相乘,我们得到了答案。在获得 Alice 的两位经典信息之前,Bob 不知道是 ab,还是 ba。所以他没有打破相对论,这很酷,我们可以用经典的方法进行所有的模拟。但是当我们把量子位加在一起时,你会注意到状态向量越变越大,事实上,每增加一个量子位 ,它的大小就会加倍。
这里存在指数增长问题。比如说,你的笔记本或台式机上有 30 个量子位,也许是 40 个,加上云中的量子位。但如果需要 50 个量子位,就不能在经典机器上模拟,即使是在这个星球上的所有经典机器加在一起也不能一起模拟,因为没有足够的内存完成它。
让我们来看看实现远程传输所需的实际软件。
我们将创建一个分配量子位的例行程序
现在有一个 Alice 的量子位,Bob 的量子位,和一个可以用于纠缠的临时量子位。我们将采取临时量子位并应用 Hadamard 门,然后用 Bob 的量子位来纠缠它,使用受控的非门或者 CNOT 。对于 Alice 的量子位,则采用相同的方法 。但是我们要把 Alice 的量子位翻转。然后我们来测量一个量子位,它决定我们是否需要使用一个 X 门,并测量出另一个量子位,观察是否需要使用 Z 门。
有趣的是,实际上高级编程语言看起来与其他的高级编程语言是一样的。任何一个传统的程序员对它都应该是很熟悉的,区别在于这种语言理解量子,它了解所有需要发生的错综复杂的事情,但是它也能理解经典方法。
这是一个经典的关于经典比特位的 if 语句。
在这种情况下,在我们测量 Alice 的量子位之后,它是经典的。因此,我们实际上可以在量子算法中混合一个经典的 if,它对任何标准的传统程序员理解如何做量子算法,并且非常快速地构建非常复杂的算法大有裨益。
因此 Q# 开发套件是一个完整的,可扩展的量子平台的一部分。
Q# 开发套件构建冷冻控制系统
从 Q# 代码开始,我们提供了用户可扩展的量子算法库,有一个经典的主机程序可以完成所有的经典部分,两者可以连接在一起。然后,我们有一个运行在云中或本地的叫做 Tracer 的系统 ,它可以让你做大量的量子算法,当然,你不能通过经典的方法运行它们,但是它会分析它们。告诉你多少门操作,噪声会如何影响它,什么类型的门会工作,有多少并行运算等等……
整个系统将建立在冷冻控制之上,并在量子计算机上运行,如果你对冷冻控制方面感兴趣的话 , 你可以看看我们的 Q# 代码,它是开源的,并且运行实验室设备来运行先前展示的稀释制冷机。
我们最初于 12 月 11 日发布了 Q# 开发套件,并且已经对 Windows Mac 和 Linux 平台上的软件进行了更新,它支持 Python 互操作,也符合 OSS 标准,所以,你可以把微软公共开发工具包下载到 VisualStudio 中。
它也可以直接在 Github 上使用,这是一个在 mac 的 Visual Studio 上运行 Q# 开发套件的例子。
它建立了一个量子计算算法,事实上,这是编辑器内部的传送。
这里有一个在 Jupiter Notebook 中 Python 中断的例子。
运用量子仿真进行量子层析
它显示我们可以实际运行量子仿真,得到输出。在这种情况下,沿着这个方向做量子层析。
因此,我想举一个密码方面的例子,只是为了显示如何构成电路,以及如何分析。
这是一个受到光学启发的算法,它显示了如何确定一个函数是否被移位,它被移动了多少。然而,这不是一个简单的转变,实际上是转移到超立方体之上。这是很难发现的,这使得它对密码学非常实用。
对于这个例子,我们将实现 8 个量子位。所以你看到 16x16,256 个状态代表 8 个量子位。我们将从状态集合左上角的全零状态开始,把所有量子位都叠加起来。 在这一点上,所有 256 种可能的状态中具有相同的可能性。接下来我们要做的是转换非移位函数,一旦它被移动,我们就把它应用到电路上。
你会注意到与移位版本相比,没有移位的版本看起来很不一样,这不是显而易见的改变。因为转移实际上是一个 n 维的转变,可以进行频谱分析,得到移位函数的频谱。现在将它与原始函数进行卷积。当我们撤消频谱分析时,一个状态突然出现,这就是每个维度的变化量。
我们采用了一个小版本,可以在今天的量子硬件上运行它。
左边是 IBM 的,右边是马里兰大学的离子阱,两者都有五个量子位。
然后我们可以对它的工作原理进行分析。
从图中可以看到结果的精准度以及噪声的情况。
量子化学
现在要转到一个我更熟悉的领域,那就是量子化学。
这是描述电子如何在原子或分子中移动的方程式。
所有真正的第一个和是电子可能离开原子轨道的一个轨道,从 q 轨道到 p 轨道,所以它离开 q 来到 P,第二项是两个电子同时移动,所以有两项。
这个看似简单的方程是非常难以分析和模拟的。在一年的时间里 ,我们写了四篇关于量子算法如何做到这一点并进行改进的文章,这是解决量子化学中各种问题的核心,从一种叫做铁氧还蛋白 FE2S2 的分子开始。实际上,能量传输分子,有四条小猪尾巴(指四条半胱氨酸残基),这是非常普遍的,普遍存在于植物光合作用中,也在你的血红蛋白中。它是一个非常重要的分子,但是它含铁, 铁在元素周期表下部。即使在最大的经典机器时代,我们也无法做到这一点。
所以当我们开始做第一篇论文时,我们想用量子算法来做这件事,并使用假设的量子标度,但是要花 240 亿年才能找到答案。不太实用的第一篇文章结束时,这个时间已经下降到 85 万年了,这会好一点,但还是不能商业化。第二篇论文提出的方法需要耗费30 年,至少进入了人类可以衡量的程度。第三篇论文 5 天,这终于可以派上用场了。但是在第四篇论文中,这个时间降到一个小时。
我想表达的是,在实现量子计算机之前,我们有能力改进量子算法并设计新的量子算法。通过模拟,我们可以通过解决一些小问题来告诉我们如何解决这些大问题。通过经典的方法,有些分子类型是我们可以在经典量子模拟器上完成的。
我们看看规模为 30 个自旋轨道,或者 30 个量子位的分子。
那些就是我们可以模拟的,而右边的就太大了。大约 160 左右,我们开始模拟像这样的分子 FE2S2。在我们写第一篇论文,然后是第二篇之前,我们实现了并行算法,通过它们去除了冗余。我们发现了一个最优排序,以减少误差,等等。同时,我们实现了一个量子模拟器,并进行了模拟,我们用液体模拟器得到的线要低得多。
记住这是指数级的,所以这比理论预测得更加高效。对理论家来说,他们花了很多时间研究对于更严格的界限而言,什么是更好的估计。然后我们提出了第三和第四篇论文。正是现在模拟显示给我们的,一切都很吻合。事实上,我们相信在一个小时左右的时间里,真的可以模拟这些大分子。
Fe2S2 听起来不太大,但它是分子的一类,同一类是我在大型超级计算机上显示的固氮分子,它有六个铁和钼,它仍然需要大约相同的时间长度。像化学材料,它非常适合在量子机器进行模拟,但是由于它们在晶格中有规则的结构,所以实际上更容易模拟。因此有一个简单的模型叫做 Hubbard 模型,它被用来模拟许多项,今天在经典机器上有很多种类的材料,但是许多我们感兴趣的材料不包括在内。 因为所有格子都是一样的,我们只需要挑选一个,并相信它是特别的,然后对剩下做平均 只在本地将它与剩下的进行交互。如果进行平均,整个系统就变成了经典系统。不同的是,在每一个可能的频率上 ,一个电子可能在我们感兴趣的点上跳上跳下。所以我们将采取一个单一的点,这可能相当复杂。它可能是我们以前的量子化学模型,因为这是我们关心的东西。然后我们来模拟电子如何从这个怀疑库中挑出杂质。
动态平均场理论
因此,所有这些都能够模拟材料中非常复杂的分子,这是一种标准的技术,它在小型计算机上广泛应用,但是我们可以在量子机器上进行更大规模的仿真,因此产生了动态平均场理论。当我们制造这些平均场时,保持了量子性。有趣的是,我们可以假定一个模型并在量子计算机上运行它。
这是一个典型的 AI 型循环,一种经典的量子模型调整方法。在这里得到的不仅仅是一个单一的输出,一个数字。记住,经典和量子之间的区别是,量子方法我们只得到一个数字;通过经典方法训练得到的是一个模型。我们可以在量子计算机上高效地加载模型,很快就能得到各种问题的答案,包括基态、激发态、催化率、扩散,各种各样的东西。
既然我们有一个可以有效加载的模型, 那么有另一种方法来解决这个问题。建立一个模型,而不是取整个描述系统的方程的整个哈密顿算子,我们取小块,然后把它们相加,通过这些小块,我们仍然可以建立一个模型,以此测试量子。
那有什么好处呢 ?这些小块只有很少的门和很少的量子位,因此可以在很短的时间内保持连贯。这使得它在短期内运行小规模或所谓的 NISQ 含噪声的中等规模量子计算机成为可能;不好的部分是,因为我们没有整个系统的连贯性,实际上它比用相位估计这样的技术更糟,这就是我们如何做量子化学和较早的量子材料。但这对于使用物理而不是逻辑量子位的小机器来说具有是有用的,它们具有很短的相干时间。
你会听到很多关于变量化技术的知识,在失去连贯性之前,我们只需要几千个门。我们可以用很多类型的量子位来实现。
中等规模的量子计算如何造福人类
所有这些结果都让我们相信中等规模的量子计算机可以解决一些非常有趣的问题。实际上会影响我们在这个星球上所做的,我们之前所展示的固氮或者氮分子,就是今天制造肥料的一个例子。我们使用地球上每年产生的 5% 的天然气,这是地球总能量输出的 3%。在许多地方,人们甚至买不起肥料 ,因为它太贵了。但我们知道植物根部有一种厌氧细菌,每天都在低温、低压、低能量下进行这个过程。利用量子计算机,我们有希望建立一个合成的固氮分子,可以很容易地制造便宜的肥料;同样的问题是碳捕获,我们可以做一种油漆,你用它漆在世界所有的东西上。它从空气中吸收碳,这将会缓解全球变暖。在材料方面,我们在全国的输电线路中损失了 15% 的能源输出。我们可以制造无损的电力线,如果我们能制造室温超导体,我们可以制造更好的电池,智能材料。还有很多例子。
当然,作为微软,我们关心机器学习。有很多事情可以通过更好的模型,更高效,更好的分析来实现。但是它们需要一千个逻辑量子位,而不是一两百个量子位的量子计算机,所以它们短期内不会出现,但它即将到来,我们可以做的事情是用它来帮助全世界的机器学习。当我们把所有这些联系在一起时,它给了我们希望,量子计算实际上会让我们以积极的方式影响这个星球上的生命,并为我们目前无法企及的问题提出解决方案。
量子计算梦之队
今天,我们组织了一个全世界的梦之队。
我们在欧洲、澳大利亚、美国都有实验室, 我们花了很多时间和一个由世界上最优秀的人组成的多样性的团队一起工作。我会给你一个 URL 地址,在那里你可以得到量子开发套件。
你会找到 Q# 开发套件,但你也会发现我们的程序的所有信息,我们所有的实验室的链接。 你可以注册一个新闻通讯,当它们出现时你会看到结果,我们会及时发布。
视频原址: https://cloudblogs.microsoft.com/quantum/2018/06/01/achieving-practical-quantum-computing/
雷锋网雷锋网 (公众号:雷锋网)
。