当前位置: 首页 > news >正文

量子机器学习实战:用变分量子电路对泰坦尼克数据集分类

1. 项目概述当量子计算遇上经典分类难题量子机器学习QML听起来像是科幻小说里的概念但如果你像我一样在经典机器学习领域摸爬滚打多年再一头扎进量子计算的海洋你会发现它更像是一场激动人心的“跨界实验”。这个领域的核心命题很直接我们能否利用量子力学那些反直觉的特性——比如叠加和纠缠——来为传统的数据分析任务比如分类带来一些新的可能性我最近就花了大量时间亲手实践了这样一个“跨界实验”用变分量子电路VQC来对经典的泰坦尼克数据集进行分类。泰坦尼克数据集对于机器学习从业者来说就像“Hello, World!”对于程序员一样经典。它包含了1309名乘客的信息目标是根据乘客的性别、年龄、舱位等特征预测其是否幸存。这个数据集结构清晰但存在缺失值和不平衡问题是检验模型鲁棒性的绝佳试金石。我的目标不是要证明量子模型在现阶段能“碾压”经典模型那既不现实也无意义。在当前的嘈杂中型量子NISQ时代量子硬件还远未成熟。我的兴趣点在于作为一个混合系统的一部分一个设计得当的量子电路能否在经典优化器的驱动下学习到数据中有效的分类模式并展现出与经典方法可比甚至独特的性能特质。这次实践的核心工具是Qiskit一个由IBM主导的开源量子计算框架。整个流程是典型的“混合量子-经典”范式数据预处理和模型优化在经典计算机上完成而将数据编码为量子态、通过参数化量子电路进行变换以及最终的量子测量则在量子模拟器或未来的真实量子设备上执行。我重点对比了两种不同的量子特征编码方式——ZFeatureMap和ZZFeatureMap并搭配了RealAmplitudes作为变分电路或称ansatz观察不同参数规模下的表现。最终我还将表现最好的量子模型与经典的线性支持向量机SVC进行了一场“公平”对决。整个过程充满了对参数、噪声、以及“量子优势”可能形态的思考接下来我就把这趟实践之旅的详细过程、核心发现和踩过的坑毫无保留地分享给你。2. 核心思路与方案设计为何选择混合量子-经典路径在NISQ时代直接构建一个全量子的学习模型是不切实际的。当前量子比特数量有限、相干时间短、且噪声显著。因此主流的QML研究都聚焦于变分量子算法VQA框架也就是我这次采用的混合架构。它的设计哲学非常务实让量子处理器做它擅长的事在希尔伯特空间中进行特定线性变换而让经典计算机做它擅长的事基于损失函数的梯度或值进行迭代优化。2.1 整体工作流拆解整个项目的流程可以清晰地分为五个阶段我将其绘制成以下工作流以便你一目了然地把握全局flowchart TD A[原始泰坦尼克数据集] -- B[数据预处理与特征工程] B -- C[经典数据量子态编码brFeature Map] C -- D[变分量子电路处理brVariational Ansatz] D -- E[量子测量与经典损失计算] E -- F{经典优化器判断收敛} F -- 否 -- G[更新量子电路参数] G -- D F -- 是 -- H[模型评估与性能分析]这个闭环流程是混合量子-经典学习的核心。量子部分编码、电路演化、测量负责生成一个与输入数据和可调参数相关的预测值经典部分则负责评估这个预测的好坏计算损失并指挥参数该如何调整优化。下面我们来深入拆解其中几个关键的设计选择。2.2 特征编码从经典数据到量子态的第一道门将经典数据实数向量加载到量子计算机中是QML的第一步也是决定模型表达能力上限的关键一步。我这次实验对比了Qiskit提供的两种保罗特征映射电路。ZFeatureMap一阶保罗展开这是相对简单的一种编码方式。它的过程可以这样理解初始化对所有量子比特施加哈达玛门H将每个量子比特从基态 |0⟩ 制备到叠加态 |⟩ (|0⟩ |1⟩)/√2。你可以把这想象成把每个比特都“摊平”为后续编码做好准备。相位编码对每个量子比特施加一个相位门 P(φ)。这个门的相位角 φ 是输入特征值的线性函数通常是 φ 2π * x_i其中 x_i 是第 i 个归一化后的特征值。这个操作不会改变 |⟩ 态在 |0⟩ 和 |1⟩ 上的概率幅但会改变它们的相对相位。关键点在于这个映射电路不引入量子纠缠各个量子比特的演化是独立的。ZZFeatureMap二阶保罗展开这是一种更复杂的编码方式。它在一阶相位编码的基础上增加了二阶相互作用项。包含一阶部分同样先进行H门和P门操作。引入纠缠随后电路会引入一系列受控非门CNOT和以 ZZ 相互作用即两个量子比特的Z方向耦合为生成元的旋转门。这使得相位角不仅依赖于单个特征值还依赖于特征值之间的乘积等非线性组合。这直接在各特征维度对应的量子比特之间创建了纠缠。为什么选择这两种并做对比这背后是一个关于“表达力”与“可训练性”的权衡问题。ZZFeatureMap 由于引入了纠缠和非线性理论上具有更强的表达能力和将数据映射到更高维特征空间即所谓“量子核”效应的潜力。但硬币的另一面是过于复杂的编码和随之而来的高度纠缠可能加剧“贫瘠高原”问题——即损失函数的梯度在参数空间中变得指数级平坦使得优化器如同在迷雾中随机游走难以找到下降方向。ZFeatureMap 虽然简单但可能因其简单的结构而更容易训练。这次实验的一个重要目的就是直观地验证这个理论上的权衡在实际数据集上的表现。2.3 变分电路设计可学习的量子变换层在数据被编码为量子态 |Φ(x)⟩ 之后需要经过一个可学习的量子变换 U(θ)得到最终态 |ψ(θ, x)⟩ U(θ)|Φ(x)⟩。这个 U(θ) 就是变分量子电路我选择了 Qiskit 中标准的RealAmplitudes拟设。RealAmplitudes 的结构很有规律它由交替的单比特旋转层和纠缠层构成。旋转层通常使用 Ry(θ) 门因为它可以在布洛赫球面上产生任意实系数的量子态叠加。这里的旋转角度 θ 就是我们需要优化的变分参数。纠缠层通常采用简单的线性纠缠方式比如用CNOT门将相邻量子比特连接起来。通过重复这个“旋转纠缠”的基本单元可以增加电路的深度和参数数量从而提高模型的容量。在实验中我构建了参数数量从10到50不等的多种电路。这里的一个实操心得是并非参数越多越好。过多的参数不仅会增加优化难度在NISQ模拟中显著增加计算时间还可能因模型过复杂而更容易过拟合训练数据导致在测试集上表现变差。我们需要寻找一个“甜蜜点”。2.4 优化策略与损失函数经典大脑如何指挥量子手臂量子电路输出的是一个量子态我们需要从中提取一个标量值用于分类。通常的做法是测量某个可观测量比如所有量子比特的Z方向平均磁化强度的期望值将其映射到 [0, 1] 区间作为属于“幸存”类别的预测概率。有了预测概率和真实标签就需要一个指标来衡量模型好坏即损失函数。我选择了分类任务中最常用的交叉熵损失。它的物理意义可以理解为衡量模型预测的概率分布与真实标签分布之间的“距离”。最小化交叉熵就是让模型的预测尽可能接近真实情况。优化器我选择了COBYLA。这是一个无梯度的、基于线性近似的局部优化算法。在QML的早期探索中梯度计算无论是通过参数移位规则还是其他方法在模拟或实际硬件上都可能比较昂贵或受噪声影响较大。COBYLA 这类直接搜索方法只依赖损失函数值的比较相对更稳健且需要调节的超参数较少。注意在初步训练中我发现损失函数在大约150轮迭代后基本收敛因此将后续所有模型的训练轮数统一设置为150轮以保证比较的公平性和效率。3. 数据预处理与量子模型构建实操理论设计之后就是落地的脏活累活了。量子模型的表现很大程度上取决于喂给它的数据质量。3.1 泰坦尼克数据集的特征工程原始数据集有十多个特征但并非所有都有用。我的处理原则是保留信息量高、缺失少、与生存逻辑相关性强的特征。以下是具体的处理步骤删除无关或问题特征name,ticket,embarked登船港口我认为这些与乘客生存能力关联度极低直接删除。boat救生艇编号,body遗体编号这两个特征存在严重的“数据泄露”。如果一个人有救生艇编号那他必然幸存如果有遗体编号则必然遇难。用这些特征来预测等于作弊必须删除。fare船票价格数据记录方式不一致有时是个人票价有时是家庭总票价为避免混淆删除。cabin船舱,home.dest目的地缺失值太多实用性差删除。处理缺失值age年龄有263个缺失值。我采用了均值填充。虽然更精细的方法如基于其他特征的回归填充可能更好但均值填充在首次实验中能快速提供一个基线且能保留该特征的整体分布中心趋势。特征缩放剩下的五个特征pclass舱位等级1/2/3、sex性别转为0/1、age、sibsp同行的兄弟姐妹/配偶数、parch同行的父母/子女数其量纲和范围不同。我使用sklearn的MinMaxScaler将所有特征线性缩放到 [0, 1] 区间。这对于基于旋转角度的量子编码至关重要能防止某个特征值过大导致旋转角溢出合理的相位周期如2π。数据集划分按7:3的比例随机划分训练集和测试集。这里有个关键点由于数据本身是不平衡的幸存500人遇难809人在划分时我使用了分层抽样确保训练集和测试集中正负样本的比例与全集基本一致避免因划分引入的偏差。经过以上处理我们得到了一个干净、包含5个特征、1309个样本的数据集 ready for quantum encoding。3.2 在Qiskit中构建量子分类器接下来是使用Qiskit Machine Learning库将设计落地的过程。以下是构建一个分类器的核心代码逻辑from qiskit.circuit.library import ZFeatureMap, ZZFeatureMap, RealAmplitudes from qiskit_machine_learning.neural_networks import EstimatorQNN from qiskit_machine_learning.algorithms.classifiers import NeuralNetworkClassifier from sklearn.preprocessing import MinMaxScaler from sklearn.model_selection import train_test_split # 1. 准备数据 (假设X是特征数组y是标签) X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.3, stratifyy, random_state42) scaler MinMaxScaler() X_train_scaled scaler.fit_transform(X_train) X_test_scaled scaler.transform(X_test) # 注意用训练集的scaler来变换测试集 # 2. 选择特征映射和变分电路 num_features X_train.shape[1] feature_map ZFeatureMap(feature_dimensionnum_features, reps1) # 或 ZZFeatureMap ansatz RealAmplitudes(num_qubitsnum_features, reps3) # reps控制参数数量 entanglementlinear # 3. 组合成量子神经网络 (QNN) from qiskit.primitives import Estimator estimator Estimator() qnn EstimatorQNN( estimatorestimator, circuitfeature_map.compose(ansatz), input_paramsfeature_map.parameters, weight_paramsansatz.parameters ) # 4. 包装成分类器并训练 classifier NeuralNetworkClassifier( neural_networkqnn, optimizerCOBYLA(maxiter150), # 设置最大迭代次数 losscross_entropy_loss ) classifier.fit(X_train_scaled, y_train) # 5. 预测与评估 y_pred classifier.predict(X_test_scaled) # ... 计算准确率、精确率、召回率等指标关键参数解析与选择feature_dimension必须等于特征数。我们的数据是5维所以需要5个量子比特。reps在RealAmplitudes中这是最重要的超参数之一。它决定了基本“旋转纠缠”单元重复的次数。reps增加参数数量线性增加模型容量和深度也增加。我通过实验测试了不同reps值对应的参数总数从10到50以观察性能饱和点。entanglement在RealAmplitudes中我选择了最简单的linear线性最近邻纠缠这通常足以捕获特征间的关联且不会让电路过于复杂。一个重要的避坑点在定义EstimatorQNN时必须明确区分input_params特征映射的参数由数据驱动和weight_params变分电路的参数由优化器训练。这一步如果弄混模型将无法正确学习。4. 实验结果深度分析与讨论所有模型在Google Colab的“Statevector”理想模拟器上运行。这个模拟器能完美模拟量子电路没有噪声让我们可以专注于算法本身的表现。4.1 不同量子模型的性能对比我训练并测试了基于ZFeatureMap和ZZFeatureMap的共18个模型参数数从10到50。评估指标除了常用的准确率Accuracy还特别关注了平衡准确率Balanced Accuracy和约登指数Youden‘s Index, J。因为数据集不平衡单纯准确率可能虚高例如全部预测为“遇难”也能获得约62%的准确率。平衡准确率是正类召回率灵敏度和负类召回率特异度的平均值对不平衡数据更公平。约登指数 J 灵敏度 特异度 - 1其值越接近1说明模型综合判别能力越好。ZFeatureMap系列模型表现性能饱和现象如下图所示当参数数量达到15-20个时模型的准确率、平衡准确率和约登指数均达到平台期分别稳定在0.78-0.80、0.77-0.79和0.55-0.58左右。继续增加参数到50个性能没有显著提升有时甚至略有波动下降。解读这说明对于泰坦尼克这个5维特征的数据集一个中等复杂度的量子模型约15-20参数已经足够捕捉其分类模式。过多的参数可能是冗余的甚至可能因优化难度增加而无法达到更优解这也印证了之前关于“贫瘠高原”和过拟合的担忧。ZZFeatureMap系列模型表现整体表现不佳相比之下所有ZZFeatureMap模型的性能都显著更差。准确率和平衡准确率在0.60-0.75之间大幅波动约登指数很多在0.2以下甚至为负。原因分析这个结果非常有意思。理论上表达能力更强的ZZFeatureMap反而失败了。我分析主要原因有二第一过度纠缠与贫瘠高原二阶展开和强纠缠可能使损失函数景观过于平坦复杂COBYLA优化器陷入局部极值或无法有效搜索。第二数据与编码不匹配泰坦尼克数据特征间的非线性关系可能并不需要或不适合用这种强纠缠的复杂编码来提取简单的线性相位编码ZFeatureMap反而更匹配数据的本质结构更容易被训练。实操心得这个对比强烈地提醒我们在QML中“更强大”并不总是“更好”。选择特征映射和变分电路时必须考虑与具体数据集的适配性。从一个简单的、无纠缠的编码开始往往是更稳妥的起点。4.2 量子随机性的影响评估量子计算中存在固有的随机性如测量塌缩。为了评估这种随机性对结果的影响我对表现最好的Z20模型进行了10次独立重复实验从相同的训练/测试集划分开始但每次模型参数随机初始化。结果如下图所示所有评估指标的分布都非常集中方差极小。这表明在当前使用理想模拟器和固定优化轮次的设置下量子随机性对最终分类性能的影响微乎其微。性能波动主要来源于优化器从不同初始点出发的路径差异而这在经典机器学习中也同样存在。4.3 与经典模型的正面较量我选择了Z15和Z20这两个表现最佳且参数较少的量子模型与sklearn中的线性支持向量机LinearSVC进行对比。为了更全面我改变了训练集的比例从10%到90%观察模型在不同数据量下的表现。关键发现性能相当在大多数训练集比例下尤其是30%-70%Z20量子分类器的准确率、平衡准确率与经典线性SVC不相上下有时甚至略优。这说明在这个特定任务上一个设计良好的混合量子-经典模型可以达到经典主流方法的基准水平。经典模型的“崩溃”一个非常有趣的现象是当使用90%的数据进行训练时经典线性SVC的性能出现了断崖式下跌约登指数接近0意味着模型失去了分类能力。而两个量子模型则保持了稳定的性能。原因推测我怀疑这可能是由于数据划分导致的偶然性或者当训练集极大时线性SVC的某个超参数如正则化系数C不再适用需要重新调整。而量子模型由于其不同的优化景观和损失函数对此似乎不那么敏感。这暗示了量子模型可能在某些数据分布或规模下具有不同的泛化行为但这需要更多实验验证不能作为一般性结论。5. 常见问题、挑战与未来展望通过这个完整的项目我深刻体会到QML应用落地的挑战与魅力。以下是一些共性问题和我个人的思考。5.1 实践中遇到的主要挑战模拟计算成本即使只有5个量子比特模拟一个较深的变分电路如50参数并进行150轮优化在Colab的CPU环境下也需要数分钟。随着比特数和电路深度增加模拟时间会指数级增长。这是阻碍大规模探索的主要瓶颈。超参数选择量子模型的超参数很多特征映射类型、变分电路结构层数、纠缠方式、优化器类型、学习率/迭代次数等。目前缺乏像经典机器学习那样成熟的理论指导或经验法则很大程度上依赖网格搜索和经验试错成本高。“贫瘠高原”的幽灵虽然在这个小规模实验中未明显观察到但理论上它是大规模QML的主要障碍。需要谨慎设计电路结构如采用浅层电路、局部纠缠、或采用专门的初始化策略和优化技巧来缓解。对经典预处理的高度依赖量子模型并没有免除我们对数据清洗、特征工程和特征缩放的责任。事实上由于编码方式的物理限制如相位旋转的范围对数据尺度可能更敏感。5.2 给入门者的建议如果你想开始自己的第一个QML项目我的建议是从模拟器和经典数据集开始Qiskit、PennyLane等框架的模拟器非常成熟是学习的不二之选。泰坦尼克、鸢尾花、手写数字MNIST子集都是很好的起点。遵循“简单至上”原则先从ZFeatureMap或AngleEncoding这类简单编码开始搭配RealAmplitudes或TwoLocal这类标准变分电路。不要一开始就追求复杂的纠缠和大型电路。重视经典部分扎实的机器学习基础数据预处理、模型评估、交叉验证在QML中同样至关重要甚至更重要。一个糟糕的经典数据处理流程会毁掉任何量子模型。理解“混合”的本质始终清楚哪些部分在量子芯片上运行哪些在经典CPU上运行。学会使用框架如Qiskit Runtime提供的混合编程接口。5.3 未来方向与个人体会这次实验验证了在NISQ时代混合量子-经典模型处理经典分类问题是完全可行的并且能在一些任务上达到与经典方法媲美的性能。但这离所谓的“量子优势”还很远。我认为近期的价值不在于替代经典算法而在于探索探索哪些类型的数据结构如图数据、具有复杂相关性的数据可能更受益于量子态的表示探索量子模型是否在某些情况下具有更好的鲁棒性或泛化能力就像我们在90%训练集比例下看到的那一幕一样。我个人的体会是QML目前更像是一门实验科学。它需要研究者兼具量子物理的直觉和机器学习工程的经验。每一次成功的实验都是对参数空间的一次小心翼翼的地图测绘。过程中充满了“为什么这个不work”的困惑和“原来这样才行”的惊喜。虽然前路漫长但亲手搭建一个量子电路看着它从随机猜测开始逐渐学会区分泰坦尼克上的幸存者与遇难者这种跨越抽象理论与具体实践的成就感正是这个领域最吸引人的地方。或许量子计算的未来就藏在这一个个看似微小的分类实验的积累之中。
http://www.rkmt.cn/news/1376360.html

相关文章:

  • 碧蓝航线Alas自动化脚本:解放双手的终极游戏助手
  • 2026年4月目前评价高的渣浆泵直销厂家推荐,混流泵/渣浆泵/液下渣浆泵/脱硫泵/多级泵/双吸泵,渣浆泵实力厂家找哪家 - 品牌推荐师
  • 终极炉石传说游戏增强插件:HsMod完整指南与55项功能详解
  • 富士施乐SC2022扫描功能时有时无?别急着重装系统,先检查这个被忽略的Windows服务
  • Unity TextMeshPro中文方块问题根因与全链路排查指南
  • LizzieYzy:为什么这款围棋AI分析工具能让你的棋力快速提升?
  • Gogs符号链接路径遍历漏洞CVE-2024-56731深度解析
  • Unity 5.6 ARPG商业级骨架:任务/背包/装备/AI/技能六大系统解析
  • 自动驾驶LiDAR安全攻防:从传感器欺骗到模型攻击的全面解析
  • 应急响应中pcap流量提取的5大核心工具实战指南
  • 2026年4月解放碑火锅推荐更新,这6家藏得深但好吃,特色美食/美食/社区火锅/火锅店/火锅,火锅品牌推荐 - 品牌推荐师
  • 探索 IwaraDownloadTool:从手动下载到智能嗅探的实践路径
  • 对比10家深圳全屋定制品牌,我为什么把RERA源木匠心排在第一? - 产品测评官
  • Feishu-Doc-Export技术实现深度解析:企业级文档批量导出解决方案
  • 3分钟掌握ncmdump:专业级网易云音乐NCM格式解密方案
  • 广义随机占优:多准则算法比较的稳健统计框架
  • Keil µVision中实现函数级编译时间戳追踪方案
  • 手写 RLHF(强化学习人类反馈):从零实现大模型对齐训练
  • xLSTM与迁移学习在ADS-B入侵检测中的实战应用与性能分析
  • Unity RTS开发脚手架:工业级单位编队与视野遮蔽实现
  • 将vCenter(VCSA)的默认证书替换为自己企业CA的证书
  • 5步轻松配置:碧蓝航线自动化脚本新手完整指南
  • 红队实战中的Kali高级配置与隐蔽性设计
  • Burp Suite Galaxy插件实战:上下文感知解密中枢搭建指南
  • 合肥成人书法培训,真的能快速提升书写水平吗?
  • 解锁iOS设备无限可能:2026最新越狱技术深度解析与实战指南
  • 百度网盘下载速度太慢?Python脚本帮你获取高速直链
  • 华硕笔记本性能优化终极指南:如何用G-Helper替代Armoury Crate提升体验
  • 天翼云S6通用服务器深度评测:4核8G5Mpbs年付590元起,性价比之王?
  • 机器学习生存分析实战:从XGBoost-AFT到临床预测模型构建