资讯动态

量子测量原理:从计算基到任意观测量的换基测量

发布时间:2026/10/3 4:34:23 来源:尧图企业网站定制
做量子计算的人天天和“叠加”“纠缠”打交道但真正到了跑实验、看结果这一步所有花哨的量子特性都会收敛成一个朴素的经典问题你到底怎么把信息从量子态里读出来我第一次在模拟器里打印自旋态的波函数时以为那就是“测量”了后来才发现那只是开了后门在看态矢量真实的物理测量是另一套完全不同的逻辑。这套逻辑的核心就是标题里那两件事观测量和计算基。这篇文章要做的就是把“计算基下的测量”彻底讲清楚再从它出发讲明白任意观测量是怎么转化成计算基测量、落到真实硬件上的。适合正在学量子计算、或者刚上手量子编程、对measure这条指令背后的原理还半懂不懂的人。1. 测量是整个量子计算里最“反直觉”的一环1.1 经典世界的读数直觉在这里失效了在经典世界里测量几乎是“无痛”的。你用温度计测水温温度计会从水里吸走一点点热量但这点影响小到可以忽略用尺子量桌子长度尺子不会改变桌子。所以我们会形成一种根深蒂固的直觉观测一个物理量应该是探测系统原本就有的某个属性读数是对客观状态的忠实反映。量子世界完全不讲这个道理。你测量一个量子比特不只是“看一眼”而是用一个宏观测量装置去触碰一个微观系统这个触碰会把量子态彻底改写。在薛定谔方程的框架里封闭的量子系统只能做幺正演化也就是线性、保内积的确定性变换但测量过程的数学是完全另一套——投影、坍缩、随机性。它不是薛定谔方程的结果而是量子力学公设体系里单独拿出来的一条跟演化方程平起平坐。一个硬币的类比很形象一个旋转中的硬币同时“具备”正面和反面的趋势就像处在叠加态。所谓测量不是给你一个高速相机拍清楚硬币旋转的每一帧而是你伸手一按硬币直接被拍死在桌上你看到的是正面或反面中的一个。硬币“被迫”做出选择而不是被你观察到它一直在旋转的事实。量子态的测量就是这种“强制出结果”的过程。1.2 投影测量把态“拍”到一组基矢上量子测量的标准数学形式是这样的一组测量算符{M_m}要对态|ψ⟩起作用需要满足完备性条件Σ_m M_m†M_m I。测量得到第m个结果的概率是p(m) ⟨ψ|M_m†M_m|ψ⟩如果结果是m测量后的态会坍缩为M_m|ψ⟩ / √p(m)最常用、也最容易理解的是投影测量也就是每个M_m本身就是正交投影算符P_m² P_mP_m P_k δ_mk P_m且Σ_m P_m I。计算基测量就是这组投影算符取P₀ |0⟩⟨0|和P₁ |1⟩⟨1|的特例。说人话就是测量开始前你的态是“许多基矢的叠加”测量执行的那一刻系统随机选中其中一个基矢把所有概率都压到这个基矢上。选中的概率等于这个基矢分量模长的平方。測完你手里只有一个经典结果态也变成这个基矢本身。1.3 单次测量的信息量极其有限这是很多新手会忽略的关键认知一次测量只能返回一个经典读数而且这个读数是按概率随机抽出来的。你准备一个任意态|ψ⟩ α|0⟩ β|1⟩测量一次得到0你能据此推出α、β是多少吗得不到。0这个结果只告诉你“这次抽样命中了|0⟩”既不能告诉你α很大也不能说β就已经是零了。想要估计α和β唯一的方法是制备大量同样的态对每一份各做一次测量然后统计0和1出现的频率。频率接近|α|²和|β|²但永远不会完全等于。这套流程叫量子态层析本质是从多次测量的统计信息里反推量子态。所以把“从量子态中读取信息”理解成“测一次就拿到所有信息”是最危险的误会——真实情况是你通过成千上万次重复测量得到一组统计估计值。2. 计算基下的测量实验里最常用的那套“标准镜头”2.1 计算基到底是什么单比特的计算基就是{|0⟩, |1⟩}多比特的计算基是它们的张量积空间所有可能的二进制字符串|00…0⟩, |00…1⟩, …, |11…1⟩。这组基之所以叫“计算基”是因为量子电路的最终输出、错误纠正的判定、经典后处理的解析全都围绕这些二进制串展开。你跑一个量子算法最后拿到的就是一串串“0101、0011”这样的经典比特串。说白一点量子计算机的“出口”说的人类语言就是二进制。计算基还有一个更矩阵化的身份它是Pauli-Z算符的本征基。Z [[1,0],[0,-1]]本征值1对应|0⟩本征值-1对应|1⟩。这个身份看起来不起眼后面讲观测量和换基测量时是全篇的关键。2.2 计算基测量的规则与坍缩细节对一个任意单比特态|ψ⟩ α|0⟩ β|1⟩做计算基测量得到0的概率是|α|²得到1的概率是|β|²如果结果是0态变成|0⟩如果结果是1态变成|1⟩所有原本叠加在α、β里的相对相位信息在测量后全部丢失多比特情况同理测量结果是比特串x的概率p(x) |⟨x|ψ⟩|²测量后态变成|x⟩。对于张量积态各比特的结果可以分开算对于纠缠态则不行——纠缠态的比特结果之间有关联必须把整个比特串当成一个整体来理解。后面第6节我会单独展开这一点。2.3 最简实验跑一次计算基测量下面用Qiskit展示最基础的代码让你直观看到测量结果长什么样from qiskit import QuantumCircuit, Aer, execute qc QuantumCircuit(1, 1) qc.h(0) # 制备 |⟩ (|0⟩ |1⟩)/√2 qc.measure(0, 0) # 计算基测量 backend Aer.get_backend(qasm_simulator) job execute(qc, backend, shots1024) counts job.result().get_counts() print(counts)运行结果大概是这样{0: 513, 1: 511}你会发现每次运行数字都在变512附近的波动完全正常。这就是量子测量的统计本质量子程序本身是确定性的制备过程但测量引入的随机性让结果变成了随机变量。你写的上百行量子线路最终能被外界看到的全部输出就是这样一个计数字典。后续所有置信区间、期望值、算法正确性判断都建立在这种计数字典之上。3. 观测量决定你“能看到什么”的数学对象3.1 为什么必须用厄米算符表示观测量计算基测量是最直观的但实际物理中我们想测的量远远不止“0或1”——可能是能量、自旋方向、动量、角动量等。这些物理量在量子力学里都有一个共同身份它们都是厄米算符。厄米算符A满足A† A这个性质带来两个关键推论。第一本征值一定是实数。测量结果要能被记录成经典数据必须是实数如果算符本征值是复数你连“读到一个数”都做不到。第二不同本征值对应的本征态相互正交所有本征态张成完整的希尔伯特空间。这意味着厄米算符的本征态天然构成一组正交基可以用来展开任何量子态。可以用个接地气的类比每个观测量就像一栋楼里的各种闸机能量闸机、自旋闸机、位置闸机……每个闸机只认自己的本征态你的量子态经过闸机时会被强制归属到某一类然后贴上本征值的标签。贴出来的标签一定是实数不然没法记账。3.2 谱分解把一个观测量拆成一组“镜头”厄米算符还有一个非常实用的数学性质——谱分解。任意观测量A都可以写成A Σ_i λ_i |a_i⟩⟨a_i|其中λ_i是实数本征值|a_i⟩是对应的本征态。这个式子意味着测量A等价于在{|a_i⟩}这组本征基下做投影测量。测量结果为λ_i的概率是p(λ_i) |⟨ψ|a_i⟩|²测量后态坍缩为|a_i⟩。换句话说一个观测量不只是“一个算符”它自动携带了一套测量基、一组可能读数和一套概率规则。这是量子力学里“测量什么”和“怎么测量”被封装在同一个数学对象里的地方。3.3 期望值重复测量能提取到的核心统计量单次测量的结果随机但多次测量可以给出稳定的统计特征。观测量的期望值定义为⟨A⟩ ⟨ψ|A|ψ⟩ Σ_i λ_i p(λ_i)也就是说期望值是所有可能读数λ_i按概率加权平均的结果。实验上你无法直接“看到”⟨A⟩只能通过有限次数测量得到它的估计值把每次的读数按本征值映射成数值求平均值。估计值和真实期望之间隔着采样误差这个误差是量子实验报告中不可省略的一部分我在第5节详细说明。3.4 计算基测量其实就是测Pauli-Z观测量现在把前两节串起来理解计算基测量不是一种“没有观测量”的测量它恰恰就是最基本观测量Pauli-Z的测量。因为Z |0⟩⟨0| - |1⟩⟨1|测量Z读数只能取1对应|0⟩或-1对应|1⟩。实验里你看到的经典比特“0”映射到Z的值是1比特“1”映射到Z的值是-1。这个映射非常重要计算基测量得到的计数通过简单的公式就能转成Z期望值⟨Z⟩ (counts[0] - counts[1]) / total_shots一旦想通这一点任意的观测量测量就有了出口只要能把观测量变成“某个方向上的Z”就能在只有计算基测量能力的硬件上读出它的期望值。4. 把任意观测量转化成计算基测量换基三板斧4.1 物理设备只懂计算基语言绝大多数量子硬件超导、离子阱的最终读出环节都只支持计算基测量。你在实验计划里写“测量X方向自旋”“测量Y方向自旋”硬件并不能直接照做。它得先通过一组量子门把待测的观测量“转”到计算基方向然后再用自己那套计算基读出来。这个过程就是换基测量。这里给出一个通用流程记熟了几乎所有观测量都能测设目标观测量为A做谱分解A Σ_i λ_i |a_i⟩⟨a_i|找到幺正变换U使得U†AU变成对角矩阵也就是把A的本征态映射到计算基测量线路里先给态施加U†再做计算基测量经典后处理时把比特结果映射回对应的本征值λ_i为什么施加的是U†而不是U因为如果U|z⟩ |a_z⟩U把计算基映射到A的本征基那么输入态|ψ⟩经过U†后U†|ψ⟩在计算基上的分量就等于|ψ⟩在A本征基上的分量。于是对U†|ψ⟩做计算基测量等效于直接对|ψ⟩测量A。这个过程像什么呢想象一台只认识英文的机器你想让它读懂法文的内容不是教机器学会法文而是先把法文翻译成英文再交给它。U†就是把A的本征语言翻译成计算基这门外语的操作。4.2 测X方向一个H门就够X算符的谱分解是X |⟩⟨| - |-⟩⟨-|其中|⟩ (|0⟩|1⟩)/√2|-⟩ (|0⟩-|1⟩)/√2。又因为X HZHH是Hadamard门且H† H所以换基门U就等于H而U†也等于H。因此测量X期望值的线路很简单在原有线路末端加一个H门再做计算基测量。比特结果“0”映射为1“1”映射为-1然后用⟨X⟩ (p₀ - p₁)计算期望值。4.3 测Y方向S门H门的组合Y算符和Z的关系是Y S H Z H S†S是相位门S [[1,0],[0,i]]。所以换基门U S H线路末端需要的U† H S†。在电路里执行顺序是先做S†门再做H门最后计算基测量。用Qiskit把制备态和测Y放在一起看from qiskit import QuantumCircuit, Aer, execute # 制备目标态 |ψ⟩ (|0⟩ i|1⟩)/√2这是Y本征态理论⟨Y⟩ 1 qc_prep QuantumCircuit(1) qc_prep.h(0) qc_prep.s(0) # 测Y换基门 U† H S† qc QuantumCircuit(1, 1) qc.h(0) qc.s(0) qc.sdg(0) # 先 S† qc.h(0) # 再 H qc.measure(0, 0) backend Aer.get_backend(qasm_simulator) job execute(qc, backend, shots8192) counts job.result().get_counts() expectation_y (counts.get(0, 0) - counts.get(1, 0)) / 8192 print(counts, expectation_y)理论期望值是1实测会在1附近浮动通常落在0.95~1之间偏差来自统计采样。这组代码完整演示了“任意观测量→换基→计算基测量→经典映射”的全链路。执行顺序经常有人搞错。U† H S†的意思是函数作用顺序是先S†后H。在Qiskit里写代码时先写qc.sdg(0)再写qc.h(0)才符合这个顺序。写反了的话实际施加的是S H而不是H S†最后测出来的东西就不是Y方向投影了。这种顺序错误在初学阶段非常隐蔽因为我见过不少同学检查半天代码最后才发现是把门的先后写反了。4.4 任意观测量Pauli展开与线性叠加真实问题里的观测量往往不只是单比特X、Y、Z而是作用在多个比特上的复杂算符比如哈密顿量H gZ₁Z₂ hX₁ hX₂。好消息是任意观测量可以写成Pauli字符串的实线性组合A Σ_k c_k P_k其中P_k是Pauli字符串如X₁Z₂、Y₁Y₂等c_k是实数系数。测量A的期望值只需要对每个Pauli项P_k分别用前面的换基方法测出⟨P_k⟩按系数加权求和⟨A⟩ Σ_k c_k ⟨P_k⟩每个Pauli项都可以通过单比特旋转把它对角化到计算基遇到X就用H遇到Y就用H S†Z什么都不用加。多比特项就是每个比特分别做各自的旋转然后整体做计算基投影测量。变分量子本征值求解器的能量估计本质上就是在反复干这件事把哈密顿量拆成Pauli项逐项测期望值再合成总能量。5. 采样误差与设备噪声从“测到了”到“测得准”5.1 shot数决定你的统计分辨力量子测量的结果是随机抽样的产物所以你测多少次、得到什么统计量直接决定测量的可靠性。假设真实的P(0)是0.5你测M次估计出的p₀会围绕0.5波动标准差大约是σ ≈ √(p(1-p)/M)也就是说统计误差和1/√M成正比。想把误差缩小一倍需要把shot数放大四倍。这个代价在模拟器上无所谓但在真机上每次采样都要耗费时间量子比特的相干时间又是有限的所以shot数的选择本质上是精度和成本的权衡。来看一个具体数字。用1024次shot估计一个P0.5的二项分布标准差约1.6%对应到Z期望值的统计误差大约是3%。想压到1%以内shot数得到八九千。如果你的论文或实验报告不标注shots数只写一个“期望值0.98”这个数字其实是无法评估可靠性的。5.2 真实设备上的测量噪声来源模拟器结果是干净的真机则有一堆额外误差源。最典型的三类第一读出错误。设备把量子态映射成经典信号时可能判错把|0⟩误判成1或者反过来。每个比特的读出错误率通常在1%~5%量级不同比特差异很大。第二退相干。量子比特在做测量准备、等待读出的过程中态可能已经在演化衰减了导致测量结果反映的不是预备好的态而是被噪声污染过的态。第三测量串扰。多比特芯片上一个比特的读出信号可能干扰邻近比特的判断尤其在集成度高的设备上很明显。所以不要拿真机的原始计数直接当理论概率。云平台通常提供读校验也就是事先制备已知态|0⟩和|1⟩测出混淆矩阵再用线性逆变换或贝叶斯方法修正原始计数。有的框架里叫“readout error mitigation”有的叫“measurement calibration”本质上都是同一件事。5.3 我的实测踩坑记录分享一个我自己遇到过的案例。当时跑一个两比特回波电路理论保真度99%以上真机结果只有82%左右。我第一反应是门错误调了半天脉冲参数也没改善。后来对每个比特单独做了标定实验发现两个比特的独立读出错误率都只有2%上下但在两个比特同时读出时第二个比特的错误率飙升到10%以上——这是典型的测量串扰。加了一轮读校验矩阵做纠偏结果立刻回到95%附近。这个经历让我养成了一个习惯任何量子测量实验我都先在模拟器上跑一遍理论参考值再上真机时先做标定、再跑正式数据并且报告里一定附上shot数和误差条。没有统计信息的测量结果在不同设备之间根本没有可比性。6. 测量之后坍缩态、多比特测量与调试经验6.1 测量后的态还能不能用投影测量最显著的影响是把叠加态“拍”成了某个计算基态。测完的比特已经不再是原来那个量子态它的相对相位信息也彻底丢失了。在很多算法里一个比特如果被测量后续线路再引用它就该把它当经典比特看而不是继续期待它还有叠加性。如果你想在不破坏主量子态的前提下读取信息常见的做法是用辅助比特做间接测量。把待测信息通过CNOT门耦合到一个辅助比特上然后测量辅助比特这样主比特的相干性只受到耦合过程的扰动而没有被直接的投影测量破坏。当然辅助比特的方案也不是零代价它消耗额外比特和门深度在近中等规模量子设备上要谨慎评估。6.2 多比特测量的整体视角n比特计算基测量的结果是一个长度为n的经典比特串。对于纯张量积态各比特的结果独立你可以分别看每个比特的边际概率但对于纠缠态比特串的联合分布不能拆成单比特分布的乘积。比如Bell态(|00⟩ |11⟩)/√2单个比特测出来0和1各半看起来像是完全随机的但两个比特的结果永远是00或11不存在01或10。这就是测量结果里编码的纠缠关联。量子隐形传态这类的协议前两步使用的就是这种关联先测量其中一个Bell态比特根据测量结果二选一应用相应的恢复门。测量结果在这里不是“终点”而是指导后续操作的经典控制信号。6.3 测量反馈与工程时序问题测量结果驱动后续量子操作叫“measurement-based feedback”或“实时反馈控制”。工程上最麻烦的是时序从测量命令发出到经典信号返回、再到控制器决定并执行下一步门存在一个延迟窗口。如果这个延迟超过量子比特的相干时间反馈就没有意义。这是超导平台上实现实时反馈比较吃力、而有些中性原子或离子阱平台在反馈上有天然优势的原因之一。对于绝大多数不涉及实时反馈的应用测量后处理是纯经典计算简单地把计数映射成期望值或概率分布即可。6.4 调量子测量实验的几条实用建议最后给几条实测总结都是低头写代码时容易踩的坑先跑基准态。把|0⟩、|1⟩、|⟩、|-⟩这些已知态测一遍确认你的测量线路、映射逻辑和理论值一致再开始跑目标态。这一步花不了几分钟但能过滤掉一大堆低级错误。用态矢量做中间检查时要清醒。模拟器里的save_statevector能输出精确波函数但这相当于开挂看了系统内部不是真实测量。它可以帮你确认制备的态是否正确但不能替代测量统计。写换基门时先在纸上把A UDU†和U†的执行顺序列清楚再写代码。顺序错了谱分解做得再漂亮实验结果也是错的。报告期望值必须带统计误差否则你根本没法判断设备和算法的真实表现。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑