Qiskit Machine Learning:一个用于量子计算机器学习实验的库
项目描述
Qiskit Machine Learning
Qiskit Machine Learning 引入了一些基本的计算构建块 - 例如量子核和量子神经网络 - 这些构建块用于不同的应用,包括分类和回归。一方面,这个设计非常易于使用,允许用户在不深入了解量子计算的情况下快速构建第一个模型。另一方面,Qiskit Machine Learning 非常灵活,用户可以轻松地将其扩展以支持前沿的量子机器学习研究。
Qiskit机器学习提供了一种名为FidelityQuantumKernel的类,该类利用了Qiskit算法中引入的Fidelity算法,可以轻松地直接计算给定数据集的核矩阵,或者可以传递给量子支持向量分类器QSVC或量子支持向量回归器QSVR,以快速开始解决分类或回归问题。它还可以与许多来自经典框架的现有基于核的机器学习算法一起使用。
Qiskit机器学习定义了一个由不同量子神经网络实现的通用神经网络接口。提供了两种核心实现,例如EstimatorQNN和SamplerQNN。EstimatorQNN利用了Qiskit中的Estimator原语,并允许用户将参数化的量子电路与量子力学观测量相结合。电路可以使用,例如,Qiskit电路库中的构建块构建,QNN的输出由观测量的期望值给出。SamplerQNN利用Qiskit中引入的另一个原语Sampler。这个神经网络将原语估计的比特字符串的准概率转换为所需的输出。这个转换步骤可以用在特定上下文中解释给定的比特字符串,例如将其转换为一系列类别。
神经网络包括评估给定输入的功能以及计算相应的梯度,这对于有效训练非常重要。为了训练和使用神经网络,Qiskit机器学习提供了多种学习算法,例如NeuralNetworkClassifier和NeuralNetworkRegressor。两者都接受QNN作为输入,然后在分类或回归上下文中使用它。为了方便使用,提供了两种便利的实现 - 可变量子分类器VQC以及可变量子回归器VQR。两者只需一个特征图和一个ansatz,就会自动构建底层QNN。
除了直接在Qiskit机器学习中提供的模型外,它还包括TorchConnector,允许用户将所有量子神经网络直接集成到PyTorch开源机器学习库中。多亏了Qiskit的梯度算法,这包括自动微分 - 在反向传播期间,PyTorch计算的总梯度也考虑了量子神经网络。灵活的设计还允许未来构建到其他包的连接器。
安装
我们鼓励通过pip工具(一个Python包管理器)安装Qiskit机器学习。
pip install qiskit-machine-learning
pip将自动处理所有依赖关系,您将始终安装最新(且经过充分测试)的版本。
如果您想尝试最新的工作版本,无论是为了在官方发布之前尝试新功能,还是如果您想为机器学习做出贡献,则可以从源代码安装。要这样做,请按照文档中的说明操作。
可选安装
-
PyTorch可以通过命令
pip install 'qiskit-machine-learning[torch]'
安装包,或者参考PyTorch的入门指南。当PyTorch安装后,TorchConnector
将方便地使用量子计算网络。 -
Sparse可以通过命令
pip install 'qiskit-machine-learning[sparse]'
安装包。安装Sparse后,将启用稀疏数组/张量的使用。
在Qiskit中创建您的第一个机器学习编程实验
现在Qiskit机器学习已安装,是时候开始使用机器学习模块了。让我们尝试使用VQC(变分量子分类器)算法来训练和测试数据集的样本,看看测试集可以被分类得多准确。
from qiskit.circuit.library import TwoLocal, ZZFeatureMap
from qiskit_algorithms.optimizers import COBYLA
from qiskit_algorithms.utils import algorithm_globals
from qiskit_machine_learning.algorithms import VQC
from qiskit_machine_learning.datasets import ad_hoc_data
seed = 1376
algorithm_globals.random_seed = seed
# Use ad hoc data set for training and test data
feature_dim = 2 # dimension of each data point
training_size = 20
test_size = 10
# training features, training labels, test features, test labels as np.ndarray,
# one hot encoding for labels
training_features, training_labels, test_features, test_labels = ad_hoc_data(
training_size=training_size, test_size=test_size, n=feature_dim, gap=0.3
)
feature_map = ZZFeatureMap(feature_dimension=feature_dim, reps=2, entanglement="linear")
ansatz = TwoLocal(feature_map.num_qubits, ["ry", "rz"], "cz", reps=3)
vqc = VQC(
feature_map=feature_map,
ansatz=ansatz,
optimizer=COBYLA(maxiter=100),
)
vqc.fit(training_features, training_labels)
score = vqc.score(test_features, test_labels)
print(f"Testing accuracy: {score:0.2f}")
更多示例
学习路径笔记本可以在文档的机器学习教程部分找到,这是一个很好的开始地方。
了解量子机器学习基础的另一好地方是来自原始Qiskit教科书的量子机器学习笔记本。这些笔记本对初学者来说非常方便,他们渴望从头开始学习量子机器学习,以及理解Qiskit机器学习算法背后的背景和理论。这些笔记本涵盖了各种主题,以建立对参数化电路、数据编码、变分算法等的理解,最终目标是机器学习的最终目标——如何构建和训练用于监督学习和无监督学习的量子机器学习模型。教科书笔记本与该模块的教程互补;而教程侧重于实际的Qiskit机器学习算法,教科书笔记本更多地解释和详细介绍了量子机器学习的基础。
贡献指南
如果您想为Qiskit做出贡献,请查看我们的贡献指南。本项目遵守Qiskit的行为准则。通过参与,您应遵守此准则。
我们使用GitHub问题来跟踪请求和错误。请加入Qiskit Slack社区进行讨论和简单问题。对于更适合论坛的问题,我们使用Stack Overflow中的Qiskit标签。
作者和引用
机器学习是由一个研究团队集体灵感的产物,由作者编写并推动。在许多人的帮助和努力下,机器学习不断成长,这些人以不同水平为项目做出贡献。如果您使用Qiskit,请根据提供的BibTeX文件进行引用。
许可协议
本项目使用Apache License 2.0。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分布
构建分布
哈希值 for qiskit_machine_learning-0.7.2-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e63c525e6fa5fd22e9005e3e09115c38c700823a6d693565d8811de206eed437 |
|
MD5 | e44648f085bf3023e767df4cbe0fbec6 |
|
BLAKE2b-256 | 7f4aed252b41533f0fef82d0085339040277cdfba5c5ec7e816eefd92cf97b26 |