Skip to Content

量子机器学习

概述

unitarylab_algorithms.quantum_machine_learning 包提供适用于近期量子设备(NISQ 时代)的变分和生成量子算法。这些算法使用经典-量子混合优化循环来训练参数化量子线路。

算法任务
VQEVQEAlgorithm基态能量估计
VQCVQCAlgorithm量子分类器(鸢尾花数据集)
QAOAQAOAAlgorithm组合优化(最大割问题)
QCBMQCBMAlgorithm概率分布生成建模
CVQNNCVQNNAlgorithm连续变量量子神经网络

变分量子特征求解器(VQE)

背景

VQE 通过在参数化拟设态上最小化期望值 来估计厄米哈密顿量 的基态能量。该算法在量子化学和材料模拟中被广泛使用。

算法交替执行:

  1. 在量子线路上计算
  2. 使用经典优化器更新参数

导入

from unitarylab_algorithms.quantum_machine_learning.vqe.algorithm import VQEAlgorithm

.run() 参数

参数类型默认值说明
nint2量子比特数
layersint2拟设中的变分层数
max_iterint150最大优化迭代次数
seedint7可复现性随机种子
hamiltoniannp.ndarray | NoneNone自定义厄米哈密顿量(为 None 时使用随机矩阵)
normalizeboolTrue是否对哈密顿量进行归一化

示例

import numpy as np from unitarylab_algorithms.quantum_machine_learning.vqe.algorithm import VQEAlgorithm # 使用自定义哈密顿量 H = np.array([[1, 0.5], [0.5, -1]]) algo = VQEAlgorithm() result = algo.run(n=2, layers=2, max_iter=150, hamiltonian=H) print(result['status'])

快速演示

from unitarylab_algorithms.quantum_machine_learning.vqe.algorithm import test test(n=2, layers=2, max_iter=150)

变分量子分类器(VQC)

背景

VQC 通过特征映射将经典数据编码到量子态中,然后使用可训练拟设加测量进行分类。本实现将算法应用于鸢尾花数据集(4 个特征、3 个类别),使用 softmax 交叉熵损失进行训练。

导入

from unitarylab_algorithms.quantum_machine_learning.vqc.algorithm import VQCAlgorithm

.run() 参数

参数类型默认值说明
layersint3变分层数
epochsint20训练轮数
lrfloat0.05Adam 优化器学习率
batch_sizeint16小批量大小

示例

from unitarylab_algorithms.quantum_machine_learning.vqc.algorithm import VQCAlgorithm algo = VQCAlgorithm() result = algo.run(layers=3, epochs=20, lr=0.05, batch_size=16) print(result['status'])

快速演示

from unitarylab_algorithms.quantum_machine_learning.vqc.algorithm import test test(layers=3, epochs=20, lr=0.05, batch_size=16)

量子近似优化算法(QAOA)

背景

QAOA 是一种用于组合优化问题的变分算法。它交替应用编码目标函数的问题哈密顿量 混合哈密顿量 ,共执行 layers 轮。本实现求解由边列表定义的图上的最大割问题。

最大割问题要求将图的顶点分为两个集合,使得两集合之间的边数最多。

导入

from unitarylab_algorithms.quantum_machine_learning.qaoa.algorithm import QAOAAlgorithm

.run() 参数

参数类型默认值说明
edgesList[List[int]] | NoneNone定义图的边列表(如 [[0,1],[1,2]]
nint6量子比特数(图的顶点数)
layersint4QAOA 演化层数
max_iterint100最大优化迭代次数

示例

from unitarylab_algorithms.quantum_machine_learning.qaoa.algorithm import QAOAAlgorithm edges = [[0, 1], [1, 2], [2, 3], [3, 0], [0, 4], [1, 5]] algo = QAOAAlgorithm() result = algo.run(edges=edges, n=6, layers=4, max_iter=100) print(result['status'])

快速演示

from unitarylab_algorithms.quantum_machine_learning.qaoa.algorithm import test test()

量子线路玻恩机(QCBM)

背景

QCBM 将参数化量子线路用作生成模型:通过最小化模型样本与目标样本之间的最大均值差异(MMD)损失,训练 Born 概率分布 来匹配目标分布。

导入

from unitarylab_algorithms.quantum_machine_learning.qcbm.algorithm import QCBMAlgorithm

.run() 参数

参数类型默认值说明
nint4量子比特数
layersint4变分线路深度
epochsint40训练迭代次数
lrfloat0.1Adam 优化器学习率

示例

from unitarylab_algorithms.quantum_machine_learning.qcbm.algorithm import QCBMAlgorithm algo = QCBMAlgorithm() result = algo.run(n=4, layers=4, epochs=40, lr=0.1) print(result['status'])

快速演示

from unitarylab_algorithms.quantum_machine_learning.qcbm.algorithm import test test(n=4, layers=4, epochs=40, lr=0.1)

连续变量量子神经网络(CVQNN)

背景

CVQNN 在**连续变量(CV)**量子计算范式下工作,使用光学模式而非量子比特。计算在截断 Fock 空间(维数为 cutoff)中进行。模型使用位移、压缩、分束器和旋转等变分门,并被训练用于对二维数据集进行分类。

导入

from unitarylab_algorithms.quantum_machine_learning.cvqnn.algorithm import CVQNNAlgorithm

.run() 参数

参数类型默认值说明
x_trainnp.ndarray输入特征数组
y_trainnp.ndarray标签数组
n_layersint2变分 CV 层数
cutoffint6Fock 空间截断维数
epochsint40训练轮数
lrfloat0.05学习率

示例

import numpy as np from unitarylab_algorithms.quantum_machine_learning.cvqnn.algorithm import CVQNNAlgorithm # 生成简单的二维数据集 x_train = np.random.randn(50, 2) y_train = (x_train[:, 0] + x_train[:, 1] > 0).astype(int) algo = CVQNNAlgorithm() result = algo.run(x_train=x_train, y_train=y_train, n_layers=2, cutoff=6, epochs=30) print(result['status'])

快速演示

from unitarylab_algorithms.quantum_machine_learning.cvqnn.algorithm import test test(n_layers=2, cutoff=6, epochs=30, lr=0.05)

注意事项

  • 增大 cutoff 可以提升近似精度,但内存占用以指数级增长。标准硬件上不建议超过 8
  • CV 框架对光学量子系统建模,与基于量子比特的线路在本质上不同。
最后更新于