引言
机器学习靠数据与算力驱动,量子计算恰好提供一种全新的「算力」。量子机器学习(Quantum Machine Learning, QML)试图回答:能不能用量子系统的叠加与纠缠,加速或改善学习任务?这里面既有激动人心的可能,也有大量被夸大的炒作。
本文给出一条理性的入门路径:先讲量子数据编码(怎么把经典数据装进量子态),再讲变分量子电路(VQC)这个「量子神经网络」,随后对比量子核方法与经典基线,用 Qiskit + PyTorch 跑通一个混合量子-经典训练的最小实例,最后客观评估 QML 的优势、局限与当下的真实边界。
前置:量子比特与门基础(https://plumephp.com/quantum-qubit-gates-basics/)、Qiskit 编程(https://plumephp.com/quantum-qiskit-programming/)。机器学习的监督学习基础见 [[ml]] 专题。
目录
- 1. 量子机器学习想解决什么
- 2. 量子数据编码:把经典数据变成量子态
- 3. 变分量子电路:量子神经网络的核心
- 4. 量子核方法与量子特征空间
- 5. 混合量子-经典训练范式
- 6. 实战:Qiskit + PyTorch 最小 QML 分类器
- 7. QML 的优势、局限与炒作
- 8. 前沿方向与开放问题
- 9. 总结:如何理性进入 QML
- 延伸阅读
1. 量子机器学习想解决什么
1.1 三重新可能
| 可能性 | 说明 |
|---|---|
| 量子特征空间 | 把数据映射到指数维希尔伯特空间,可分性更强 |
| 量子采样 | 某些分布采样(如玻色子采样)量子更快 |
| 量子优化 | 加速子任务(如求解线性系统、梯度估计) |
1.2 警惕炒作
- 大量论文证明的是「某个玩具数据集上的小加速」。
- 量子加速有严格条件(如数据本身有量子结构)。
- QML 目前是研究前沿,不是生产工具——本文按研究视角学习,而非按「拿来就用」的框架。
2. 量子数据编码:把经典数据变成量子态
2.1 为什么需要编码
量子电路吃的是量子态,经典数据要「装进去」。编码方式决定了模型的表达能力。
2.2 三种常用编码
| 编码 | 原理 | 开销 |
|---|---|---|
| 角度编码 | 数据作为绕轴旋转角度 | 每个特征 1 个比特 |
| 振幅编码 | 数据作为振幅(归一化) | 指数压缩但制备难 |
| 基编码 | 数据直接作为比特串 | 特征数 = 比特数 |
from qiskit.circuit.library import ZZFeatureMap
feature_map = ZZFeatureMap(feature_dimension=4, reps=2, entanglement='full')
# 角度编码 + 纠缠层,QML 最常用的特征映射
2.3 特征映射即「特征工程」
经典侧的特征工程,在 QML 里变成「选择特征映射」。不同的 ZZFeatureMap 配置对应不同的核函数,直接决定模型能力。
3. 变分量子电路:量子神经网络的核心
3.1 结构与参数
变分量子电路(Variational Quantum Circuit, VQC)有两类参数:
- 数据参数:来自编码,固定。
- 训练参数(θ):可旋转门,是「待学的权重」。
from qiskit.circuit import Parameter
params = [Parameter(f'θ{i}') for i in range(4)]
# 可训练旋转门
qc.rx(params[0], 0)
qc.ry(params[1], 1)
qc.cx(0, 1)
3.2 为什么叫「量子神经网络」
类比:
| 经典神经网络 | VQC |
|---|---|
| 权重 w | 旋转角 θ |
| 激活函数 | 门/测量 |
| 非线性 | 测量坍缩引入非线性 |
| 反向传播 | 参数移位规则(有限差分) |
3.3 表达能力
VQC 能表示一些经典网络难以高效表示的函数,但并非所有任务都受益——这也是研究的核心开放问题。
4. 量子核方法与量子特征空间
4.1 核方法回顾
经典 SVM:数据映射到高维空间,核函数度量相似度。量子核方法把映射换成「量子特征映射」,核变成:
κ(x, x') = |⟨φ(x)|φ(x')⟩|²
即两个量子态的内积——可用量子电路测量得到。
4.2 量子核的优势假设
- 某些数据在量子特征空间线性可分,而经典特征空间不行。
- 内积计算量子天然高效。
4.3 关键警示:贫瘠高原
高维随机参数空间里,梯度往往指数级接近零(贫瘠高原 Barren Plateau)——这是 QML 训练的「梯度消失」,当前无通用解法。
5. 混合量子-经典训练范式
5.1 为什么需要混合
- 经典部分(数据预处理、最终分类、优化器)成熟且必要。
- 量子部分(VQC)只在「特征提取/核计算」环节。
- 当前量子硬件 NISQ(含噪声),量子电路尽量短。
5.2 标准架构
经典数据 → 特征映射(量子) → VQC(量子, 可训练)
→ 测量(量子→经典) → 经典分类头 → 损失 → 更新θ
5.3 梯度怎么算:参数移位规则
变分门的梯度可由「在原参数 ±π/2 处再测两次」得到——不依赖反向传播,NISQ 友好。
6. 实战:Qiskit + PyTorch 最小 QML 分类器
6.1 设计
用 Qiskit 构造一个 2 特征 2 类的 VQC 分类器,经典侧用 PyTorch 做训练循环(参数移位梯度)。
from qiskit.circuit import QuantumCircuit, Parameter
from qiskit.circuit.library import ZZFeatureMap, RealAmplitudes
import numpy as np
# 量子部分:特征映射 + 变分层 + 测量
def qml_circuit(theta):
qc = QuantumCircuit(2)
fm = ZZFeatureMap(2, reps=1)
var = RealAmplitudes(2, reps=1)
qc.compose(fm, inplace=True)
qc.compose(var, inplace=True)
qc.measure_all()
return qc
6.2 用模拟器执行并算期望值
from qiskit_aer import AerSimulator
from qiskit import transpile
sim = AerSimulator()
def circuit_expectation(theta, x):
"""返回测量到 |00⟩ 的概率作为分类分数"""
qc = qml_circuit(theta)
# 绑定数据参数与训练参数(此处用绑定简化)
qc_t = transpile(qc, sim)
job = sim.run(qc_t, shots=1024)
counts = job.result().get_counts()
return counts.get('00', 0) / 1024
6.3 训练循环(简化示意)
theta = np.random.rand(4) * np.pi
for step in range(50):
# 用参数移位规则估梯度
grad = np.zeros(4)
for i in range(4):
plus = circuit_expectation(theta + np.eye(4)[i] * np.pi/2, x_train)
minus = circuit_expectation(theta - np.eye(4)[i] * np.pi/2, x_train)
grad[i] = (plus - minus) / 2
# 梯度下降
theta -= 0.1 * grad
6.4 真实工程注意
- 完整版要用 PyTorch 的
torch.nn.Module封装量子电路,可 GPU 并行批次。 - 用
qiskit_machine_learning库可省大量样板。 - 先跑通小数据集,验证梯度不消失,再放大。
7. QML 的优势、局限与炒作
7.1 诚实的优势清单
| 声称 | 现实 |
|---|---|
| 指数特征空间 | 真的,但可学习性未必更好 |
| 某些核不可经典模拟 | 有理论例子 |
| 小数据高效 | 部分实验支持 |
7.2 明确局限
| 局限 | 影响 |
|---|---|
| 贫瘠高原 | 训练难收敛 |
| 噪声敏感 | NISQ 下电路深度受限 |
| 数据读取瓶颈 | 量子态→经典数据耗资源 |
| 缺乏规模化验证 | 无清晰「量子优势」实例 |
7.3 识别炒作的原则
- 论文是否在小玩具数据上测。
- 是否与最强经典基线公平对比。
- 是否报告了时间和成本,而非只看 QPU 次数。
8. 前沿方向与开放问题
8.1 有希望的方向
| 方向 | 内容 |
|---|---|
| 量子核偏置 | 寻找经典难算但对任务有用的核 |
| 生成模型 | 量子玻尔兹曼机、量子 GAN |
| 量子强化学习 | 策略网络的量子变体 |
| 容错 QML | 表面码上的逻辑级电路 |
8.2 核心开放问题
- 什么数据/任务真的需要量子特征空间?
- 如何规避贫瘠高原?
- 容错量子硬件成熟后,QML 范式会不会完全不同?
9. 总结:如何理性进入 QML
9.1 学习路径
量子基础(比特/门/Qiskit) → 量子纠错(理解噪声边界)
→ 数据编码 → VQC → 量子核 → 混合训练 → 读前沿论文
9.2 给学习者的建议
| 建议 | 理由 |
|---|---|
| 先学经典 ML | 没有基线无法判断量子价值 |
| 用模拟器学原理 | 不依赖稀缺硬件 |
| 复现小实验 | 理解梯度/表达力的真实行为 |
| 读带批评的综述 | 过滤炒作 |
9.3 一句话心法
QML 是「用量子结构重新思考学习」的研究,不是现成的加速魔法——以研究者的心态进入,才不会在炒作里迷失。
延伸阅读
- https://plumephp.com/quantum-qubit-gates-basics/ — 量子态与门的基础
- https://plumephp.com/quantum-qiskit-programming/ — Qiskit 环境与电路实战
- https://plumephp.com/quantum-error-correction/ — 理解噪声边界
- IBM Qiskit 机器学习教程 与 量子机器学习综述(Schuld & Petruccione)
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。