2. 量子计算基础速览

在混合量子机器学习(HQML)中,量子部分通常不是独立运行的,而是作为经典训练循环里的一个可微或可采样的“函数块”被反复调用。要理解它如何嵌入训练,先要把量子计算最基本的几个对象和操作弄清楚:量子比特、叠加、纠缠、测量、量子门与量子线路。它们分别对应“数据怎么表示”“状态怎么演化”“结果怎么读出”三个层面。

量子比特:从比特到态矢量

经典比特只能取 0 或 1。量子比特(qubit)的状态则写成二维复向量:

|ψ⟩ = α|0⟩ + β|1⟩,其中 α, β ∈ ℂ,且 |α|² + |β|² = 1

这里 |0⟩ 和 |1⟩ 是计算基。α、β 称为概率幅,不是概率本身;只有测量时,得到 0 的概率才是 |α|²,得到 1 的概率是 |β|²。例如 α = 1/√2、β = 1/√2 时,测量得到 0 或 1 各占 50%。在代码中,一个量子态常被存成长度为 2ⁿ 的复数数组,n 是量子比特数。n=1 时是 2 维,n=2 时是 4 维,n=10 时是 1024 维——这也是量子模拟在经典计算机上很快变贵的原因。

叠加:不是“同时是 0 和 1”,而是幅值分配

叠加常被通俗说成“同时处于 0 和 1”,更准确的说法是:系统处于多个基态的线性组合,每个基态带一个复幅值。叠加的价值在于,量子门可以一次性作用到所有基态分量上,形成并行演化。但要注意,这种“并行”不能直接读出所有结果,测量只会给出一个采样结果。因此,在 HQML 中,叠加通常用于构造特征映射或参数化态,而不是直接当作“并行计算所有样本”。

纠缠:多比特之间的非经典关联

纠缠是多个量子比特之间不能拆成各自独立状态的关联。最典型的 Bell 态:

|Φ⁺⟩ = (|00⟩ + |11⟩)/√2

测量第一个比特,若得到 0,第二个必为 0;若得到 1,第二个必为 1。这种关联不是“事先约定”,而是量子态本身的整体性质。在量子机器学习中,纠缠常被用来增强模型表达能力,例如在变分量子线路中通过 CNOT 层制造纠缠,使输出态不能写成各比特张量积。但纠缠并非越多越好:过多纠缠会带来训练困难(贫瘠高原)和硬件噪声敏感问题。

量子门与量子线路:态演化的基本单元

量子门是作用在量子态上的酉变换。单比特门常见有:

  • X 门:翻转 |0⟩ 与 |1⟩,类似经典 NOT。
  • H 门:把 |0⟩ 变成 (|0⟩+|1⟩)/√2,制造叠加。
  • Rz(θ):绕 Z 轴旋转,改变相位,是变分线路中最常用的参数门之一。
  • Rx(θ)、Ry(θ):绕 X、Y 轴旋转,常用于编码角度特征。

双比特门以 CNOT 为代表:控制比特为 1 时翻转目标比特。把门按时间顺序排列,就得到量子线路。线路通常从左到右表示时间推进,每条横线代表一个量子比特,门符号落在对应线上。一个简单的两比特线路可以写成:H 作用在 q0,然后 CNOT(q0, q1),最后测量两个比特。这个线路正好制备 Bell 态。

测量:把量子态变成经典数据

测量是量子与经典之间的接口。对 |ψ⟩ = α|0⟩ + β|1⟩ 做计算基测量,结果是一个经典比特,概率由 |α|²、|β|² 决定。多次测量同一态,可以得到经验频率,用来估计期望值。在 HQML 中,测量通常不是只测一次,而是用 shots 参数控制重复次数。例如 shots=1024 时,统计 0 和 1 的出现次数,再换算成概率或期望值。测量会破坏叠加和纠缠,因此线路中测量一般放在最后;若需要中间测量,则要明确它带来的态坍缩和经典控制。

如何嵌入机器学习训练循环

把上述对象放进训练循环,可以形成一条清晰的信号链:经典数据 → 编码(角度/振幅)→ 参数化量子线路 → 测量 → 经典后处理 → 损失 → 梯度更新。下面这张图给出一个典型的 HQML 训练循环结构,重点标出量子部分与经典部分的接口位置。

混合量子机器学习训练循环中的量子—经典接口 经典数据 x 特征向量 / 图像 / 序列 量子态编码 Ry(x) / 振幅编码 参数化量子线路 U(θ) Rz(θ) · CNOT · Rx(θ) 叠加 + 纠缠演化 测量 shots=1024 采样 经典后处理 期望值 / 概率 损失函数 L(θ) 预测与标签比较 梯度估计与更新 参数平移 / 有限差分 θ 更新 量子处理器 / 模拟器 经典训练循环:前向、损失、梯度、参数更新 关键接口:编码把经典 x 写入量子态;测量把量子态转为经典统计量;梯度更新把经典优化信号回写到 θ 示例:2 量子比特变分线路的一次前向 1. 初始 |00⟩ → H(q0) → (|00⟩+|10⟩)/√2 2. CNOT(q0,q1) → (|00⟩+|11⟩)/√2(Bell 态,产生纠缠) 3. Rz(θ) 作用于 q0 → 改变相位;测量 1024 次 → 统计 00/11 频率 → 估计期望值

图中最值得关注的是三个接口。第一,编码接口:经典特征 x 必须被映射成量子门参数或振幅,常见做法是角度编码,例如把每个特征 xᵢ 通过 Ry(xᵢ) 作用到对应量子比特上。第二,测量接口:量子线路输出的是态,不能直接送进经典损失函数,必须通过测量得到经典统计量,例如 ⟨Z⟩ 或某个可观测量的期望值。第三,梯度接口:量子参数 θ 的梯度通常不能直接反向传播,需要用参数平移规则或有限差分来估计,再把梯度交给经典优化器。

一个可执行的最小示例

下面用伪代码展示一次前向与梯度估计的骨架,参数为示例值,便于理解训练循环中的实际数据流:

# 示例参数(非实测结果)
theta = [0.3, -0.7]          # 两个可训练旋转角
x = [0.5, 1.2]               # 两个经典特征
shots = 1024

# 1. 编码:Ry(x_i) 作用到 q_i
# 2. 变分层:Rz(theta_0) on q0, CNOT(q0,q1), Ry(theta_1) on q1
# 3. 测量:统计 q0 的 0/1 频率
# 4. 期望值:<Z0> = P(0) - P(1)
# 5. 损失:L = (<Z0> - y_true)^2
# 6. 梯度:对 theta_i 做参数平移 theta_i ± π/2,重新采样估计 dL/dtheta_i
# 7. 更新:theta_i ← theta_i - lr * dL/dtheta_i

这里的关键判断是:测量得到的频率会随 shots 波动,因此梯度估计带有采样噪声。实际训练中,常用增大 shots、多次重复取平均或使用 SPSA 等随机优化方法来缓解。若线路太深、纠缠太强,还可能出现梯度消失,表现为损失长期不下降。此时应优先检查编码是否合理、参数初始化是否过小、线路深度是否超过硬件相干时间。

理解顺序建议:先分清“态”和“测量结果”的区别,再理解门如何改变态,最后把线路放进训练循环。很多初学者把测量结果当成态本身,导致无法理解为什么需要多次采样和期望值估计。