Path: blob/master/site/zh-cn/quantum/tutorials/quantum_data.ipynb
25118 views
Copyright 2020 The TensorFlow Authors.
量子数据
安装
1. 数据准备
您首先需要准备要在量子计算机上运行的 Fashion-MNIST 数据集。
1.1 下载 Fashion-MNIST
第一步是获取传统 Fashion-MNIST 数据集。这可以使用 tf.keras.datasets
模块来完成。
筛选数据集,仅保留 T 恤/上衣和连衣裙,移除其他类。同时,将标签 y
转换为布尔值:0 为 True,3 为 False。
1.2 缩小图像
与 MNIST 示例类似,您将需要缩小这些图像以便限定到当前量子计算机的边界内。但是,本次您将使用 PCA 转换来进行降维,而非 tf.image.resize
运算。
最后一步是将数据集的大小降至仅含 1000 个训练数据点和 200 个测试数据点。
2. 重新标记和计算 PQK 特征
现在,您将通过合并量子组件并重新标记您在上面创建的截断 Fashion-MNIST 数据集来准备一个“不自然”的量子数据集。为了在量子方法与经典方法之间形成最大差距,您将首先准备 PQK 特征,然后根据它们的值重新标记输出。
2.1 量子编码和 PQK 特征
您将基于 x_train
、y_train
、x_test
和 y_test
创建一组新特征,这些特征被定义为以下所有量子比特的一阶约化密度矩阵:
其中 为一套单量子比特旋转和
首先,您可以生成一套单量子比特旋转:
您可以通过查看电路以快速验证是否有效:
接下来,您可以借助 tfq.util.exponential
来准备 ,它可以对任何交换 cirq.PauliSum
对象求幂:
此电路可能较难通过观察进行验证,但您仍可以分析双量子比特用例来检查结果:
现在,您已拥有组合完整编码电路所需的所有构建块:
选择一些量子比特并准备数据编码电路:
接下来,根据上述数据集电路的一阶约化密度矩阵来计算 PQK 特征,并将结果存储在 rdm
中,这是一个形状为 [n_points, n_qubits, 3]
的 tf.Tensor
。rdm[i][j][k]
中的条目 = ,其中 i
在数据点上构建索引,j
在量子比特上构建索引,k
在 上构建索引。
2.2 基于 PQK 特征重新标记
现在,您已经在 x_train_pqk
和 x_test_pqk
中准备好这些量子生成的特征,是时候重新标记数据集了。为了在量子性能与经典性能之间形成最大差距,您可以基于在 x_train_pqk
和 x_test_pqk
中找到的频谱信息重新标记数据集。
注:为直截了当地最大化经典模型与量子模型之间的性能差距而准备数据集可能会给人以作弊之感,但这种方式非常直观地证明了存在经典计算机难以建模而量子计算机易于建模的数据集。如果您不能先以此为例来充分体现其中优势,那么寻找量子机器学习中的量子优势便毫无意义。
现在,您已拥有重新标记数据集所需的一切!您可以查阅流程图,以更好地了解如何在重新标记数据集时最大化性能差距:
为了最大化量子模型与经典模型之间的差距,您将尝试使用 S_pqk, V_pqk
和 S_original, V_original
来最大化原始数据集与 PQK 特征内核矩阵 之间的几何差异。较大的 值可以确保您最初在流程图中向右移动时能够在量子用例中获得预测优势。
注:计算 和 的数量对于更好地理解性能差距也非常有用。在本例中,确保较大的 值便足以拉开性能差距。
3. 比较模型
现在,您已准备好数据集,是时候比较模型性能了。您将创建两个小型前馈神经网络并对它们在访问 x_train_pqk
中的 PQK 特征时的性能进行比较。
3.1 创建 PQK 增强模型
使用标准 tf.keras
库特征,您现在可以在 x_train_pqk
和 y_train_new
数据点上创建和训练模型:
3.2 创建经典模型
与上面的代码类似,您现在还可以创建一个不访问您的“不自然”数据集内 PQK 特征的经典模型。此模型可以使用 x_train
和 y_label_new
进行训练。
3.3 比较性能
这两个模型现已训练完成,您可以快速绘制二者之间在验证数据上的性能差距。通常情况下,这两个模型在训练数据上的准确率均可达到 0.9 以上。然而,在验证数据上,显然只有从 PQK 特征中获得的信息才足以使模型能够有效泛化到未知实例。
恭喜,您已改编出可在公平(但经人为干预)环境中有意击败经典模型的“不自然”的量子数据集。请尝试比较使用其他类型经典模型的结果。下一步,请尝试看看您能否找到无需自行改编,便可击败经典模型的新的有趣数据集!
4. 重要结论
您可以从本文以及 MNIST 实验中得出以下几项重要结论:
当今的量子模型基本不大可能会击败经典模型在经典数据上的性能。尤其是在当今可以拥有超过一百万个数据点的经典数据集上。
不能仅凭数据来自经典方式难以模拟的量子电路,就推断经典模型难以学习该数据。
无论使用哪种模型架构或训练算法,都一定存在量子模型易于学习而经典模型难以学习的数据集(最终本质上为量子)。