2. 量子模型基础回顾

数据重上传策略并不是一套孤立的新算法,它建立在量子机器学习最基础的几条形式化约定之上:状态如何表示、演化如何描述、信息如何读出、损失如何定义。如果这些约定不清晰,后续讨论“把数据多次编码进电路”时,就很容易把编码、门操作和测量混为一谈。本节用一套统一的记号把这些基础重新梳理一遍,并给出一个可以直接手算核对的小例子,为理解重上传策略建立必要的语言。

量子比特与状态向量

单个量子比特的纯态写为 |ψ⟩ = α|0⟩ + β|1⟩,其中 α、β 为复数且满足 |α|² + |β|² = 1。在计算基下,它对应列向量 [α, β]ᵀ。多比特系统的状态是各子系统张量积构成的 2ⁿ 维复向量,例如两比特基态 |01⟩ = |0⟩⊗|1⟩ 对应向量 [0,1,0,0]ᵀ。课程中统一采用“左向量右矩阵”的约定:态向量为列向量,门作用写作 U|ψ⟩,多门依次作用时按时间顺序从右向左相乘,即先作用 U₁ 再作用 U₂ 写作 U₂U₁|ψ⟩。这一约定在后续所有电路表达式中保持一致。

需要特别区分的是“态”与“可观测量”。态是系统本身的描述,可观测量是厄米算符,只有通过测量才能把二者联系起来。数据重上传中反复出现的“把经典数据 x 编码为量子态”,本质上是构造一个以 x 为参数的酉变换 U(x) 作用于某个固定初态,而不是直接“写入”某个态向量。

量子门:酉演化与常用门

封闭系统的演化由酉矩阵描述,满足 U†U = I。单比特常用门包括:

  • 旋转门 R_x(θ)=exp(-iθX/2)、R_y(θ)、R_z(θ),分别绕布洛赫球 X、Y、Z 轴旋转角度 θ;
  • 相位门 P(φ)=diag(1, e^{iφ}),只改变 |1⟩ 的相对相位;
  • Hadamard 门 H,把 |0⟩ 变为 (|0⟩+|1⟩)/√2,是制备叠加态的常用手段。

两比特门以 CNOT 为代表,控制比特为 1 时翻转目标比特,其矩阵在基 |00⟩,|01⟩,|10⟩,|11⟩ 下为分块对角形式。CNOT 与单比特旋转门组合可构成通用门集,这是变分量子电路能够表达丰富函数类的前提。数据重上传电路通常写成 U(x) = ∏ᵢ Wᵢ · S(x) 的形式,其中 S(x) 是依赖数据的编码层,Wᵢ 是不含数据的可训练层;理解“哪些门带参数、哪些门带数据”是读懂这类表达式的关键。

测量与期望值估计

对态 |ψ⟩ 在计算基下测量,得到结果 m 的概率为 p(m)=|⟨m|ψ⟩|²,测量后态坍缩到 |m⟩。量子机器学习中更常用的是期望值:给定可观测量 O(如 Pauli 算符 Z),其期望为 ⟨O⟩ = ⟨ψ|O|ψ⟩。由于硬件只能给出采样比特串,实践中通过多次重复制备与测量来估计:若在 Z 基下测得 n₀ 次 0、n₁ 次 1,则 ⟨Z⟩ ≈ (n₀ - n₁)/(n₀ + n₁)。估计误差随采样次数 N 大致按 1/√N 下降,这是设定 shots 数量的直接依据。

若可观测量不是 Z,需要先做基变换再测量。例如估计 ⟨X⟩ 时,在测量前加一个 H 门把 X 基转到 Z 基;估计 ⟨Y⟩ 时加 S† 再 H。多比特 Pauli 串(如 Z⊗X)则对每个比特分别做相应基变换,再统计比特串的联合符号。这一“测量前旋转”的步骤在实现中极易遗漏,是期望值结果系统性偏差的常见来源。

从初态到期望值:一条可手算核对的链路 初态 |0⟩ 向量 [1, 0]ᵀ 编码层 R_y(x) 数据 x 进入角度 可训练层 R_y(θ) 参数 θ 待优化 测量(Z 基) 采样比特串 0/1 态向量与概率的同步变化(示例 x = π/2,θ = π/2) 编码后:R_y(π/2)|0⟩ = (|0⟩+|1⟩)/√2 p(0)=0.5,p(1)=0.5 再作用 R_y(π/2) → 态变为 |1⟩ p(0)=0,p(1)=1 估计 ⟨Z⟩ = p(0) − p(1) 理论值 = −1 N 次采样后取频率近似 测量前基变换(易错点) 估 ⟨X⟩:测量前加 H;估 ⟨Y⟩:加 S† 再 H;多比特 Pauli 串:逐比特做对应旋转,再统计联合符号。 遗漏基变换会使期望值系统性偏离,且偏差不随 shots 增加而消失。

把四件事串成一条可核对的链路

上图给出一个最小但完整的例子,建议读者亲手验算一遍。取初态 |0⟩,编码层用 R_y(x),可训练层用 R_y(θ),可观测量取 Z。当 x = π/2 时,R_y(π/2)|0⟩ = (|0⟩+|1⟩)/√2;再作用 R_y(π/2),由于 R_y(π/2) 把 |0⟩→(|0⟩+|1⟩)/√2、把 |1⟩→(−|0⟩+|1⟩)/√2,叠加后得到 |1⟩,于是 ⟨Z⟩ = −1。这个结果说明:数据 x 通过旋转角度改变了最终测量结果的概率分布,而可训练参数 θ 则在同一角度空间里与 x 叠加,二者在电路中的位置关系直接决定了模型能拟合什么样的函数。

在实现层面,这条链路对应如下伪代码结构(以常见框架的记法示意,参数为示例值):

shots = 4096
x = pi/2; theta = pi/2
for each shot:
    q = |0>
    q = R_y(x) q        # 数据编码
    q = R_y(theta) q    # 可训练层
    m = measure(q)      # Z 基测量,得到 0 或 1
z_exp = (count(0) - count(1)) / shots   # 期望值估计
# 理论值 -1;有限 shots 下结果在 -1 附近波动

运行后若得到约 −0.98 至 −1.00 之间的值,说明链路正确;若得到接近 +1,应首先检查旋转门方向或测量基是否写反;若得到接近 0,则要检查编码层是否真的作用在了初态上。这类“先用手算小例子校准链路,再扩展到多比特电路”的做法,在后续调试重上传电路时同样适用。

为数据重上传预留的形式化接口