想象一间顶级后厨,主厨手上有一批“量子食材”:同一块牛排可以同时是三分熟与七分熟(叠加态),两种酱汁即使分开放也会彼此影响味道(纠缠态)。量子神经网络(QNN),就是这位主厨的独门菜谱——他用带旋钮的“调味门”控制每份食材的味道权重,把多道工序排成一条量子线路,最后“尝一口”(测量)得到整道菜的评分(期望值)。训练 QNN 就像反复试菜:尝一口、判断咸淡、微调旋钮角度、再尝一口,直到客人满意。本文从量子神经元、参数化线路、梯度训练讲到量子经典混合架构,再看 QNN 在分类任务上的表现,最后讨论那道终极招牌菜——量子优势,是否真的能端上桌。

岗位关联

读懂量子神经网络的核心原理与工程边界,你将在量子计算与 AI 融合的前沿赛道,建立从算法到落地的系统判断力,为下一代智能计算做好准备。

目录
  1. 可视化演示
  2. 量子神经元定义
  3. 参数化线路设计
  4. 梯度训练机制
  5. 量子经典混合
  6. 分类任务实证
  7. 量子优势探索
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

演示量子神经网络三层架构(编码-变分-测量)、参数化量子电路门序列及混合量子-经典训练过程,交互调节量子比特数观察电路规模变化。

本节配有交互动效(进入视口后自动加载,约 3KB)。

QNN架构 编码层 变分层 |ψ⟩=U(θ)E(x)|0⟩ 三层架构实现量子态编码变换测量

量子神经元定义

经典神经元是一位严格的配料员:把输入乘以权重、加总、过激活函数,决定是否传递信号。量子神经元则像主厨手里那块“会分身的量子食材”——同一块牛排可以同时处于三分熟和七分熟的叠加,只有当客人“尝一口”(测量)时,才定格成一种口感。这种“未尝之前同时具备多种状态”的能力,就是量子叠加。

用数学语言说,量子比特的状态写作叠加态 $|ψ\rangle = \cos(θ/2)|0\rangle + \sin(θ/2)|1\rangle$,其中 |0⟩ 和 |1⟩ 各自携带概率幅。量子神经元的核心操作,是作用一个带参数 θ 的旋转门 $R_y(θ)$,像转动调味旋钮一样改变甜咸两种成分的比例:

那么“尝一口”如何打分?量子神经元用测量算符 Z 的期望值作为输出:Z 对 |0⟩ 记 +1 分、对 |1⟩ 记 −1 分,像给甜口 +1、咸口 −1 的评分牌。末态中两种成分概率分别乘以对应分数再加总,恰好化简为 cos θ:

回看经典神经元:先“加权求和”再“激活函数”;量子神经元则是“旋转调参”再“测量期望”。两者都把输入映射为非线性输出,只是量子食材多了一份叠加的味道——一个旋钮角 θ,就决定了一道菜从甜到咸的连续变化。

Ry(θ)=(cos⁡θ2−sin⁡θ2sin⁡θ2cos⁡θ2)\displaystyle R_y(\theta) = \begin{pmatrix} \cos\frac{\theta}{2} & -\sin\frac{\theta}{2} \\[2mm] \sin\frac{\theta}{2} & \cos\frac{\theta}{2} \end{pmatrix}
公式含义:量子神经元=旋转门变换+测量算符期望。cos θ 的值域在 [−1,1] 之间,形态很像经典激活函数 tanh。
  1. 构造测量算符Z 算符对 |0⟩ 返回 +1、对 |1⟩ 返回 −1,相当于给两种口感各贴一个分数。
    Z∣0⟩=∣0⟩,Z∣1⟩=−∣1⟩Z|0\rangle = |0\rangle, \qquad Z|1\rangle = -|1\rangle
  2. 计算期望值两种成分出现的概率分别乘对应分数再相加,利用半角公式化简为 cos θ。
    ⟨Z⟩θ=cos⁡2θ2−sin⁡2θ2=cos⁡θ\langle Z \rangle_\theta = \cos^2\frac{\theta}{2} - \sin^2\frac{\theta}{2} = \cos\theta
  3. 激活函数角色cos θ 将任意旋转角映射到 [−1,1],提供了非线性压缩能力,充当量子版的激活函数。
    cos⁡θ∈[−1,1]\cos\theta \in [-1, 1]

参数化线路设计

一位主厨做宴席,一道菜显然不够,需要把多道工序排成一条流水线。QNN 的参数化量子线路就是这份“量子菜谱”:n 个量子比特是 n 份食材,每一层先用若干旋转门“调味”,再用纠缠门让食材互相“串味”,重复 d 层后完成整桌菜。这份菜谱的特别之处在于,它把经典的“层”结构搬进了量子线路。

线路由两类积木搭成。第一类是单比特旋转门 $R_y(θ)$ 或 $R_z(θ)$,它们只改变单个食材的性质,是全部可训练参数的存放处;第二类是两比特受控非门 CNOT,它让两个比特产生量子纠缠——这是经典菜谱里没有的“分子料理”手段。两类门交替堆叠,形成“调味—串味—调味”的节奏:

这份菜谱的可调节点全部集中在旋转角 $\theta_i^{(l)}$ 上,通常只有几十个参数。线路深度 d 是一个重要权衡:太浅则特征加工不足,太深则噪声累积、梯度消失。在 NISQ(含噪中等规模量子)时代,研究者倾向“浅而宽”的线路——用尽量少的层数发挥尽量大的表达力。

U(θ)=∏l=1d[(⨂i=1nRi(l)(θi(l)))⋅Uent]\displaystyle U(\boldsymbol{\theta}) = \prod_{l=1}^{d} \left[ \left( \bigotimes_{i=1}^{n} R_i^{(l)}(\theta_i^{(l)}) \right) \cdot U_{\text{ent}} \right]
公式含义:整体线路是 d 层的乘积,每层由 n 个并行旋转门加一个固定的纠缠门组成。可训练参数全部浓缩在旋转角 θ 中。
  1. 逐层组合外层连乘 $\prod$ 表示“先做第一层、再做第二层”,矩阵乘法从右到左对应时间上的先后顺序。
    U=Ud⋯U2⋅U1U = U_d \cdots U_2 \cdot U_1
  2. 层内并行内层张量积 $\bigotimes$ 表示同一层里每个比特各自做自己的旋转,互不干扰,像同时给 n 份食材独立调味。
    ⨂i=1nRi(l)(θi(l))=R1⊗R2⊗⋯⊗Rn\bigotimes_{i=1}^{n} R_i^{(l)}(\theta_i^{(l)}) = R_1 \otimes R_2 \otimes \cdots \otimes R_n
  3. 纠缠穿插$U_{\text{ent}}$ 是固定的 CNOT 层,不含可训练参数,负责制造比特间的关联,让味道互相渗透。
    Uent=∏(p,q)CNOTp,qU_{\text{ent}} = \prod_{(p, q)} \mathrm{CNOT}_{p, q}

梯度训练机制

主厨如何把菜越做越好吃?靠“试菜—评分—微调”的笨功夫。QNN 的训练一模一样:给定一组参数 θ,把数据喂进线路,测量得到输出,计算“难吃程度”(损失函数),再往“变好吃”的方向微调 θ,反复迭代。经典神经网络用反向传播算梯度,依赖每一层的中间导数;量子线路却没法“中途检查”——测量就会坍缩状态,内部信息全被破坏。

于是量子领域发明了一个精巧的替代品:参数平移法则(parameter shift rule)。它的思路非常朴素:固定其他参数,只把某个旋钮分别拧大 π/2 和拧小 π/2,各尝一次菜,两次“难吃程度”的差的一半,就是该旋钮对咸淡的敏感度,也就是梯度:

为什么这招能用?因为含参幺正门 $R(θ) = e^{-iθP/2}$ 中生成元 P 的本征值只有 ±1/2,导致损失函数对 θ 的依赖恰好是正弦/余弦形式,差商恰好等于导数。主厨的笨功夫其实最聪明:不用知道每道工序内部的化学反应,只靠“前后各试一次”就能确定下一步的调整方向——这正是量子与经典协作的桥梁。

∂L∂θj=12[L(θj+π2)−L(θj−π2)]\displaystyle \frac{\partial L}{\partial \theta_j} = \frac{1}{2} \left[ L\left(\theta_j + \frac{\pi}{2}\right) - L\left(\theta_j - \frac{\pi}{2}\right) \right]
公式含义:把第 j 个参数前后各平移 90 度,分别评估损失,差值的一半就是梯度。它不需要反向传播,是量子硬件上的“黑盒求导”。
  1. 正负平移采样其余参数不动,只需把 $\theta_j$ 分别加减 $\pi/2$,像把某味调料分别加多和加少后各尝一次。
    L(θj+π2),L(θj−π2)L\left(\theta_j + \frac{\pi}{2}\right), \qquad L\left(\theta_j - \frac{\pi}{2}\right)
  2. 求差取半两次损失的差除以 2 得到精确梯度。对旋转门这类生成元本征值为 ±1/2 的门,该等式是精确成立的。
    ∂L∂θj=L(θj+π/2)−L(θj−π/2)2\frac{\partial L}{\partial \theta_j} = \frac{L(\theta_j + \pi/2) - L(\theta_j - \pi/2)}{2}
  3. 梯度下降更新拿到梯度后沿负方向走一小步,学习率 η 控制步长,对应“刚才太咸就少放盐”。
    θj(t+1)=θj(t)−η ∂L∂θj\theta_j^{(t+1)} = \theta_j^{(t)} - \eta\, \frac{\partial L}{\partial \theta_j}

量子经典混合

现在的量子硬件像一台“脾气古怪的分子料理机”:能做出经典锅做不出的味道,但极其娇贵、噪声大、容易出错。聪明的主厨不会让料理机干所有事,而是自己负责思考和决策,让料理机只负责最拿手的那一步。这就是量子经典混合架构,也叫变分量子线路(VQC)。

训练流程形成一个四步循环:(1) 经典侧预处理数据并编码进量子态;(2) 量子侧运行参数化线路完成“特征提取”;(3) 量子侧测量期望值并送回经典;(4) 经典侧用优化器(SGD、Adam 等)更新参数,开始下一轮。量子负责高维空间的魔法,经典负责聪明的学习策略:

混合架构还有一个现实好处:量子部分只需支持“运行线路并测量”这个原始能力,不需要量子纠错、不需要量子内存,正好匹配当前 NISQ 硬件的水平。缺点也很明显:经典与量子之间每次通信都有延迟和采样开销,推理吞吐量远不及纯经典方案。就像主厨只在最关键的一道工序上使用料理机,混合架构是在硬件不完美时代最务实的分工智慧。

L(θ)=1N∑i=1N(fQNN(xi,θ)−yi)2\displaystyle L(\boldsymbol{\theta}) = \frac{1}{N}\sum_{i=1}^{N} \left( f_{\text{QNN}}(x_i, \boldsymbol{\theta}) - y_i \right)^2
公式含义:混合训练的损失函数是量子线路输出与真实标签的均方误差。量子线路负责出“数”,经典优化器负责出“方向”。
  1. 单样本偏差$f_{\text{QNN}}(x_i, \boldsymbol{\theta})$ 是量子线路对第 i 个样本的输出(测量期望值),$y_i$ 是真实标签,两者之差的平方度量这次“试菜”偏差多大。
    (fQNN(xi,θ)−yi)2\left( f_{\text{QNN}}(x_i, \boldsymbol{\theta}) - y_i \right)^2
  2. 全体平均对所有 N 个样本的偏差取平均,得到整个训练集的平均“难吃程度”。
    1N∑i=1N(⋅)\frac{1}{N}\sum_{i=1}^{N} \left( \cdot \right)
  3. 最小化目标训练就是寻找使 L(θ) 最小的参数位置,量子出数、经典出方向,各司其职。
    θ∗=arg⁡min⁡θL(θ)\boldsymbol{\theta}^{*} = \arg\min_{\boldsymbol{\theta}} L(\boldsymbol{\theta})

分类任务实证

菜谱再好,要客人买单才算数。QNN 最常见的验证场景是分类任务:把数据编码进量子态,跑完线路,测量输出,用阈值把结果切成不同类别。这就像主厨根据“最终口感评分”决定菜品归入甜口还是咸口。整个流程中最关键的是第一步——如何把经典数据“写进”量子食材。

最常用的是角度编码:把每个特征 $x_i$ 直接映射为 $R_y$ 门的旋转角。于是量子分类器对样本 x 的输出可以写成:先编码、再变分、后测量的期望值:

在小规模实验(Iris 子集、手写数字子集、合成数据集)中,QNN 的分类准确率通常能与经典线性模型或小型网络打平,偶尔略好。但要注意实验环境的“温室效应”:数据量小、比特数少、噪声受控。换到真实大规模数据,QNN 目前还远不是 GPU 上深度网络的对手。这道量子菜肴端上桌后,评委的评价是:“味道独特,但还没到惊艳。”分类任务验证了 QNN 的可行性,却尚未验证其不可替代性。

f(x,θ)=⟨0⊗n∣Uq†(θ) Uc†(x) O^ Uc(x) Uq(θ)∣0⊗n⟩\displaystyle f(x, \boldsymbol{\theta}) = \langle 0^{\otimes n} | U_q^\dagger(\boldsymbol{\theta})\, U_c^\dagger(x)\, \hat{O}\, U_c(x)\, U_q(\boldsymbol{\theta}) | 0^{\otimes n} \rangle
公式含义:数据先被编码进量子态,参数化线路做特征加工,最后对测量算符求期望值,输出一个实数用于分类决策。
  1. 先编码后变分$U_c(x)$ 先把数据写进量子态,$U_q(\boldsymbol{\theta})$ 再对态做参数化的特征加工,顺序不能颠倒。
    ∣ψ(x,θ)⟩=Uq(θ) Uc(x) ∣0⊗n⟩|\psi(x, \boldsymbol{\theta})\rangle = U_q(\boldsymbol{\theta})\, U_c(x)\, |0^{\otimes n}\rangle
  2. 测量期望值对末态求 $\hat{O}$ 的期望值,输出一个实数作为模型预测,这就是端上桌的“口感评分”。
    ⟨O^⟩=⟨ψ∣ O^ ∣ψ⟩\langle \hat{O} \rangle = \langle \psi |\, \hat{O}\, | \psi \rangle
  3. 阈值决策期望值大于 0.5 判为类 1,否则判为类 0;训练让这个决策面逐步贴合数据分布。
    y^=1[ f(x,θ)>0.5 ]\hat{y} = \mathbb{1}\left[\, f(x, \boldsymbol{\theta}) > 0.5 \,\right]

量子优势探索

主厨的终极梦想,是推出一道“经典厨房绝对做不出来”的招牌菜。量子优势就是这道招牌菜的学术版:是否存在某个任务,量子神经网络能高效解决、而经典神经网络本质上低效?直觉上的超能力来自状态空间的指数级膨胀——n 个量子比特生活在 $2^n$ 维复空间中,而同样 n 个经典比特只能携带 n 个实数信息:

参数化线路虽然只有几十个参数,却能触及指数维空间中的大量区域,这被称为表达力(expressibility)优势:QNN 比经典网络更容易逼近某些复杂函数。但理论分析目前只能给出启发式结论,距离严格证明还很远。更现实的问题是:噪声让高维空间坍缩成低维“烂泥”,测量的统计误差让梯度像在雾里看花,贫瘠高原(barren plateau)让随机初始化的线路梯度指数级消失。这些都是从“理论优势”走向“实际优势”的拦路虎。招牌菜也许真的存在,但厨房还没修好——量子优势探索的意义,不只是追求碾压经典,更是倒逼我们理解什么样的结构复杂度,才是量子真正不可替代的舞台。

dim⁡(H)=2n\displaystyle \dim(\mathcal{H}) = 2^n
公式含义:n 个量子比特的希尔伯特空间维度是 2 的 n 次方。叠加态的“乘法效应”让状态空间指数级膨胀,这是 QNN 表达力的底气。
  1. 单比特空间一个量子比特的态空间是二维复空间,基底为 |0⟩ 与 |1⟩。
    dim⁡H1=2\dim \mathcal{H}_1 = 2
  2. 张量积放大n 个比特的态空间是各单比特空间的张量积,维度相乘得 $2^n$。
    dim⁡Hn=2×2×⋯×2⏟n 个=2n\dim \mathcal{H}_n = \underbrace{2 \times 2 \times \cdots \times 2}_{n\ \text{个}} = 2^n
  3. 对比经典经典 n 比特只有 $2^n$ 个离散状态,而量子态还拥有连续的概率幅自由度,信息承载方式完全不同。
    2n≫2n(n≥3)2^n \gg 2n \qquad (n \geq 3)

AI 应用场景

药物分子性质预测

阶段:模型设计与混合推理

解决的问题:药物分子的溶解度、结合能等性质预测长期依赖人工特征工程,强非线性关系难以捕捉。QNN 可将分子描述符编码进量子态,利用纠缠特征空间捕获分子内部电子关联等经典模型难以表达的模式;混合架构让经典侧负责优化与验证,量子侧负责高维特征提取,非常适合样本量小但特征维度高的药物筛选场景。

具体案例:某量子计算初创公司与制药企业合作,用 4–8 比特的 QNN 对数百个候选分子的活性做二分类排序,在经典模拟器上实现与 SVM 相当的 AUC 曲线,同时将量子计算单元限制在数十次测量内,契合当前真实硬件算力。

金融欺诈检测的量子特征增强

阶段:特征工程与数据编码

解决的问题:欺诈交易数据高维且高度不平衡,经典模型容易过拟合。用角度编码把交易特征映射为量子旋转门角度,参数化线路自动构造纠缠化的高维特征,再交给经典分类头,可减少人工特征工程带来的偏差。

具体案例:银行风控团队在量子仿真后端上,将 20 维脱敏交易特征编码进 6 比特 QNN,与 XGBoost 做模型融合。实验发现混合模型在召回率上提升约 3 个百分点,但推理耗时是纯经典的十余倍,目前仅用于离线复核场景试运行。

高校量子机器学习教学与验证平台

阶段:算法教学与仿真验证

解决的问题:无法接触真实量子硬件的学习者,难以直观理解参数平移法则、测量坍缩等 QNN 关键机制。用状态矢量模拟器实现教材中的参数化线路与梯度训练,可以低成本验证算法正确性,破除“量子必须靠特殊硬件才能学”的门槛。

具体案例:某高校“量子机器学习”课程要求学生用 numpy 实现两比特 QNN 并在合成数据集上训练,通过对比参数平移梯度与数值差分验证代码正确性。课程结束后,优秀学生项目被部署到云端 5 比特真实量子后端做最终验证。

Python 演示

python89 行
import numpy as np  class SimpleQNN:    """两比特 QNN: Ry 旋转 + CNOT 纠缠 + 测量"""     def __init__(self):        self.theta = np.array([0.5, 0.8, 1.2, -0.6])     def apply_ry(self, psi, q, ang):        c, s = np.cos(ang / 2), np.sin(ang / 2)        new = psi.copy()        for b in range(4):            if ((b >> (1 - q)) & 1) == 0:                new[b] = c * psi[b] - s * psi[b + (1 << (1 - q))]            else:                new[b] = s * psi[b - (1 << (1 - q))] + c * psi[b]        return new     def apply_cnot(self, psi, ctrl, tgt):        new = psi.copy()        for b in range(4):            if ((b >> (1 - ctrl)) & 1) == 1:                f = b ^ (1 << (1 - tgt))                if f > b:  # 只交换一次, 避免重复交换                    new[b], new[f] = psi[f], psi[b]        return new     def state_vector(self, x, theta):        psi = np.zeros(4, dtype=complex)        psi[0] = 1.0        for i in range(2):            psi = self.apply_ry(psi, i, x[i])        psi = self.apply_ry(psi, 0, theta[0])        psi = self.apply_ry(psi, 1, theta[1])        psi = self.apply_cnot(psi, 0, 1)        psi = self.apply_ry(psi, 0, theta[2])        psi = self.apply_ry(psi, 1, theta[3])        return psi     def predict(self, x):        psi = self.state_vector(x, self.theta)        return abs(psi[0]) ** 2 + abs(psi[1]) ** 2     def loss(self, X, y):        return np.mean([(self.predict(x) - y[i]) ** 2 for i, x in enumerate(X)])     def grad(self, X, y):        g = np.zeros(4)        old = self.theta.copy()        for j in range(4):            self.theta = old.copy()            self.theta[j] += np.pi / 2  # 参数平移: 加 pi/2 求一次损失            lp = self.loss(X, y)            self.theta = old.copy()            self.theta[j] -= np.pi / 2  # 再减 pi/2 求一次损失            lm = self.loss(X, y)            g[j] = (lp - lm) / 2        self.theta = old        return g     def train(self, X, y, epochs=60, lr=0.15):        hist = []        for _ in range(epochs):            self.theta -= lr * self.grad(X, y)            hist.append(self.loss(X, y))        return hist  def main():    rng = np.random.default_rng(42)    X = rng.uniform(-1, 1, (40, 2))    y = np.array([1.0 if x[0] ** 2 + x[1] ** 2 < 0.7 else 0.0 for x in X])     qnn = SimpleQNN()    hist = qnn.train(X, y)     hits = 0    for _ in range(10):        x = rng.uniform(-1, 1, 2)        label = 1.0 if x[0] ** 2 + x[1] ** 2 < 0.7 else 0.0        pred = 1.0 if qnn.predict(x) > 0.5 else 0.0        hits += (pred == label)    print("loss %.4f -> %.4f" % (hist[0], hist[-1]))    print("test acc: %.0f%%" % (hits / 10 * 100))  if __name__ == "__main__":    main()
目的:用纯 numpy 从零模拟一个两比特 QNN 的分类训练过程,并用参数平移法则计算梯度,直观演示“尝一口再微调”的量子训练循环。
  1. psi = np.zeros(4, dtype=complex)初始化 2 比特系统的态矢量,4 个复数概率幅全部为 0。
  2. psi[0] = 1.0把初态设为 |00⟩,相当于食材还没开始调味。
  3. for i in range(2): psi = self.apply_ry(psi, i, x[i])角度编码:把数据特征 x 映射成旋转门角度。
  4. psi = self.apply_cnot(psi, 0, 1)CNOT 纠缠门,让两个比特互相“串味”。
  5. return abs(psi[0]) ** 2 + abs(psi[1]) ** 2测量第一个比特为 |0⟩ 的概率,作为模型输出。
  6. self.theta[j] += np.pi / 2参数平移:先把第 j 个参数加 π/2 算一次损失。
  7. g[j] = (lp - lm) / 2两次损失差的一半就是梯度,正是参数平移法则。
  8. self.theta -= lr * self.grad(X, y)梯度下降更新:沿负梯度方向微调“调味旋钮”。
  9. X = rng.uniform(-1, 1, (40, 2))生成 40 个二维数据点作为训练集。
  10. label = 1.0 if x[0] ** 2 + x[1] ** 2 < 0.7 else 0.0圆形分类规则:圆内类 1、圆外类 0。

常见误区

误区量子神经网络这个名字里带着“神经网络”,那它一定和深度网络一样,靠堆参数、加层数来提升效果,参数量越多模型越强。

正解QNN 的可训练参数通常只有几十个,其“威力”来自这些参数通过量子门作用在 $2^n$ 维状态空间上,而不是来自参数数量本身。这就像主厨只有几个调味旋钮,却能靠量子食材的叠加与纠缠特性变化出指数级多的味道组合。参数一多,反而容易触发贫瘠高原问题,梯度指数级消失,训练彻底失败。

为何常见:名字里的“神经网络”让人自动套用深度学习“大力出奇迹”的经验,忽略了量子线路浅而短的结构特点。

误区经典神经网络用反向传播算梯度,量子神经网络也应该用链式法则自动微分;一旦代码报错“无法求梯度”,就觉得是框架不支持。

正解量子线路在执行过程中无法“中途取数”——测量会使态矢量坍缩,破坏中间信息。因此 QNN 在量子硬件上使用参数平移法则:把参数前后各平移 π/2 跑两次线路,用损失差的一半得到精确梯度,再交给经典优化器。它不是反向传播的替代品,而是量子特有的求导方式。

为何常见:习惯了 PyTorch 的 autograd 后,会默认“所有可微模型都能反向传播”;而量子线路的测量坍缩特性是经典计算里不存在的障碍。

误区既然 n 个量子比特有 $2^n$ 维状态空间,那比特数多了 QNN 自然碾压一切,10 比特就能吊打经典深度网络。

正解状态空间大只是“理论容量”,实际还要过三关:硬件噪声会破坏高维量子态的保真度;有限测量次数带来统计误差;参数增多后会遭遇贫瘠高原,梯度指数级消失。当前真实硬件上 10 比特 QNN 的可靠表现,往往不如经典模拟器上的小模型。容量是纸面实力,端上桌才算数。

为何常见:“指数级加速”的营销话术深入人心,把希尔伯特空间的维度直接等同于实际计算能力。

误区测量一次得到期望值后,量子态还存在,可以继续做后续计算,就像经典程序里读取一个变量后变量还在一样。

正解测量是破坏性的——它会将叠加态“坍缩”成某个确定基态,之后所有的叠加与纠缠信息全部丢失。因此每条样本跑完线路后,都需要重新制备初态、重新编码、重新演化。这也是 QNN 推理吞吐量远低于经典模型的原因之一:无法像经典缓存那样“读一次用多次”。

为何常见:经典计算的“读操作不破坏数据”太根深蒂固,人们很难想到“看一眼”本身就会改变系统的状态。

面试题

Q1. 量子比特可以“既是 0 又是 1”的能力被称为什么?

单选题 · easy

  • A.同时处于两种状态的属性← 正确答案
  • B.两个比特的纠缠关联性
  • C.测量后状态坍缩的特性
  • D.经典比特的确定态特性

答案:A。叠加态是量子比特区别于经典比特的核心属性,让它能同时携带 |0⟩ 和 |1⟩ 的信息,如同食材同时具备甜咸两种味道。纠缠是比特间的关联,坍缩是测量的结果,确定态则是经典比特的特性。

Q2. 旋转门 R_y(θ) 在量子神经网络中的作用是什么?

单选题 · easy

  • A.让比特绕 Y 轴旋转角度 θ← 正确答案
  • B.对话输入数据做线性变换
  • C.对比特执行测量并输出结果
  • D.让比特绕 Z 轴翻转状态符号

答案:A。R_y(θ) 是绕布洛赫球 Y 轴旋转 θ 的单比特门,作用是调节叠加态中的概率幅,相当于转动调味旋钮。测量由专门的测量操作完成,Z 轴旋转对应 R_z 门,线性变换则是经典层的职责。

Q3. 测量量子态得到某个结果的概率与什么直接相关?

单选题 · easy

  • A.概率幅绝对值的平方← 正确答案
  • B.概率幅本身的实数部分
  • C.旋转角度的正弦函数值
  • D.神经网络层数平方值

答案:A。玻恩定则指出,测量得到某状态的概率等于该状态概率幅模长的平方,如同“客人选到某种口味的概率取决于该口味的准备程度”。实部、正弦值、层数都不是量子测量概率的依据。

Q4. 参数平移法则主要用于 QNN 训练的哪个环节?

单选题 · mid

  • A.计算可训练参数的梯度值← 正确答案
  • B.将经典数据编码成量子态
  • C.对测量结果进行统计分析
  • D.设计纠缠门的连接拓扑

答案:A。参数平移法则专门用来在量子硬件上求梯度:把参数分别平移 ±π/2 各跑一次线路,用两次损失差的一半得到梯度。数据编码由编码门完成,结果统计是经典侧的事,纠缠门拓扑属于线路设计。

Q5. 参数平移法则中,损失函数对参数 θ 的梯度形式是?

单选题 · mid

  • A.平移 π/2 的两个损失差的一半← 正确答案
  • B.平移 π 的两个损失差的一半
  • C.平移 π/2 的两个损失和的一半
  • D.平移 π/4 的两个损失差的一倍

答案:A。参数平移法则的精确形式是 (L(θ+π/2) − L(θ−π/2))/2,因为含参门生成元本征值为 ±1/2 时损失函数呈正弦形式。平移 π 会进入错误的相位周期,求和会抵消梯度,一倍的比例不符合公式推导。

Q6. 关于量子经典混合架构,下列说法正确的有?

多选题 · mid

  • A.经典优化器负责更新门参数← 正确答案
  • B.量子处理器负责执行态演化← 正确答案
  • C.数据编码必须在经典层完成
  • D.测量后量子态仍然可以复用

答案:AB。混合架构中经典侧运行优化器更新参数、处理数据,量子侧执行态演化与测量。数据编码由量子侧的旋转门完成,测量会坍缩量子态,因此无法在测量后复用同一量子态,故 C、D 错误。

Q7. 将经典数据 x 送入量子分类器通常采用什么方式?

单选题 · mid

  • A.将数据映射为旋转门角度← 正确答案
  • B.将数据直接存入量子硬盘
  • C.将测量结果反馈给经典层
  • D.用经典网络处理后丢掉数据

答案:A。最常用的角度编码把每个特征直接映射为 R_y 门的旋转角,将数据写进量子比特的概率幅中。量子系统没有“硬盘”存储概念,经典层只处理测量结果而非直接参与编码。

Q8. 制约当前量子神经网络实际应用的因素包括?

多选题 · hard

  • A.硬件噪声导致保真度下降← 正确答案
  • B.测量次数有限统计误差大← 正确答案
  • C.梯度消失的贫瘠高原问题← 正确答案
  • D.经典模拟器完全无法胜任

答案:ABC。当前 QNN 受三大约束:硬件噪声破坏量子态保真度,有限测量次数引入统计误差,参数过多时梯度指数级消失(贫瘠高原)。但小规模 QNN 完全可以用经典模拟器仿真,所以 D 错误。

Q9. 关于 QNN 与经典神经网络对比,下列说法正确的有?

多选题 · hard

  • A.参数作用在指数级空间中← 正确答案
  • B.在多数任务上已全面占优
  • C.用测量期望值作为模型输出← 正确答案
  • D.参数量通常远超经典网络

答案:AC。QNN 的少量参数通过量子门作用在 $2^n$ 维希尔伯特空间上,输出通过测量期望值获得。但目前 QNN 并未在多数任务上全面占优,且参数量通常远少于经典深度网络,故 B、D 错误。

Q10. 参数平移法则精确成立的前提条件是什么?

单选题 · extreme

  • A.门的生成器本征值限于 ±1/2← 正确答案
  • B.线路必须包含 CNOT 纠缠门
  • C.损失函数必须是二次函数
  • D.比特数必须等于线路深度

答案:A。参数平移法则成立的前提是含参门的生成元只有 ±1/2 两个本征值(如 R_y = e^{−iθY/2}),此时损失函数是 θ 的纯正弦函数,差商恰好等于导数。CNOT、二次损失、比特数与深度的关系都不是该法则成立的条件。