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 必须被映射成量子门参数或振幅,常见做法是角度编码,例如把每个特征 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 等随机优化方法来缓解。若线路太深、纠缠太强,还可能出现梯度消失,表现为损失长期不下降。此时应优先检查编码是否合理、参数初始化是否过小、线路深度是否超过硬件相干时间。