Skip to content
Published on

量子计算入门:面向工程师,从量子比特到量子机器学习

分享
Authors

1. 什么是量子计算?

量子计算是一种计算范式,它利用量子力学的原理(叠加、纠缠、干涉)来解决经典计算机难以在现实时间内求解的问题。

经典计算机 vs 量子计算机

项目经典计算机量子计算机
基本单位比特(0 或 1)量子比特(0、1,或叠加态)
运算方式串行/并行逻辑门量子门(酉变换)
状态空间n 比特 = 2^n 个状态中的一个n 量子比特 = 同时表示 2^n 个状态
误差特性确定性,可预测概率性,易受退相干影响
最优应用通用运算、信息处理优化、量子模拟、密码学

n 个量子比特可以同时表示 2n2^n 个状态。300 个量子比特的系统可以同时处理比宇宙中原子数量还多的状态。

为什么量子计算很重要?

量子计算在以下领域提供了革新性的突破。

  • 密码学:Shor 算法可以在多项式时间内解决作为 RSA 加密基础的质因数分解问题。目前 2048 位的 RSA 密钥用经典计算机需要数百万年,但用具备足够量子比特的量子计算机则可以在几个小时内破解。
  • 新药研发:分子模拟克服了经典计算机指数级复杂度的极限,从而加速新材料设计和蛋白质折叠预测。
  • 优化:在物流、金融投资组合、调度等 NP-hard 问题上,QAOA 等量子算法展现出优势。
  • AI/机器学习:量子核、量子神经网络在特定数据集上可能比经典机器学习具有更高的表达能力。

量子优势 vs 量子霸权

量子霸权(Quantum Supremacy):量子计算机完成任何经典计算机都无法在现实时间内完成的任务的那一刻。2019 年,Google 的 Sycamore 处理器用 53 个量子比特在 200 秒内解决了一个特定的抽样问题,这在当时最强的超级计算机上预计需要 1 万年。

量子优势(Quantum Advantage):量子计算机在实际有用的问题上明显快于经典计算机的情况。这是比量子霸权更高的实质性标准。

NISQ 时代

目前正处于 NISQ(Noisy Intermediate-Scale Quantum,嘈杂中等规模量子) 时代。目前存在 50 到 1000 个量子比特规模的设备,但错误率高、量子比特的相干时间也很短。要实现完全的纠错(容错量子计算,Fault-Tolerant Quantum Computing),需要数百万个物理量子比特,这一目标定在 2030 年代以后。


2. 量子比特(Qubit)

量子比特的物理实现

方式原理代表企业特点
超导量子比特约瑟夫森结、极低温冷却IBM、Google制造容易、门速度快
离子阱用激光控制离子IonQ、Quantinuum高保真度、门速度慢
光子量子比特光子偏振/路径PsiQuantum常温运行、连接性受限
拓扑量子比特马约拉纳粒子Microsoft理论上具有容错性
硅自旋电子自旋Intel兼容 CMOS

叠加(Superposition)

量子比特在被测量之前处于 0 和 1 的叠加(superposition)状态。

ψ=α0+β1|\psi\rangle = \alpha|0\rangle + \beta|1\rangle

其中 α\alphaβ\beta 是复数振幅(amplitude),满足归一化条件 α2+β2=1|\alpha|^2 + |\beta|^2 = 1

测量概率如下。

P(0)=α2,P(1)=β2P(0) = |\alpha|^2, \quad P(1) = |\beta|^2

例如当 α=12,β=12\alpha = \frac{1}{\sqrt{2}}, \beta = \frac{1}{\sqrt{2}} 时,每个状态都以 50% 的概率被测量到。这正是 Hadamard 门所生成的状态。

布洛赫球(Bloch Sphere)表示

量子比特的状态可以表示为单位球(布洛赫球)上的一个点。

ψ=cos ⁣(θ2)0+eiϕsin ⁣(θ2)1|\psi\rangle = \cos\!\left(\frac{\theta}{2}\right)|0\rangle + e^{i\phi}\sin\!\left(\frac{\theta}{2}\right)|1\rangle

  • θ=0\theta = 0:北极 = 0|0\rangle
  • θ=π\theta = \pi:南极 = 1|1\rangle
  • 赤道:叠加态(例如 +=12(0+1)|+\rangle = \frac{1}{\sqrt{2}}(|0\rangle + |1\rangle))

退相干(Decoherence)问题

量子比特与环境(热、电磁波、振动)相互作用时会失去叠加态,这称为退相干。目前超导量子比特的相干时间处于数十到数百微秒的水平。没有纠错的情况下,很难执行较深(deep)的电路。


3. 量子门(Quantum Gates)

量子门用满足 UU=IUU^\dagger = I 的酉矩阵 UU 表示。与经典门不同,所有量子门都是可逆的(reversible)。

主要的单量子比特门

Pauli 门

X=(0110),Y=(0ii0),Z=(1001)X = \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix}, \quad Y = \begin{pmatrix} 0 & -i \\ i & 0 \end{pmatrix}, \quad Z = \begin{pmatrix} 1 & 0 \\ 0 & -1 \end{pmatrix}

  • X 门:相当于经典的 NOT 门。01|0\rangle \to |1\rangle10|1\rangle \to |0\rangle
  • Z 门:相位翻转。对 1|1\rangle 施加 1-1 相位

Hadamard 门

H=12(1111)H = \frac{1}{\sqrt{2}}\begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix}

012(0+1)=+|0\rangle \to \frac{1}{\sqrt{2}}(|0\rangle + |1\rangle) = |+\rangle,生成叠加态。

S、T 门(相位门)

S=(100i),T=(100eiπ/4)S = \begin{pmatrix} 1 & 0 \\ 0 & i \end{pmatrix}, \quad T = \begin{pmatrix} 1 & 0 \\ 0 & e^{i\pi/4} \end{pmatrix}

旋转门

在布洛赫球上绕各轴旋转。

Rx(θ)=eiθX/2,Ry(θ)=eiθY/2,Rz(θ)=eiθZ/2R_x(\theta) = e^{-i\theta X/2}, \quad R_y(\theta) = e^{-i\theta Y/2}, \quad R_z(\theta) = e^{-i\theta Z/2}

在变分量子算法(VQA)中被用作可训练的参数。

双量子比特门

CNOT(Controlled-NOT)

当控制量子比特为 1|1\rangle 时,用 X 门翻转目标量子比特。

CNOT=(1000010000010010)\text{CNOT} = \begin{pmatrix} 1&0&0&0 \\ 0&1&0&0 \\ 0&0&0&1 \\ 0&0&1&0 \end{pmatrix}

CNOT 是生成纠缠的核心门。

三量子比特:Toffoli(CCNOT) — 当两个控制量子比特都为 1|1\rangle 时翻转目标。它保证了量子电路的通用性(universality)。

用 Qiskit 生成 Bell 态

from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator

# 生成 Bell 态(量子纠缠)
qc = QuantumCircuit(2, 2)
qc.h(0)       # Hadamard 门:将量子比特 0 变为叠加态
qc.cx(0, 1)   # CNOT 门:纠缠量子比特 0(控制)与 1(目标)
qc.measure([0, 1], [0, 1])

# 输出电路
print(qc.draw())

# 运行模拟
simulator = AerSimulator()
job = simulator.run(qc, shots=1000)
result = job.result()
counts = result.get_counts()
print("测量结果:", counts)
# 预期输出: {'00': ~500, '11': ~500}
# 01、10 不会出现 → 完全纠缠态

Bell 态 Φ+=12(00+11)|\Phi^+\rangle = \frac{1}{\sqrt{2}}(|00\rangle + |11\rangle) 中两个量子比特完全纠缠,测量其中一个,另一个的状态会立即确定。


4. 量子电路(Quantum Circuits)

态矢量模拟

n 量子比特系统的状态用 2n2^n 维复数向量表示。

from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector

qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)

sv = Statevector.from_instruction(qc)
print(sv)
# 输出: [0.707+0j, 0, 0, 0.707+0j]
# -> |00> 与 |11> 各占 50% 振幅

GHZ 态(3 量子比特纠缠)

GHZ(Greenberger-Horne-Zeilinger)态是 3 量子比特的最大纠缠态。

GHZ=12(000+111)|GHZ\rangle = \frac{1}{\sqrt{2}}(|000\rangle + |111\rangle)

qc = QuantumCircuit(3)
qc.h(0)
qc.cx(0, 1)
qc.cx(0, 2)
print(qc.draw())

量子隐形传态协议

量子隐形传态是一种不传输物理量子比特,而是通过经典通信信道传递量子态的协议。

  1. Alice 与 Bob 共享一对 Bell 对。
  2. Alice 对要传送的量子比特和自己的 Bell 量子比特施加 CNOT + H。
  3. Alice 测量这 2 个量子比特,并将结果(2 比特经典信息)传给 Bob。
  4. Bob 根据这些经典信息施加 X、Z 修正后,即可恢复 Alice 的原始状态。

量子纠错(QEC)概述

物理量子比特会发生比特翻转、相位翻转错误。纠错码(Shor 码、Steane 码、Surface 码)用多个物理量子比特编码一个逻辑量子比特。Surface 码是最有前景的方式,一个逻辑量子比特需要数百到数千个物理量子比特。


5. 代表性量子算法

Deutsch-Jozsa 算法

只需1 次查询,就能判断函数 f:{0,1}n{0,1}f:\{0,1\}^n \to \{0,1\} 是常数函数还是均衡函数。经典算法在最坏情况下需要 2n1+12^{n-1}+1 次查询。这是最早证明量子优势的算法。

Grover 搜索算法

在包含 N 个条目的无结构数据库中查找目标,只需 O(N)O(\sqrt{N}) 次查询即可解决。经典最优方法是 O(N)O(N),因此大约实现了平方根级别的加速。

from qiskit.circuit.library import GroverOperator
from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator

# 2 量子比特 Grover 搜索(目标:|11>)
oracle = QuantumCircuit(2)
oracle.cz(0, 1)  # 对 |11> 态施加 -1 相位(预言机)

grover_op = GroverOperator(oracle)

qc = QuantumCircuit(2)
qc.h([0, 1])             # 均匀叠加
qc.compose(grover_op, inplace=True)  # Grover 迭代
qc.measure_all()

simulator = AerSimulator()
job = simulator.run(qc, shots=1000)
result = job.result()
print(result.get_counts())
# |11> 以高概率出现

Shor 质因数分解算法

将 N 分解为两个质数之积的问题,可以在 O((logN)3)O((\log N)^3) 的多项式时间内解决。这比经典最优算法(GNFS)的次指数复杂度 O(e1.9(logN)1/3(loglogN)2/3)O(e^{1.9(\log N)^{1/3}(\log\log N)^{2/3}}) 要快指数级。

这正是它威胁到当前互联网安全根基 RSA、ECC 加密的原因。为此,NIST 于 2024 年发布了抗量子密码(PQC:Post-Quantum Cryptography)标准。

量子傅里叶变换(QFT)

O(n2)O(n^2) 个量子门执行离散傅里叶变换(DFT)。相比经典 FFT 的 O(NlogN)O(N \log N),效率呈指数级提升。它是 Shor 算法、相位估计(Phase Estimation)等的核心子程序。

QAOA(Quantum Approximate Optimization Algorithm)

一种近似求解组合优化问题(Max-Cut、TSP、调度)的变分量子算法。以经典优化器与量子电路混合运行。


6. 量子误差与噪声

主要误差类型

比特翻转误差01|0\rangle \to |1\rangle10|1\rangle \to |0\rangle 的意外转变。属于 X 通道噪声。

相位翻转误差+|+\rangle \to |-\rangle 的相位变化。属于 Z 通道噪声。

退极化信道:最常见的噪声模型。以概率 pp 随机施加 X、Y、Z 三种误差之一。

E(ρ)=(1p)ρ+p3(XρX+YρY+ZρZ)\mathcal{E}(\rho) = (1-p)\rho + \frac{p}{3}(X\rho X + Y\rho Y + Z\rho Z)

门保真度

目前 NISQ 设备的代表性错误率:

操作代表性错误率
单量子比特门低于 0.1%
双量子比特 CNOT 门0.5~1%
测量(Readout)1~2%
T1 相干时间100~500 微秒

用 Qiskit 模拟噪声

from qiskit_aer.noise import NoiseModel, depolarizing_error
from qiskit_aer import AerSimulator
from qiskit import QuantumCircuit

# 创建噪声模型
noise_model = NoiseModel()
error_1q = depolarizing_error(0.001, 1)   # 单量子比特 0.1% 误差
error_2q = depolarizing_error(0.01, 2)    # 双量子比特 1% 误差
noise_model.add_all_qubit_quantum_error(error_1q, ['h', 'x'])
noise_model.add_all_qubit_quantum_error(error_2q, ['cx'])

qc = QuantumCircuit(2, 2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()

sim = AerSimulator(noise_model=noise_model)
job = sim.run(qc, shots=1000)
print(job.result().get_counts())
# 理想情况: {'00': 500, '11': 500}
# 含噪声: '01'、'10' 也会少量出现

7. 量子机器学习(QML)

变分量子算法(VQA)

VQA 是用经典优化器训练参数化量子电路(PQC)的混合方式。

minθψ(θ)Hψ(θ)\min_\theta \langle \psi(\theta) | H | \psi(\theta) \rangle

  • VQE(Variational Quantum Eigensolver):分子能量最小化
  • QAOA:组合优化
  • QNN:分类/回归学习

数据编码方式

方法说明量子比特数
角度编码Ry(θi)R_y(\theta_i) 编码每个数据特征N 个特征 = N 个量子比特
振幅编码用态矢量的振幅编码log2N\log_2 N 个量子比特
基编码用二进制表示编码到计算基N 个比特 = N 个量子比特

用 PennyLane 实现 QNN

import pennylane as qml
import numpy as np

dev = qml.device('default.qubit', wires=2)

@qml.qnode(dev)
def quantum_circuit(x, weights):
    # 角度编码
    qml.AngleEmbedding(x, wires=[0, 1])
    # 变分层(包含纠缠)
    qml.BasicEntanglerLayers(weights, wires=[0, 1])
    return qml.expval(qml.PauliZ(0))

# 数据与初始权重
x = np.array([0.5, 0.3])
weights = np.random.random((3, 2))  # 3 层,2 根导线

result = quantum_circuit(x, weights)
print(f"期望值: {result:.4f}")

# 计算梯度(Parameter-Shift Rule)
grad_fn = qml.grad(quantum_circuit, argnum=1)
gradients = grad_fn(x, weights)
print(f"梯度: {gradients}")

量子核方法

在支持向量机(SVM)中,用量子电路构造特征映射来代替经典核。

K(xi,xj)=ϕ(xi)ϕ(xj)2K(x_i, x_j) = |\langle \phi(x_i)|\phi(x_j)\rangle|^2

量子计算机可以高效计算出用经典计算机难以计算的高维希尔伯特空间中的内积。

当前 QML 的局限

  • 贫瘠高原(Barren Plateau):随着量子比特数量增加,梯度呈指数级消失的现象
  • 数据上传瓶颈:将经典数据编码为量子态的成本很高
  • NISQ 噪声:深层电路难以执行,表达能力受限

8. 量子硬件现状(2026 年)

主要平台比较

企业方式最大量子比特数特点
IBM Quantum超导Condor 1121 个量子比特云端访问、开源 Qiskit
Google超导Willow 105 个量子比特达成纠错里程碑
IonQ离子阱36 个算法量子比特高保真度
Quantinuum离子阱H2 56 个量子比特TPCP 运算表现优异
D-Wave量子退火5000+ 个量子比特专精优化

2025 年末,Google 用 Willow 芯片证明了此前的基准计算,IBM 则将目标定为在 2025 年前实现 100,000 个量子比特。

2026 路线图摘要

  • 现在:NISQ,100~1000 个物理量子比特,错误率 0.1~1%
  • 2027~2029:初期纠错,数千个物理量子比特 → 数十个逻辑量子比特
  • 2030+:完全容错的量子计算机,目标是数百万个物理量子比特

9. 量子云端访问

主要平台

IBM Quantum Experience(quantum.ibm.com):可免费访问 127 个量子比特以上的真实设备。基于 Qiskit SDK。

AWS Braket(aws.amazon.com/braket):通过单一 API 访问 IonQ、Rigetti、D-Wave 等多种硬件。

Google Quantum AI(quantumai.google):Cirq 框架,可用于研究合作。

Azure Quantum(azure.microsoft.com/quantum):IonQ、Quantinuum、Microsoft 的拓扑量子比特。

在 IBM Quantum 真实设备上运行

from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler
from qiskit import QuantumCircuit
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager

# 初始化 IBM Quantum 服务(需要 API 令牌)
# service = QiskitRuntimeService(channel="ibm_quantum", token="YOUR_TOKEN")
service = QiskitRuntimeService()

# 选择最空闲的真实设备
backend = service.least_busy(operational=True, simulator=False)
print(f"使用的后端: {backend.name}")
print(f"量子比特数: {backend.num_qubits}")

# 准备电路并转译
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()

pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_circuit = pm.run(qc)

# 用 Sampler 运行
sampler = Sampler(mode=backend)
job = sampler.run([isa_circuit], shots=1000)
result = job.result()
print(result[0].data.meas.get_counts())

AWS Braket 示例

from braket.aws import AwsDevice
from braket.circuits import Circuit

# AWS Braket 电路
circuit = Circuit()
circuit.h(0)
circuit.cnot(0, 1)
circuit.measure([0, 1])

# 运行模拟器
device = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/sv1")
task = device.run(circuit, shots=1000)
result = task.result()
print(result.measurement_counts)

10. 学习路线图与参考资料

各类工程师的学习路径

软件工程师:Python → Qiskit 基础 → 量子算法 → QML(PennyLane)

电气/硬件工程师:量子力学基础 → 量子比特物理实现 → 电路设计 → 纠错

AI/ML 工程师:强化线性代数 → 理解量子门 → PennyLane → 混合 QML

必读参考资料

  • Nielsen & Chuang,Quantum Computation and Quantum Information(Cambridge,2000)— 该领域的圣经
  • Qiskit 官方文档: qiskit.org
  • PennyLane 官方文档: pennylane.ai
  • IBM Quantum Learning: learning.quantum.ibm.com
  • arXiv quant-ph 板块:最新研究论文

测验

Q1. 量子比特与经典比特最大的区别是什么?

答案:量子比特在测量前可以同时处于 0 和 1 的叠加(superposition)状态。经典比特则始终只能是 0 或 1 之一。

解析:n 个量子比特可以同时表示 2^n 个状态,因此当 n=300 时,可以同时处理比宇宙中原子数量还多的状态。

Q2. Hadamard 门作用在 |0> 上会变成什么状态?

答案:正态(plus state),也就是 0 和 1 各以 50% 概率被测量到的均匀叠加态。

解析:用公式表示为 (1/sqrt(2))(|0> + |1>)。在这个状态下测量,0 或 1 会以相同的概率出现。它常被用作量子算法的起点。

Q3. 为什么 Shor 算法会威胁到 RSA 加密?

答案:Shor 算法能在多项式时间 O((log N)^3) 内解决大数的质因数分解问题。RSA 依赖于质因数分解的困难性,因此一旦具备足够量子比特的量子计算机问世,目前的 RSA 加密就可能被破解。

解析:经典计算机的最优算法需要次指数时间。正因如此,NIST 于 2024 年发布了抗量子密码(PQC)标准。

Q4. NISQ(Noisy Intermediate-Scale Quantum)时代是指什么?

答案:这是目前量子计算机所处的发展阶段,拥有 50 到数千个量子比特,但错误率高,无法实现完全的纠错。

解析:NISQ 设备已经在有限的算法中展现出实用性,但要实现真正的量子优势还需要纠错。完全容错的量子计算机的目标定在 2030 年代以后。

Q5. 量子机器学习中的贫瘠高原问题是什么?

答案:随着量子比特数量增加,量子神经网络的梯度会呈指数级收敛到 0,导致无法学习的现象。

解析:这与经典深度学习中的梯度消失(vanishing gradient)问题类似。目前正尝试用层结构设计、局部代价函数、预训练等技术来缓解这一问题。


量子计算目前仍处于 NISQ 时代,但其发展速度非常快。现在就用 Qiskit 和 PennyLane 开始学习,就能在量子计算真正实用化的时代具备足够的专业能力。亲自动手操作量子比特,为未来做好准备吧。