转自:http://blog.51cto.com/peterhs/1104560
本文翻译自D-Wave公司网站
www.dwavesys.com/en/dev-tutorial-intro.html
D-wave公司在2007年就声称实现了128位的量子计算机,并会在今年推出512位的量子计算机。
传统计算机需要大量穷举试算才能求解的数值优化问题,在量子计算机中利用量子的物理特性可以瞬间求解。这种数值优化问题往往又是数据挖掘的核心问题,量子计算机的进步一定会极大的推动人工智能机器学习领域的进步。
D-wave公司的这篇文档深入浅出的介绍了量子计算机的核心原理,介绍了量子计算机原理的优势。赶快学习一下最有潜力引领下一轮科技浪潮的技术吧。
内容提要
· 1.1 - Conventional computing 传统的计算机原理
· 1.2 - A new kind of computing 一种新的计算机原理
· 1.3 - The light switch game 电灯开关游戏
· 1.4 - How does quantum mechanics help? 量子理论是如何发挥作用的?
· 2.1 - It's a math expression - who cares?这个代数表达式有什么用?
· 2.2 - The energy program 能量程序
· 2.3 - Quantum computers can LEARN 量子计算机的自我学习
· 2.4 - A computer that programs itself 一个可以自己编程的计算机
· 2.5 - Uncertainty is a feature 不确定性是量子计算的特点
SECTION 1第一部分
1.1 - Conventional computing传统计算机原理
要理解量子计算机,先了解传统计算机是很有必要的。现在各种类型的计算机的核心都是CPU中央处理器,它可以完成简单的数学运算,CPU性能主要依据是芯片处理代数运算的速度。执行简单运算的速度快它们就可以完成更复杂的高层任务。这部分运算功能可以简单描述为图1中的过程。
图1:传统计算机中的数据流
虽然传统计算机能非常好的解决很多问题,但是仍有不少任务是传统计算机难以处理的。比如:图像识别,自然语言的理解等,还有其他一些需要机器学习的特定任务。即便过去数十年人们在这些领域投入了巨大的努力,我们的进度仍然缓慢,一些基本的解决方法仍然需要巨型机耗费大量的电能和空间来运行。
我们提出了这样一个问题:有没有另一种从根本上不同的计算机系统?为了更好的解决这些棘手的问题,从完全不同的原理来实现计算机,,应该如何构造这种全新的计算机呢?
1.2 –一种新的计算机
量子计算机完全不同于传统计算机。传统计算机将数据存储为多个位上的0和1,量子计算机改变了这一切。用来理解数据位内容的物理原理是完全不同的,为了制造这样的计算系统,我们需要不同的处理器设计方式、架构。最终在这种系统上的变成方法也是不同的。我们首先会讲解“量子位”qubit是如何取代传统计算机的“数据位”bits的。
1.3 – 电灯开关游戏
要开始学习量子计算机先要理解传统数字计算机,我们用电灯开关游戏来演示这个原理。
电灯开关游戏要寻找到一套最佳的开关组合,这里是说明这个问题的图片:
图2:电灯开关游戏
让我们想象每个电灯开关都有一个对应的系数,这个系数是设置好的你不能改变的。我们称之为‘偏差值’。你需要选择每个开关是开(对应+1值)还是关(对应-1值)。然后我们用偏差值乘上你选择的状态值,这样得到一个值。游戏的目的是取得最低的这个值,为了公式表达我们叫偏差值hi ,状态值 Si.
图3:如何求电灯游戏的最终得分
所以根据我们为每个开关选的状态,我们会得到不同的得分,你可以尝试解一下这个题目。你很容易就会发现其中的规律,并找到答案:
图4:一组游戏的解
我们发现把有正偏差值的灯关上,把负偏差值的灯关上就会得到最小的得分。这是个很简单的规则,你可以将之应用到更多开关的题目上上以得到最小的得分。
好,我们让问题更复杂一点。现在想象一下开关变成结对出现的,每个结对上都有自己的偏差值Ji,这个偏差值会乘上这个连接两端开关的状态值并计入得分。
得分的计算公式在扩展后变成了这样:
图5:增加了连接偏差值的新计算公式
现在判断是否应该打开开关就变得非常难以判断了,因为相连的开关状态会影响到连接上得分的大小。即使是只有两个开关的情况你也很难根据‘设置状态为偏差值符号相反’来取得最低的得分(你可以试一下)。当开关数量变多时,你将会发现要取得最低的得分是非常困难的了。
图:6加入连接值的开关游戏产生了一个会‘互动’的开关网络
1.4 –量子计算会提供什么样的帮助?
只取出其中一组连接的开关,你可以尝试各种开关组合,只有四种可能: [ON ON], [ON OFF], [OFF ON] 或 [OFF OFF]。但是当你加入更多的开关时,可能的组合数会成指数的增长:(switches开关数possible answers可能的组合数)
图.7 开关游戏的指数性增长
你已经看到这个游戏为什么不再有趣了。事实上对于最强大的计算机也是难于解决的了。在内存中存储所有的组合可能,并且在传统的处理器中处理这些组合的积分结果,都会花费大量时间。当有500个开关时,即便宇宙毁灭时也计算不出所有的组合。
量子原理可以帮助我们解决这类问题。量子计算机的基础是你可以用量子的叠加状态存储相当于若干传统数据位bits的信息。你可以把这个想象成量子位qubit并没有确定的开关状态,一些人将之称为同时处于开关状态。你可以将这个比喻应用到电灯开关游戏上,就是量子位对应的开关可以同时处在开关的两个状态上:
图8:一个量子位对应的电灯开关,量子可以存储的叠加状态,是还没有决定开关的状态,也可以想象成同时既是开又是关的状态。
现在我们考虑一下之前的一堆开关,但是存储在量子计算机的内存当中(请注意开关的偏差值和积分还没有计算)。
图9:一个由连接的量子叠加态组成的开关网络,得分最低的组合肯定被包括在其中了
因为所有的开关都同时处在两种状态,所以我们知道得分最低的正确的开关组合肯定已经被包括在这种状态中了,只是我们不知道具体的组合是什么。但是不要急,量子原理将会帮我们找到答案。D-wave公司的量子计算机允许你使用这样的‘量子态表达’,然后提取出其中得分最低的开关组合。下面我们将会介绍那部分的工作原理:
图10:计算机从量子叠加态开始得到传统的确定数据位的过程,在这个过程中我们就找到了问题的答案。
你先将系统置为从之前描述的量子叠加态,然后慢慢地让量子计算机关闭量子的叠加态效应,同时将条件中的偏差值赋给相应的开关和开关之间的连接(之前的H,J值)。当你进行这个操作时,量子开关脱离量子的叠加态并进入传统的开关状态,不是开就是关。最终量子计算机中的量子机制帮助这些电灯开关最后找出得分最低的组合。即便有N个开关和对应产生的2的N次方个开关组合,量子计算机可以帮我们找到得分最低的那一个组合,赢得这个开关的游戏。量子计算机可以一步找到所有组合的游戏积分表达式中最低的那个组合,游戏积分的公式如下:
E(s)=∑ihisi+Jijsisj
这对于传统计算机是几乎不可能的。
SECTION 2第二部分
2.1 - 计算出这个公式有什么意义?
D-wave 公司制造量子计算机并不是为了解决这个自讨苦吃的电灯开关游戏。这个游戏代表的寻找到一组最优的二进制变量组合的算法,是解决许多技术应用的核心问题。下面的图片展示了一些场景。很多科学问题的关键就是这样的优化问题(找到某个对应着现实问题的数学等式的最优解)。
图11:一些典型的寻找最优的解的应用场景,它们的核心都是寻找到最佳的“电灯开关组合”,量子计算机可以非常有效的解决这些问题。
2.2 - The energy program“能量程序”
为了理解这些问题是如何转化成电灯开关游戏的形式,让我们再看一下量子计算机是如何编程的,我们回忆一下图1,一个确定的数据位bits组合和另一个数据位bits组合在运算处理其中进行运算,而在量子计算机中,我们用一个状态不确定的量子位组合作为输入,所以处理器中的运算方法也是截然不同的。图12中一组状态不确定的量子位qubit被初始化成不确定的量子叠加态,而这次使用一个能量程序而不是传统的逻辑程序来对它们进行计算,量子位qubit在运算的开始是不确定的,而在运算结束的时候它们都会停在-1或+1的状态。什么是“能量程序”呢?能量程序对应的就是电灯游戏里的偏差值也就是之前公式中的H和J。 在开关游戏中,我们说H和J是提供给你的条件。而现在我们了解到H和J实际上就是量子计算实际要解决的问题的条件。
图12:量子计算机的基本操作就是提供能量程序(一系列的h和J值),然后让量子计算机确定所有量子位对应的最终确定值(+1或-1)。
编制包含一系列H和J值的能量程序——也就是将你关心的实际问题转换成量子计算机能解决的问题——是非常困难和消耗时间的。这个过程类似于使用机器码来给你的电脑编程!幸运的是,有一些更好的使用量子编译器的开发方法。这个过程和示例会在QC Software Tutorial 做详细介绍,上手教程在这个链接里 applications programming 。
2.3 -量子计算机的自我学习
用经验数据训练计算机解决实际问题的过程被称为机器学习。机器学习是人工智能的一个分支领域。大多数数据处理代码都是相对静态的-用同样代码不断处理新的数据,每次都会产生相同的错误。通过机器学习我们可以设计出能够修改本身代码的算法,从而处理之前从未出现过的数据。
那些需要机器学习和在不确定情况下做出决策的任务非常适合在D-wave的量子计算机上运行。举个例子,想象需要一台计算机从几张图片中识别出相似的物体。这个任务对于传统的计算机是非常困难的,因为传统计算方法是依赖于严密的逻辑判断的。如果一旦出现一张新的图片,则很难从中识别出新的信息,比如‘这个图看起来像一个苹果’。D-wave的量子处理器就是设计用来处理这种需要高级判断决策的应用。
我们是如何用量子计算机来进行机器学习的呢?举个例子,如果我们想让系统识别一个物体?为这个任务写一个能量程序是非常困难的,即使是使用了量子编译器,我们也不知道如何提取识别对象的关键信息。幸运的是,有一种绕过这个问题的办法,量子计算机有一种自我调节能量程序来适应输入数据的模式。这个模式允许机器在从未处理过类似情况时也能对数据进行准确的预测。下面我们就来介绍一下这方面的原理,具体的例子可以从这里Tutorials 找到。
2.4 –一个自我编程的电脑
为了让系统能够自己调节能量程序,你需要展示大量有代表意义的数据给系统。如图13所示。任务需要计算机判断各种水果图片的不同之处。 为了做到这样,我们向系统展示不同水果的图片(或者说这些图片代表的数据)苹果,树梅,和甜瓜。我们同时也告诉系统每个图片对应的正确答案,这相当于电灯开关游戏中给定了开关状态。当处理分类好的图片时,系统必须找到一个能量程序(图中一开始打了问号的部分),这个能量程序能够最大的满足每次都得到正确的分类结果。如果能量程序会产生很多错误判断,就说明这个能量程序还是需要修改。
图13:训练量子芯片找到正确的能量程序的过程
系统会一直训练能量程序,直到它能够正确处理所有经验数据,这步常称为训练或者学习阶段。
一开始系统会随机的选择一个能量程序 (一组H和J的偏差值)。这肯定会造成很多分类错误,但是没有关系,在我们不断输入训练数据同时,系统会不断修改自己的能量程序以让系统分类正确率上升。一但准确率难以提升了,我们就可以保持住最后的能量程序,并将它作为我们最终的模型去识别区分新的未知数据(图14)。
在机器学习领域,因为我们想计算机输入了大量正确已知经验数据,所以这套方法被称为有监督机器学习算法。而对于其他的无监督机器学习算法,下面的教程会做进一步深入的解释。
图14:在得到一个好的能量程序后,算法就可以对新的图片进行分类。这通常叫做数据测试阶段。
2.5 -不确定性是量子计算的特点
量子计算机另一个显著特点就是基于概率的输出结果,计算机会输出多个结果。一些是正确的,而另一些不是。这看起来并不是一件好事,一台计算机在你求解时返回多个答案这看上去像是个Bug!但是在量子计算机中返回多个答案,给我们提供了关于答案可信度的重要信息。使用上面水果识别的例子,如果我们向计算机提供同一张图片100次,然后计算机返回苹果这个答案100次,我们就可以非常确信内容就是苹果,但是如果计算机返回50次苹果和50次树梅,这就意味着计算机对判断的结果并不确定,而如果你把树梅和苹果放在同一个图片中输入那个答案就是非常正确的了!这种不确定性对于设计一个能够识别复杂情况并作出判断的计算方法非常重要。