精华内容
下载资源
问答
  • 量子计算机编程Quantum computing is one of the most rapidly advancing technologies. Many companies and research labs are racing to deliver functional quantum hardware to the market as soon as they can....

    量子计算机编程

    Quantum computing is one of the most rapidly advancing technologies. Many companies and research labs are racing to deliver functional quantum hardware to the market as soon as they can. It is one of those fields where every little bit of progress is a significant advancement.

    量子计算是最快速发展的技术之一。 许多公司和研究实验室都在竞相将功能量子硬件尽快推向市场。 这是每一个进步都是重大进步的领域之一。

    At the moment, there’s no perfect quantum computer that is capable of running promising algorithms, such as Shor’s and Grover’s algorithms. However, current quantum machines are advancing rapidly. IBM speculates that during the next decade, quantum computers will offer an undeniable advantage by solving many problems that are unsolvable on a classical computer.

    目前,还没有完美的量子计算机能够运行有前途的算法,例如Shor和Grover的算法。 但是,当前的量子机器正在Swift发展。 IBM推测,在未来十年中,量子计算机将通过解决传统计算机无法解决的许多问题而提供不可否认的优势。

    In 2019, IBM proposed a metric to measure how capable and efficient a quantum computer is (on the hardware side), and they called it Quantum Volume (QV). QV is a number calculated based on different factors, such as the number of qubits in the computer, their connectivity, and the measurement error probability. For us to run real-life-sized algorithms on real hardware, we need a large QV. For reference, the highest QV device owned by IBM at the moment is 32.

    在2019年,IBM提出了一种度量标准,以衡量量子计算机的功能和效率(在硬件方面),他们称其为量子体积(QV)。 QV是根据不同因素(例如计算机中的qubit数量,它们的连接性和测量错误概率)计算得出的数字。 为了使我们能够在真实的硬件上运行真实大小的算法,我们需要一个大型QV。 作为参考,IBM目前拥有的最高QV设备为32。

    On the software side, some researchers predict that the market need for quantum programmers will grow exponentially over the next decade. Companies such as Google, IBM, and Microsoft are putting in considerable effort and a massive amount of funds to train the next generation of quantum researchers/ programmers.

    在软件方面,一些研究人员预测,在未来十年中,对量子程序员的市场需求将成倍增长。 Google,IBM和Microsoft等公司正投入大量精力和大量资金来培训下一代量子研究人员/程序员。

    To program a quantum computer, you don’t need an advanced degree in physics or maths. In my opinion, you just need a good imagination.

    要对量子计算机进行编程,您不需要物理或数学的高级学位。 我认为,您只需要一个良好的想象力即可。

    经典与量子编程 (Classical vs. Quantum Programming)

    Image for post
    Canva).Canva制作 )。

    Quantum computers operate based on a completely different paradigm than that of classical computers. Here’s a simple way to think about the difference: In classical computers, you have 0s and 1s. However, on a quantum computer, you have 0s, 1s, and “maybe 0 or 1,” which is also called superposition. All quantum algorithms take advantage of the “maybe” state to show the full power of quantum computers. Programming quantum computers today is somewhat like programming classical computers back in the 1950s — in a manner close to assembly language but with a better syntax.

    量子计算机基于与经典计算机完全不同的范例进行操作。 这是一种思考差异的简单方法:在传统计算机中,您有0和1。 但是,在量子计算机上,您有0、1和“也许是0或1”,这也称为叠加。 所有量子算法都利用“也许”状态来显示量子计算机的全部功能。 今天的量子计算机编程有点像1950年代的经典计算机编程-以接近汇编语言的方式但具有更好的语法。

    That might sound challenging because assembly language is not easy at all. The truth is you can start programming quantum computers if you know the basic gates and what qubits and superposition mean. You don’t need to get deep into the physics to start writing decent quantum code.

    这听起来可能很有挑战性,因为汇编语言一点都不容易。 事实是,如果您知道基本的门以及量子位和叠加的含义,就可以开始对量子计算机进行编程。 您无需深入物理学即可开始编写体面的量子代码。

    Image for post
    Canva).Canva制作 )。

    量子计算机编程的选项 (Options for Programming a Quantum Computer)

    Both companies and research labs have been working really hard to develop a high-level quantum programming language that doesn’t require the programmer to be extremely familiar with quantum physics and quantum mechanics. Right now, there are more standalone quantum programming languages and quantum libraries for classical programming languages than you might think.

    公司和研究实验室都一直在努力开发一种高级量子编程语言,这种语言不需要程序员对量子物理学和量子力学非常熟悉。 目前,比您想象的更多的独立量子编程语言和用于经典编程语言的量子库。

    So, your options will be either to program on a quantum assembly level, use a library for quantum computing through a classical programming language, or use a pure quantum programming language. I will list the most known/active options for each of the categories.

    因此,您的选择将是在量子汇编级别上进行编程,使用通过经典编程语言进行量子计算的库或使用纯量子编程语言。 我将列出每个类别中最知名/最活跃的选项。

    Image for post
    Canva).Canva制作 )。

    汇编级量子编程 (Assembly-level quantum programming)

    • QX Simulator: This simulator is built to simulate the behavior of a universal quantum computer. It allows the programmer to design and simulate their quantum algorithms. To implement an algorithm using QX Simulator, the programmer needs to describe the flow of the algorithm in terms of quantum assembly language (QASM).

      QX模拟器 :此模拟器旨在模拟通用量子计算机的行为。 它允许程序员设计和模拟他们的量子算法。 为了使用QX Simulator实现算法,程序员需要用量子汇编语言 (QASM)来描述算法的流程。

    带有量子库的古典语言 (Classical language with quantum libraries)

    There are many options to use a classical programming language to write quantum code. I will sort them from most to least popular.

    使用经典编程语言编写量子代码有很多选择。 我将把它们从最受欢迎到最不受欢迎进行排序。

    • Qiskit: Qiskit (Quantum Information Science Kit) is a Python library build developed and maintained by IBM Research in 2017. It is the most popular and widely used quantum programming library. One of the reasons Qiskit is popular its very active and thriving community. Also, you can run your codes written in Python on actual IBM quantum computers.

      Qiskit: Qiskit(量子信息科学工具包)是由IBM Research在2017年开发和维护的Python库构建。它是最受欢迎和使用最广泛的量子编程库。 Qiskit之所以受欢迎是因为其活跃而繁荣的社区。 另外,您可以在实际的IBM Quantum计算机上运行用Python编写的代码。

    • Cirq: This is an unofficial Python library developed by Google developers to write and run tests on Google’s quantum computers. You can use Cirq to write and simulate quantum algorithms. However, Google doesn’t allow anyone to run code on their devices.

      Cirq :这是Google开发人员开发的非官方Python库,用于在Google的量子计算机上编写和运行测试。 您可以使用Cirq编写和模拟量子算法。 但是,Google不允许任何人在其设备上运行代码。

    • Pyquil: A Python library built by Rigetti to write and implement quantum algorithms on Rigetti machines using a quantum instruction language called Quil (also developed by Rigetti). Quil is similar in syntax to QASM.

      Pyquil 由Rigetti构建的Python库,用于使用称为Quil的量子指令语言(也由Rigetti开发)在Rigetti机器上编写和实现量子算法。 Quil的语法与QASM相似。

    • Scaffold: Moving on from Python, Scaffold is a C++ library that can be used to write and run quantum algorithms on a classical machine.

      脚手架 从Python出发,Scaffold是一个C ++库,可用于在经典计算机上编写和运行量子算法。

    • Strange: This is a Java API used to write and run quantum algorithms. Strange is distributed through traditional Java distribution channels, which makes it easy to use by leveraging Maven or Gradle.

      奇怪 这是用于编写和运行量子算法的Java API。 Strange是通过传统的Java分发渠道分发的,因此可以利用Maven或Gradle轻松使用。

    There are many more quantum libraries based on classical programming languages, but many of them are outdated or their development stopped at some point.

    还有更多基于经典编程语言的量子库,但其中许多已经过时或在某个时候停止了开发。

    量子编程语言 (Quantum programming languages)

    To move away from classical programming languages and build standalone quantum languages, researchers have worked and developed quantum programming languages that are close in syntax to famous classical languages. This eases the process of moving from classical to quantum programming. Among these languages are:

    为了摆脱古典编程语言并构建独立的量子语言,研究人员已经研究和开发了与著名古典语言在语法上接近的量子编程语言。 这简化了从经典编程到量子编程的过程。 这些语言包括:

    • Q#: This is a quantum programming language developed by Microsoft to write and execute quantum code. It’s part of Microsoft’s Quantum Development Kit (QDK). The QDK includes a separate simulator and circuit optimizer.

      Q# :这是一种由Microsoft开发的用于编写和执行量子代码的量子编程语言。 它是Microsoft量子开发套件(QDK)的一部分。 QDK包括单独的模拟器和电路优化器。

    • Quipper: This is an embedded quantum programming language that supports functional quantum programming and allows the programmer to describe their algorithms on a higher level than assembly languages. Quipper also includes seven implemented quantum algorithms from current theoretical research.

      拆箱机 这是一种嵌入式量子编程语言,支持功能量子编程,并允许程序员在比汇编语言更高的层次上描述其算法。 Quipper还包括从当前理论研究中获得的七种已实现的量子算法。

    • Sliq: This is the newest quantum programming language, released earlier this year and developed by researchers at ETH Zürich. Sliq offers a high-level representation of quantum algorithms and has a syntax similar to Python and C++.

      Sliq :这是最新的量子编程语言,今年年初发布,由苏黎世联邦理工学院的研究人员开发。 Sliq提供了量子算法的高级表示,并且具有类似于Python和C ++的语法。

    如何开始 (How to Start)

    With so many options, you may get overwhelmed when trying to choose where to start your quantum journey. Here’s my advice: Start with a library built on a classical programming language you’re used to. Once you’re comfortable with the quantum logic and thinking approach, move to a pure quantum programming language.

    有这么多的选择,当您尝试选择从哪里开始量子之旅时,您可能会不知所措。 这是我的建议:从建立在习惯于经典编程语言的库开始。 一旦您对量子逻辑和思维方法感到满意,请转向纯量子编程语言。

    I would only consider using a low-level language (e.g. QX Simulator) if I want to dig deeper into how a quantum computer works and the dynamics between the gates.

    如果我想更深入地研究量子计算机的工作原理以及各门之间的动态关系,我只会考虑使用低级语言(例如QX Simulator)。

    I started with Qiskit and still use it extensively — not just because it’s written in Python but also because I can run my code on a real quantum computer. Yes, the results are bad now, but it is still an intriguing fact that you can actually run code on a quantum computer.

    我从Qiskit开始,至今仍然广泛使用它-不仅因为它是用Python编写的,而且因为我可以在真正的量子计算机上运行代码。 是的,现在的结果很糟糕,但是实际上可以在量子计算机上运行代码仍然是一个有趣的事实。

    To make things a bit easier, let’s implement the same quantum code using all nine approaches mentioned above. You can inspect the different ways a circuit is implemented and decide which looks more interesting to start with.

    为了使事情变得简单,让我们使用上述所有九种方法来实现相同的量子代码。 您可以检查电路的不同实现方式,并决定从哪一个开始更有趣。

    In most quantum programming now, you build a circuit that applies your algorithm using quantum gates, which are equivalent to classical gates. Let’s try to implement a quantum circuit that creates a superposition between two qubits. To do that, you need to know the magic gate — the one that creates superposition. It’s called the Hadamard Gate. You give it 0 or 1, and it returns an equal superposition of 0 and 1.

    现在,在大多数量子编程中,您将构建一个电路,该电路使用与经典门等效的量子门来应用算法。 让我们尝试实现一个在两个量子位之间创建叠加的量子电路。 为此,您需要了解魔术门-创造叠加的门。 这就是哈达玛门。 您给它0或1,它返回0和1相等的叠加。

    1. Using QX Simulator:

      使用QX Simulator:
    Image for post
    Canva).Canva制作 )。

    2. Using libraries on classical programming languages:

    2.使用经典编程语言上的库:

    Image for post
    Canva).Canva制作 )。

    3. Using pure quantum programming languages:

    3.使用纯量子编程语言:

    Image for post
    Canva).Canva制作 )。

    结论 (Conclusion)

    I am a fan of learning and exploring new things, but I also know that we perform better when we focus our power in learning one thing at a time.

    我是学习和探索新事物的爱好者,但是我也知道,当我们将精力集中在一次学习一件事上时,我们的表现会更好。

    That’s why I suggest you start with a quantum library based on a classical programming language. By doing that, you’re only focusing on getting used to the quantum way of thinking and not learning how to use a specific programming language as well. Once you get comfortable with quantum logic, move on to a quantum programming language. Once you’re comfortable with that and want to expand your knowledge further, go lower and explore QASM.

    因此,我建议您从基于经典编程语言的量子库开始。 这样,您只专注于习惯于量子思维方式,而不是学习如何使用特定的编程语言。 一旦您对量子逻辑感到满意,请继续使用量子编程语言。 一旦您对此感到满意,并想进一步扩大自己的知识,那就走低一些,探索QASM。

    翻译自: https://medium.com/better-programming/program-a-quantum-computer-today-a62de23268f0

    量子计算机编程

    展开全文
  • 量子计算机编程原理简介 和 机器学习 本文翻译自D-Wave公司网站 www.dwavesys.com/en/dev-tutorial-intro.html D-wave公司在2007年就声称实现了128位的量子计算机,并会在今年推出512位的量子计算机。 传统...

    量子计算机编程原理简介 和 机器学习

    本文翻译自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次树梅,这就意味着计算机对判断的结果并不确定,而如果你把树梅和苹果放在同一个图片中输入那个答案就是非常正确的了!这种不确定性对于设计一个能够识别复杂情况并作出判断的计算方法非常重要。

    展开全文
  • 量子计算机将以令人兴奋和有趣的方式启动第二次计算革命。 学习量子处理单元(QPU)的编程不仅有趣而且令人兴奋,但它是一种让您踏上门的方式。 就像学习任何类型的编程一样,最好的方法就是亲自动手并深入研究代码...
  • 在本文中,我们将介绍对量子计算机进行编程的一些基本原理, 并消除这种误解。我们将研究免费的开源软件:IBM研发的QISKit ,以及量子机器学习软件 PennyLane 。我们还将介绍如何在IBM的云端量子计算机上运行程序。...

    一个普遍的误解是,量子计算机尚未准备好进行市场应用,并且该技术还需要很多年才能使用。在本文中,我们将介绍对量子计算机进行编程的一些基本原理, 并消除这种误解。我们将研究免费的开源软件:IBM研发的QISKit ,以及量子机器学习软件 PennyLane 。我们还将介绍如何在IBM的云端量子计算机上运行程序。在后续文章中,我们将讨论一些应用到机器学习中的程序,这些应用程序可供有好奇心的人使用。

    什么是量子计算机?

    首先,让我们谈谈量子计算以及你能从这项技术中期待什么。你会发现在手机,笔记本电脑或平板电脑内部的计算机芯片都是由硅构成的。最常见的技术之一是:使用一种基于光的特殊光刻技术将微观图案蚀刻到硅芯片中。这些微小的图案使我们能够以可控方式通过硅芯片传输电子(电流)。目前,我们已经达到了这些微小图案可以达到的物理极限。现在我们可以以纳米级精度有效大量创建它们,一个典型的体系结构大约为10纳米,大约20到50个原子。

    目前存在可以更精确操纵单个原子的技术,并且我们目前可以创建比你通常在计算机或电话中发现的架构还要小的架构。不过这种制造过程要慢一些, 因此要大量生产这些小得多的,原子尺度的芯片要困难些。在构造具有如此小特征的计算机芯片时,我们遇到的困难是电子和原子的量子行为。电子具有波粒二相性,这意味着,在某些情况下,电子的行为类似于波,而不是粒子,因此,如果蚀刻的图案太小,将其限制在硅芯片上的微小蚀刻图案上将变得更加困难。电子“扩散”并发生电子泄漏(量子隧穿效应),从而导致部分电流流过硅芯片中微小通道。这种泄漏意味着芯片无法达到预期的性能,并且电子作为波的行为将成为问题。这通常被称为“摩尔定律之死”,它代表了过去几十年来,我们所期望计算机性能增长的停滞。如果你将赌注押在假设市场不断增长上,那么这将是一个很大的问题,因为计算机芯片的大小和效率确实存在物理限制。

    量子计算旨在将这种量子力学的“问题”作为一种计算优势,通过使用它,来以不同于我们的手机和笔记本电脑中通常的二进制1和0的方式来处理信息。量子计算机的一种有用方式是作为ASIC (专用集成电路),这不是确切的,但却不是一个坏的类比。将其视为一种特殊的计算机芯片,以能够比标准硅芯片更有效地执行特定类型的计算。让我们看一下QISKit中基本计算单位的表示方式。

    QISKit中的量子态

    首先,您需要下载免费的 Anaconda,以便您可以使用Jupyter Lab。 下 载Anaconda之后,在Anaconda导航中打开Jupyter Lab的实例,要安装QISKit,你只需在Jupyter notebook或Jupyter Lab中使用pip。

    接下来,你需要导入qiskit 和matplotlib库。


    现在,如果要在Bloch Sphere上绘制“Spin-Up”态,则可以键入以下命令:

    我们可以使用以下命令绘制量子比特的“Spin-Down"状态。

    通常,量子比特状态不再局限于简单的0或1(经典的二进制位),量子比特可以处于无限多个状态。每个状态都可以表示为Bloch球面上的一个点。Spin-Up对应于状态0, Spin-Down 对应于状态1,但是量子比特也可以处于这两种状态的组合中。Bloch球上的每个点都像地球表面上的坐标一样, 代表唯一的量子比特状态。量子比特有无限多个不同状态的这种特性与量子力学中“叠加态”概念有关。例如,Bloch球上的以下状态是状态0和状态1的均匀混合,因此它处于这两个状态的叠加状态。

    此“Spin-Right”位置表示为“叠加态”,


    或0状态和1状态的“线性组合”。如果您不理解线性代数表达,那也没关系。现在,如果我们想在Spin-Up状态(或状态0)下对单个量子比特进行操作,并将其翻转为Spin-Down (或状态1),则可以使用非门。非门或“Pauli X门”是量子逻辑门。量子逻辑门在概念上与经典逻辑门相似,但并不完全相同。它们对量子比特的操作非常类似于经典逻辑门可以对比特进行的操作,但是它们始终是可逆的,并由单位矩阵乘法表示。我们可以在QISKit中创建一个量子电路,如下所示:


    现在,如果要使用非门对单个量子进行操作,可以在QISKit中使用以下代码进行操作。


    然后,我们可以定义一个设备来运行电路。

    最后,我们可以输出通过运行电路而得到的态矢量。


    这表明我们已经将量子比特状态翻转为Spin-Down,这是量子算法的基本思想。在后续文章中,我们将研究如何在实际硬件上实现这些量子逻辑门。同样也可以使用IBM的软件来完成,并且可以对量子计算机芯片的微波脉冲进行编程。
    作者 Amelie Schreiber

    如果你想看一些介绍量子算法背后数学知识的教程,量子计算背后的数学原理。关注公众号,获取本文github地址:

    展开全文
  • 量子计算机和量子编程的学习步骤汇总

    万次阅读 多人点赞 2018-05-01 11:53:44
    量子计算机是基于量子比特的。Kubit意味着在0到1之间还有很多其他的变量被称为叠加。常规计算机不如量子计算机,因为它们不能处理这样复杂的算法。来自IBM 的QISKit软件包使所有感兴趣的开发人员能够获得他们的第一...

    一、什么是量子编程?


             量子编程是一组使用高级设计表达量子算法的编程语言。一台典型的计算机基于一个位二进制变量,它只有两个可能的值(01truefalse)。量子计算机是基于量子比特的。Kubit意味着在01之间还有很多其他的变量被称为叠加。常规计算机不如量子计算机,因为它们不能处理这样复杂的算法。来自IBM QISKit软件包使所有感兴趣的开发人员能够获得他们的第一次量子体验,链接在本文参考。它包括用于在PC上运行程序的模拟器和用于访问位于IBM云中的20千比特量子计算机的工具。要编写程序,必须使用Q语言(通过与C#类比发音为“kjusharp”)。


    二、量子计算的应用


           量子计算目前主要应用于复杂的大规模数据处理与计算难题,以及基于量子加密的网络安全服务。例如:环境监测领域的气象预报,医学领域的基因测序、化合物设计与药物研发,金融领域的投资大数据分析、预测与风险建模,网络安全与即时通讯领域的量子加密,特别激动人心的还有量子计算为人工智能提供的强大计算能力等。在未来十年,他们将会变得更加深入融入我们的生活。


    三、为什么量子编程尚未普及


           真正的量子计算机并不像仿真器那样工作。由于量子计算机的大规模生产尚未规划,程序员不急于投入时间和精力学习新的语言。另外,量子算法的构建需要量子物理的知识。其次就是以当前的量子计算机技术水平来讲,要正确使用它还是需要极高的专业知识才可以,这就会是大多数普通人望而却步。

           量子编程就像任何先进技术一样,只是进行新革命的垫脚石。接近这场革命并直接参与其中是吸引新专家的主要动机。今天我们可以开始研究量子编程了,因为我们拥有所有的可能性 ---- 一个开发环境,申请一个云计算机和一个不断发展的爱好者社区,其中包括业余程序员和科学家。欢迎大家一起来学习和分享!


    四、学习汇总

          (一)、量子计算体验链接:

            IBM 量子计算机体验平台:IBM Q - QuantumExperience

          牛津量子

     

           (二)、网站学习

            《资本实验室:量子计算创业投资趋势报告》---来源

             量子计算机商业化6大赛道:人工智能、分子模拟、粒子物理等---来源   

             D-Wave开源量子编程软件,无需掌握量子物理就可编程.–来源 

             量子计算入门---来源

           (三)、量子学习CSDN栏目

            前言--你也可以成为量子计算机程序员来源

            量子计算程序开发环境搭建—来源

            Q# 微软量子计算编程语言—来源

            快速开始,第一个量子程序—来源

            在 Visual Studio 中使用 Q# 进行量子编程---来源

            量子编程(Q#)---来源

         (四)、资源列表学习—进阶

           OpenFermion:量子计算开源软件包 ---来源

            QC模拟器学习资源列表—来源

    展开全文
  • 之所以说它是第一种高级编程语言,就是因为这个编程语言是量子计算机领域的,不是目前的在很低的抽象级别工作的编程语言,也不是我们普通认识学习的编程语言。 量子计算机领域的头号编程语言Silq,诞生于苏黎世...
  • 文章目录1 量子芯片1.1 超导量子芯片1.1.1 超导量子计算的进展1.2 半导体量子芯片1.2.1 基于...量子计算机硬件2.1 量子芯片支持系统2.2 量子计算机控制系统3 量子计算机3.1 量子计算机整体架构3.1.1 **量子计算的定位...
  • IBM Q量子编程

    2018-05-03 11:30:36
    IBM 量子计算机编程学习文档,epub格式,XXXXXXXxxxxxxxxxxx
  • 世界首台通用编程量子计算机问世 (2009年)
  • 量子计算机编程的免费开源软件可不少,如IBM的QISKit以及量子机器学习软件PennyLane。本文还将告诉你如何在IBM云的量子计算机上运行程序。 量子时代,其实离我们并不遥远。 什么是量子计算机...
  • 量子计算机硬件正在持续升级,很快地用不了几年我们就会看实际的产品,我们也会看到对这些机器进行编程的研究项目亦在稳步增长。如今量子计算机领域的最新成果为Silq,是瑞士ETH Zurich...
  • 是一个跨平台的Python库,用于对量子计算机进行。 以与神经网络相同的方式训练量子计算机。 主要特点 量子硬件上的机器学习。 连接到使用PyTorch,TensorFlow,JAX,Keras,或NumPy的量子硬件。 建立丰富而灵活的...
  • 本周出版的英国《自然》杂志在封面位置报告了一项量子计算机重大进展:一种小型可编程重新配置的量子计算机问世,这个也可称为量子计算机结构的装置有望被放大为规模更大的计算机。而 长期以来,量子计算的这一特性...
  • D-Wave的Python Pack的通用Lisp接口,用于绝热量子计算机能量编程,包括将教程翻译成CL。 文献资料 文档和教程位于: : 用法 一个很好的起点是教程hello-multiverse.lisp 。 花一点时间查看代码,并注意以下几点:...
  • 与传统计算机不同,量子计算机遵循量子力学规律、通过量子比特进行信息处理;基于微观量子比特的相干叠加和纠缠等特性以及量子电路的可逆性,在计算速度和能耗方面大大优于传统计算机。随着研究的不断发展,量...
  • 量子编程笔记

    2020-10-27 13:00:38
    量子计算机和量子编程的学习步骤汇总 https://blog.csdn.net/chenhaiming123/article/details/80155210 IBM量子计算机体验平台:IBM Q - QuantumExperience D-Wave开源量子编程软件,无需掌握量子物理就可编程.–...
  • 国际商业机器公司(IBM)于近日宣布提供全球首个量子计算机编程的开发者认证。该测试一共有60道题目,限时90分钟。答对44道题及以上即可通过测试。目前该测试仅支持英文,个人可以通过访问...
  • 行 业 要 闻Industry News▲▲▲01量子计算机领域内第一种高级编程语言Silq诞生近日,苏黎世联邦理工学院的计算机科学界人士在编程语言领域取得了重要突破:计算机科学...
  • 聊聊量子计算机那些事

    千次阅读 2018-01-29 15:38:04
    关于量子计算机的一些问题 科普视频 为什么要研究量子计算机? 算法复杂度 概率算法的一些思考 经典计算机VS量子计算机 量子计算机的基本知识 量子门操作 量子叠加态和传统叠加态 量子测量得出的概率和经典概率的...
  • 作者:Quentin Truong翻译:Nuor审校:YQH这是一段从量子比特到真实量子程序的量子编程演练。量子计算机量子计算机被发现之后,量子编程也在不断发展。本文将带你入门量子编程,...
  • 当地时间5月26日,成立于2007年的美国量子硬件初创公司ColdQuanta宣布与IBM合作,加入IBM量子网络 (IBM Quantum Network)。此外,ColdQuanta还将与IBM的开源量子软件开发工具包Qiskit全面整合[1]。   图1|...
  • 据新华网报道,中国科学技术大学潘建伟教授以及其同事陆朝阳、朱晓波等,联合浙江大学王浩华教授研究组,构建了中国首台多光子可编程量子计算机——“婴儿”,这也是我国首次实现10个超导量子比特纠缠。那么,这台名...
  • 为了引入这个问题,我们先来介绍一个假想的编程语言QCPL。就像LISP一样,它是一个基于函数的语言:没有变量,没有for循环,一切东西都是用函数来表示的。另外,就像FORTRAN一样,QCPL语言不支持递归,也就是说一个...
  • 本文将带你入门量子编程,介绍量子计算机与传统电脑的区别,解释量子编程的基本概念,最后教你如何在一个当今免费的量子计算机上运行程序。 在开始之前,请注意,本文是为希望了解量子编程的完整技术细节的人们准备...
  • Ignite大会上微软宣布:将在今年晚些时候发布用于量子计算机的新编程语言。本周一微软守约推出一门新的程序语言,名叫“Q#”(念作Q Sharp)。Q#是一个工具,可以帮助编程人员为量子计算机编写软件。根据之前Ignite...
  • 量子计算从理论上来讲已经是行得通的了,而在实际应用中也有一小部分量子计算机被应用于诸如量子物理、高等数学的计算之中,但其距离我们的日常生活还显得过于遥远,普通人仍无法接触到这一前沿的技术。 现在,...
  • 本文转自...1 量子计算机与量子编程 1.1 量子计算机 Quantum computing is computing using quantum-mechanical phenomena, such a...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 205
精华内容 82
关键字:

量子计算机编程