初态为 000|0\cdots00\rangle,电路输出为 ψ=S(x2)S(x1)000|\psi\rangle=S(x_2)^{\dagger}S(x_1)|0\cdots00\rangle

示例中构造一个厄米矩阵

M=[100000000]=000000M=\begin{bmatrix} 1 &0&\cdots&0\\ 0&0&\cdots&0\\ \vdots&\vdots&\ddots&\vdots\\ 0&0&\cdots&0 \end{bmatrix}=|0\cdots00\rangle\langle 00\cdots 0|

计算投影测量的期望值为

ψMψ=000S(x1)S(x2)000000S(x2)S(x1)000\langle\psi|M|\psi\rangle=\langle 00\cdots 0|S(x_1)^{\dagger}S(x_2)|0\cdots00\rangle\langle 00\cdots 0|S(x_2)^{\dagger}S(x_1)|0\cdots00\rangle

以分类任务为例,引入了软间隔和核函数的SVM形式如下:

maxαi=1mαi12i=1mj=1mαiαjyiyjκ(xi,xj) s.t. i=1mαiyi=0,0αiC,i=1,2,,m\begin{aligned} \max _{\boldsymbol{\alpha}} & \sum_{i=1}^{m} \alpha_{i}-\frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_{i} \alpha_{j} y_{i} y_{j} \kappa\left(\boldsymbol{x}_{i},\boldsymbol{x}_{j} \right)\\ \text { s.t. } & \sum_{i=1}^{m} \alpha_{i} y_{i}=0, \\ & 0\leqslant\alpha_{i} \leqslant C, \quad i=1,2, \ldots, m \end{aligned}

1
2
3
4
5
6
7
8
import numpy as np
from sklearn.svm import SVC
from sklearn import datasets
from sklearn.preprocessing import StandardScaler
import pennylane as qml
from pennylane.kernels import kernel_matrix
from sklearn.model_selection import cross_val_score
from pennylane.templates import AngleEmbedding
1
2
3
X, y = datasets.load_iris(return_X_y=True)
X_scaled = StandardScaler().fit_transform(X)
y_scaled = y

使用RBF核

1
np.average(cross_val_score(SVC(), X, y))
0.9666666666666666
1
n_qubits = 4
1
2
3
4
5
6
7
8
9
10
dev_kernel = qml.device('lightning.qubit', wires=n_qubits)
projector = np.zeros((2 ** n_qubits, 2 ** n_qubits))
projector[0, 0] = 1


@qml.qnode(dev_kernel)
def circuit(x1, x2):
AngleEmbedding(x1, wires=range(n_qubits))
qml.adjoint(AngleEmbedding)(x2, wires=range(n_qubits))
return qml.expval(qml.Hermitian(projector, wires=range(n_qubits)))

用量子电路计算核函数

1
np.average(cross_val_score(SVC(kernel=lambda X1, X2: kernel_matrix(X1, X2, lambda x1, x2: circuit(x1, x2))), X, y))
0.9800000000000001