文章目录 展开 收起

项目

QNN实现MNIST01分类学习

2026-06-04

主要价值是,做了消融实验,能直观看出改变某个参数对指标的影响。为进一步设计实验提供参考。

问题

  • 在最优配置下:测试集的损失图像:为什么在 testbatch=10 之前,会出现损失下降的情况,按理说测试集已经用了最优参数,损失应该都差不多啊;

图像的损失是样本数的累计损失。test batch 表示用了几个样本。前面的 loss 比较大说明前几个样本的损失比较大,后面的样本损失比较小;平均损失就被拉下来了;

  • readout 规则是读量子态的第一个 qubit 的期望或者平均期望。我们知道 readout 是把原始的量子态数据转化为经典任务需要的输出。能介绍一下这个读期望是什么意思吗,具体是怎么统计的?他是如何影响模型效果的?

读第一个比特的期望就是,统计这个 qubit 是计算基态 0 的概率是 P0,如果 P0 更大,我们认为这个 qubit 更接近+1;如果 qubit 测的的计算基态 1 的概率更大,我们认为它更接近-1;这个从计算基态映射到经典数值的步骤就是 readout 规则的一部分。 那期望是怎么算的?期望就是计算基态 0 的概率减去计算基态 1 的概率,所以期望的取值是[-1,1]。 读 4 个 qubit 就是算 4 个期望,再做一下线性变换、 softmax 等等变成概率。 在 4qubit 系统中,利用 4qubit 信息,信息利用更全面,模型性能更好。但这不是绝对的。

  • scale_range 是什么?为什么需要这一步?他是如何影响模型性能的?

复习一下整体处理流程:原始图片经过 PCA 降维、缩放到指定范围、进行特征编码、进入 ansatz 可训练电路、readout 读出数值、根据阈值判断类别 01;

在角度编码的条件下,特征映射是把输入特征当做旋转角度,这个旋转角度是有范围的。比如范围较小的-1,1 可能让不同样本在量子态的差异不够大,导致后来的分类效果就差;缩放到 0,π,效果就更好。

  • 怎么解释 ZFeatureMap 好于 ZZ?

复习一下 ZZFeatureMap,他是Qiskit 封装好的特征映射模板。和普通的角度编码相比引入了双币特之间的纠缠;ZFeatuteMap 只有单比特旋转门;在我们的实验中,后者更好,可能是因为我们的数据特征比较简单。

  • initial_point_range:是什么?他是怎么影响模型性能的

他控制拟设层可训练参数的初始化范围。QNN 的损失地形比较复杂,如果初始化比较保守,可能会陷入局部最优。

  • feature_map_reps 是什么 他是如何影响模型性能的

他是特征映射的堆叠层数。影响模型性能和训练难度。层数越多,模型的表达能力越强;缺点,训练难度增加,更难优化。这个更难优化说明不是层数越多越好,可以再多学一点。

  • ansatz 的 repetition 同理。
  • 改变 num qubits 是如何影响模型性能的?为什么 8 比 4 训练时间多了一倍多?

量子态空间大小是随着比特数指数增加的。所以训练时间会有显著提升。增加量子比特,模型的学习能力更强,同样的也更难优化,这也是准确率不一定提升的原因。

  • 在 01 分类任务中,解释一下指标含义。

precision :所有预测为 1 的样本,有多少是真实的 1。看模型误判多不多?recall 是所有真实为 1 的样本中,有多少是真的 1。这个是看模型有没有漏判。

  • SVM

支持向量是什么?重要。

软硬间隔是什么?绝对分类 与 容忍。

二维上:三种超平面

要不要为某个异常值改变决策边界?损失因子。

某些点在低纬度无法区分,数据升维就能区分。 需要升维转换函数,高纬度下求解。有无其他办法? 核函数。

目标是什么?最大化两个超平面的间隔L

非神经网络迭代训练。

最终参数: 训练过程中训练集表现最好的那一轮参数,用来跑测试集得到指标;同理,也是拿训练集表现最好的一组参数重新跑一次训练集得到指标。

经验总结

还有遗留的问题:模型训练完没有保存出来,保存的格式是什么样;

这个项目的结构值得总结,还有 AGENT.md 可以完善复用。