我进行了一次小型基准测试,将算法的量子版本与其经典版本进行比较,发现与经典版本相比,量子计算花费的时间要多得多。
我不明白这是为什么,量子计算应该与经典计算相近或者更好才对。
数据集说明:1个测试数据点和3个训练数据点,维度为2。目标:我们的目标是将测试数据点分类到训练数据点的一个类别中。
...
输出:
classical time => **1.0967254638671875e-05**
quantum time => **0.2530648708343506** // 花费更多时间
According to our distance algorithm, the new data point belongs to the Blue class.
Euclidean distances: [0.520285324797846, 0.4905204028376393, 0.7014755294377704]
According to euclidean distance calculations, the new data point belongs to the Blue class.
我不明白为什么量子计算会花费这么多时间。
回答:
我是一名物理学家和程序员,曾在Qiskit上进行了大量工作。我在机器学习方面的经验有限,但如果我没记错的话,这篇关于最近邻方法的论文第22页的图13正是你正在创建的电路。
你之所以会遇到显著的性能下降,是因为你使用经典算法来模拟量子硬件。这部分被注释掉了:
...
其中”ibmq_16_melbourne”指的是一台物理量子计算机,其ibm架构在这里有部分文档记录。这完全合理,因为IBM对大多数账户限制了访问。这就是为什么后面你有这样的代码:
...
“Aer”指的是在客户端计算机上本地运行的量子计算机模拟软件。据我所知,qiskit中还没有可以模拟特定物理量子计算机的东西。这可能会告诉你模拟/理论上的加速效果会是什么(尽管在经典计算机上模拟会花费更长时间)。
重要提示:Qiskit生态系统中定义的许多标准(如OpenQASM格式)旨在与硬件无关。你可以描述一个电路,其中任何两个量子比特可以在任何时间进行交互。但事实是,任何规模的物理量子计算机(10+量子比特)都不会有直接的任意量子比特到任意其他量子比特的连接。你必须以特定于该架构的方式(如墨尔本16量子比特架构)来交换事物。