QSVM阅读笔记

本文介绍了Quantum Support Vector Machine (QSVM)的概念,它是利用量子算法加速的经典支持向量机,尤其在大规模数据训练中展现优势。通过HHL算法和Swap-test算法,QSVM将SVM的二次规划问题转化为最小二乘问题,用于参数求解和新样本分类。关键步骤包括矩阵指数化、模型参数量子化和Swap-test分类器的应用。
摘要由CSDN通过智能技术生成

P.Rebentrost等人在2014年提出的Quantum support vector machine(QSVM) 利用量子算法构造和训练SVM模型,并利用该模型对新的样本进行分类。QSVM的复杂度对比经典SVM有指数级别的缩小,因此适用于大规模数据的训练。QSVM的主体思想是将传统SVM这一二次规划问题转换为最小二乘问题,利用量子算法高效地求解最小二乘问题中的向量内积,基于HHL算法求解模型的参数,使用Swap-test算法对新的样本进行分类。

一、支持向量机(SVM)

SVM是定义在特征空间上的间隔最大的线性分类器,对于线性可分的数据集,SVM相当于求解凸二次规划问题;对于线性不可分的数据集,支持向量机引入了核技巧(kernel trick),将数据集从低维线性不可分的输入空间映射到高维线性可分的特征空间,并在特征空间学习SVM线性分类器。因此,支持向量机既可以用来对线性可分的数据集进行分类,也可以对线性不可分的数据集进行分类,只是后者引入了核函数。

支持向量机的具体介绍可参阅李航的《统计学习方法》,这里只给出它的数学表达:
假设数据集 { ( x ⃗ j , y j ) : x ⃗ j ∈ R N , y j = ± 1 } j = 1 … M \left\{\left(\vec{x}_{j}, y_{j}\right): \vec{x}_{j} \in \mathbb{R}^{N}, y_{j}=\pm 1\right\}_{j=1 \ldots M} {(x j,yj):x jRN,yj=±1}j=1M中有 M M M个带正负标签的样本,每个样本有 N N N个特征,那么线性可分SVM的对偶最优化问题为,
min ⁡ α 1 2 ∑ i = 1 M ∑ j = 1 M α i α j y i y j ( x ⃗ i , x ⃗ j ) − ∑ i = 1 M α i  s.t.  ∑ i = 1 M α i y i = 0 α i ⩾ 0 , i = 1 , 2 , ⋯   , M \begin{array}{ll} \underset{\alpha}{\min }& \frac{1}{2} \sum_{i=1}^{M} \sum_{j=1}^{M} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(\vec x_{i} ,\vec x_{j}\right)-\sum_{i=1}^{M} \alpha_{i} \\ \text { s.t. } & \sum_{i=1}^{M} \alpha_{i} y_{i}=0 \\ & \alpha_{i} \geqslant 0, \quad i=1,2, \cdots, M \end{array} αmin s.t. 21i=1Mj=1Mαiαjyiyj(x i,x j)i=1Mαii=1Mαiyi=0αi0,i=1,2,,M其中 ( x ⃗ i , x ⃗ j ) (\vec x_{i} ,\vec x_{j}) (x i,x j)表示 x ⃗ i \vec x_{i} x i x ⃗ j \vec x_{j} x j的内积 x ⃗ j T x ⃗ i \vec x_{j}^{T } \vec x_{i} x jTx i。求解该最优化问题得到最优解 α ∗ = ( α 1 ∗ , α 2 ∗ , … , α M ∗ ) T \alpha ^{\ast }=\left(\alpha_{1}^{\ast },\alpha _{2}^{\ast },\ldots ,\alpha _{M}^{\ast }\right) ^{T} α=(α1,α2,,αM)T,进而得到SVM线性分类器
f ( x ) = sign ( ∑ i = 1 M α i ∗ y i ( x ⃗ , x ⃗ i ) + b ∗ ) f(x) =\text{sign}\left( \sum ^{M}_{i=1}\alpha_{i}^{\ast }y_{i}\left(\vec x, \vec x_{i}\right)+{b}^{\ast }\right) f(x)=sign(i=1Mαiyi(x ,x i)+b)其中 b ∗ = y j − ∑ i = 1 M α i ∗ y i ( x ⃗ i , x ⃗ j ) {b}^{\ast }=y_{j}-\sum ^{M}_{i=1}\alpha_{i}^{\ast }y_{i}\left(\vec x_{i}, \vec x_{j}\right) b=yji=1Mαiyi(x i,x j) α i ∗ > 0 \alpha_{i}^{\ast}>0 αi>0

论文中的数学表述与上式略有不同,在论文中作者令 α i = α i y i \alpha_{i}=\alpha_{i} y_{i} αi=αiyi,并且将使目标函数最小化改为使目标函数最大化,因此线性可分SVM的对偶最优化问题变为,
max ⁡ α ∑ i = 1 M α i y i − 1 2 ∑ i = 1 M ∑ j = 1 M α i α j ( x ⃗ i , x ⃗ j )  s.t.  ∑ i = 1 M α i = 0 α i y i ⩾ 0 , i = 1 , 2 , ⋯   , M \begin{array}{ll} \underset{\alpha}{\max}& \sum_{i=1}^{M} \alpha_{i}y_{i}-\frac{1}{2} \sum_{i=1}^{M} \sum_{j=1}^{M} \alpha_{i} \alpha_{j}\left(\vec x_{i} , \vec x_{j}\right) \\ \text { s.t. } & \sum_{i=1}^{M} \alpha_{i}=0 \\ & \alpha_{i} y_{i}\geqslant 0, \quad i=1,2, \cdots, M \end{array} αmax s.t. i=1Mαiyi21i=1Mj=1Mαiαj(x i,x j)i=1Mαi=0αiyi0,i=1,2,,MSVM线性分类器变为
f ( x ) = sign ( ∑ i = 1 M α i ∗ ( x ⃗ , x ⃗ i ) + b ∗ ) f(x) =\text{sign}\left( \sum ^{M}_{i=1}\alpha_{i}^{\ast }\left(\vec x, \vec x_{i}\right)+{b}^{\ast }\right) f(x)=sign(i=1Mαi(x ,x i)+b)其中 b ∗ = y j − ∑ i = 1 M α i ∗ ( x ⃗ i , x ⃗ j ) {b}^{\ast }=y_{j}-\sum ^{M}_{i=1}\alpha_{i}^{\ast }\left(\vec x_{i},\vec x_{j}\right) b=yji=1Mαi(x i,x j) α i ∗ ≠ 0 \alpha_{i}^{\ast}\neq0 αi=0

非线性支持向量机引入了核函数 K ( x ⃗ , z ⃗ ) = ϕ T ( x ⃗ ) ϕ ( z ⃗ ) K(\vec x,\vec z)=\phi ^{T}(\vec x)\phi(\vec z) K(x ,z )=ϕT(x )ϕ(z ) ϕ ( ⋅ ) \phi(\cdot) ϕ()是输入空间到特征空间的映射。将线性SVM的对偶问题以及分类器中的向量内积替换为核函数 K K K便可得到非线性SVM的对偶最优化问题和分类器。所以,非线性SVM的对偶最优化问题的目标函数为
max ⁡ α ∑ i = 1 M α i y i − 1 2 ∑ i = 1 M ∑ j = 1 M α i α j K ( x ⃗ j , x ⃗ i ) \begin{array}{ll} \underset{\alpha}{\max}& \sum_{i=1}^{M} \alpha_{i}y_{i}-\frac{1}{2} \sum_{i=1}^{M} \sum_{j=1}^{M} \alpha_{i} \alpha_{j}K(\vec x_{j},\vec x_{i}) \end{array} αmaxi=1Mαiyi21i=1Mj=1MαiαjK(x j,x i)非线性SVM分类器为
f ( x ) = sign ( ∑ i = 1 M α i ∗ K ( x ⃗ i , x ⃗ ) + b ∗ ) f(x) =\text{sign}\left( \sum ^{M}_{i=1}\alpha_{i}^{\ast }K(\vec x_{i},\vec x)+{b}^{\ast }\right) f(x)=sign(i=1MαiK(x i,x )+b)注意,论文中作者虽然把由输入向量的内积构成的矩阵 K K K称为kernel matrix,但并不是指的非线性SVM中的kernel。因此,作者提出的QSVM主要是将线性SVM用量子算法来实现,而对于非线性SVM的量子化,作者并没有做详细讨论。

二、最小二乘支持向量机(LSSVM)

Aram W. Harrow等人提出的HHL算法旨在利用量子计算的方法求解线性方程 A x ⃗ = b ⃗ A\vec x= \vec b Ax =b ,而QSVM要利用HHL算法,首先需要把传统SVM的二次规划形式转换为 A x ⃗ = b ⃗ A\vec x= \vec b Ax =b 的这种形式。实现这种转化的方法便是引入松弛变量 e j e_{j} ej,将原始问题的不等式约束转换为等式约束
y j ( w ⃗ ⋅ x ⃗ j + b ) ≥ 1 → ( w ⃗ ⋅ x ⃗ j + b ) = y j − y j e j y_{j}\left(\vec{w} \cdot \vec{x}_{j}+b\right) \geq 1 \rightarrow\left(\vec{w} \cdot \vec{x}_{j}+b\right)=y_{j}-y_{j} e_{j} yj(w x j+b)1(w x j+b)=yjyjej,引入松弛变量后的原问题的对偶问题近似为
F ( b α ⃗ ) = ( 0 1 ⃗ T 1 ⃗ K + γ − 1 I ) ( b α ⃗ ) = ( 0 y ⃗ ) F\left(\begin{array}{c} b \\ \vec{\alpha} \end{array}\right) =\left(\begin{array}{cc} 0 & \vec{1}^{T} \\ \vec{1} & K+\gamma^{-1}I \end{array}\right)\left(\begin{array}{l} b \\ \vec{\alpha} \end{array}\right)=\left(\begin{array}{l} 0 \\ \vec{y} \end{array}\right) F(bα )=(01 1 TK+γ1I)(bα )=(0y )其中 1 ⃗ = ( 1 , ⋯   , 1 ) T \vec{1}=(1, \cdots, 1)^{T} 1 =(1,,1)T α ⃗ = ( α 1 , α 2 , … , α M ) T \vec\alpha =\left(\alpha_{1},\alpha _{2},\ldots ,\alpha _{M}\right) ^{T} α =(α1,α2,,αM)T K = [ ( x ⃗ 1 , x ⃗ 1 ) ( x ⃗ 1 , x ⃗ 2 ) ⋯ ( x ⃗ 1 , x ⃗ M ) ( x ⃗ 2 , x ⃗ 1 ) ( x ⃗ 2 , x ⃗ 2 ) ⋯ ( x ⃗ 2 , x ⃗ M ) ⋮ ⋮ ⋱ ⋮ ( x ⃗ M , x ⃗ 1 ) ( x ⃗ M , x ⃗ 2 ) ⋯ ( x ⃗ M , x ⃗ M ) ] K=\left[ \begin{array}{cccc} (\vec x_{1}, \vec x_{1})& (\vec x_{1}, \vec x_{2}) &\cdots & (\vec x_{1},\vec x_{M}) \\ (\vec x_{2}, \vec x_{1})& (\vec x_{2}, \vec x_{2}) &\cdots & (\vec x_{2},\vec x_{M}) \\ \vdots & \vdots & \ddots & \vdots \\ (\vec x_{M}, \vec x_{1})& (\vec x_{M}, \vec x_{2}) &\cdots &(\vec x_{M}, \vec x_{M}) \end{array} \right ] K=(x 1,x 1)(x 2,x 1)(x M,x 1)(x 1,x 2)(x 2,x 2)(x M,x 2)(x 1,x M)(x 2,x M)(x M,x M) y ⃗ = ( y 1 , y 2 , ⋯   , y M ) T \vec y=(y_{1},y_{2},\cdots,y_{M})^{T} y =(y1,y2,,yM)T
b b b α ⃗ \vec\alpha α 即为待求参数,作者将利用HHL算法求解
( b α ⃗ ) = F − 1 ( 0 y ⃗ ) . \left(\begin{array}{c} b \\ \vec{\alpha} \end{array}\right) =F^{-1}\left(\begin{array}{l} 0 \\ \vec{y} \end{array}\right). (bα )=F1(0y ).

三、QSVM的训练

1. 非稀疏矩阵 F ^ \hat{F} F^的指数化

回顾HHL算法,用量子算法求解矩阵 A A A的逆,需要将 A A A指数化为酉算子 e − i A t 0 T e^{-iA\frac{t_{0}}{T}} eiATt0,并且要求
A † = A A^{\dagger}=A A=A
A A A是稀疏的;
A A A的特征值都大于0小于1,特征值越接近于0,指数化的效率越低。
F F F显然满足 F † = F F^{\dagger}=F F=F,且 F F F是正定的,令 F ^ = F / tr ⁡ F \hat{F}=F / \operatorname{tr}F F^=F/trF F ^ \hat{F} F^的特征值将处于0到1之间,但 F F F一般不满足稀疏这一条件。对于非稀疏的埃尔米特矩阵的指数化,将采用一种近似的量子算法进行逼近。
先对 F ^ \hat{F} F^进行一下拆分, F ^ = ( J + K + γ − 1 I ) / tr ⁡ F \hat{F}=\left(J+K+\gamma^{-1} I\right) / \operatorname{tr} F F^=(J+K+γ1I)/trF,其中 J = ( 0 1 ⃗ T 1 ⃗ 0 ) J = \left(\begin{array}{cc} 0 & \vec{1}^{T} \\ \vec{1} & 0 \end{array}\right) J=(01 1 T0),因此,
e − i F ^ Δ t = e − i Δ t γ − 1 I / t r F e − i Δ t J / t r F e − i Δ t K / t r F + O ( Δ t 2 ) e^{-i \hat{F} \Delta t}=e^{-i \Delta t \gamma^{-1} I / \mathrm{trF}} e^{-i \Delta t J/ \mathrm{trF}} e^{-i \Delta t K/ \mathrm{trF}}+O\left(\Delta t^{2}\right) eiF^Δt=eiΔtγ1I/trFeiΔtJ/trFeiΔtK/trF+O(Δt2) tr ⁡ F \operatorname{tr} F trF tr ⁡ K \operatorname{tr} K trK是两个常数,不妨稍微改变一下HHL算法中quantum phase estimation的时间 Δ t \Delta t Δt,上式变为(后文中为了方便起见将 Δ t ′ \Delta t' Δt写作 Δ t \Delta t Δt
e − i F ^ Δ t ′ = e − i Δ t ′ γ − 1 I / t r K e − i Δ t ′ J / t r K e − i Δ t ′ K / t r K + O ( Δ t ′ 2 ) e^{-i \hat{F} \Delta t'}=e^{-i \Delta t' \gamma^{-1} I / \mathrm{trK}} e^{-i \Delta t' J/ \mathrm{trK}} e^{-i \Delta t' K/ \mathrm{trK}}+O\left(\Delta t'^{2}\right) eiF^Δt=eiΔtγ1I/trKeiΔtJ/trKeiΔtK/trK+O(Δt2)上式中无论 γ − 1 I / t r K \gamma^{-1}I/\mathrm{trK} γ1I/trK还是 J / t r K J/\mathrm{trK} J/trK都满足HHL算法的三条要求,因此都是可以高效地指数化的,只有 K / t r K K/\mathrm{tr}K K/trK不满足第二条要求。所以如何高效地对 K / t r K K/\mathrm{tr}K K/trK进行指数化,构造为酉算子 e − i Δ t K / t r K e^{-i \Delta t K/ \mathrm{tr}K} eiΔtK/trK是一个核心问题。

论文中作者采用了QPCA中的思想,近似地对非稀疏的埃尔米特矩阵进行指数化, O ( Δ t 2 ) O\left(\Delta t^{2}\right) O(Δt2)就是近似误差。

K ^ = K / t r K \hat{K} = K/\mathrm{tr}K K^=K/trK,显然 K ^ \hat{K} K^ t r a c e trace trace等于1且正定,因此可以把 K ^ \hat{K} K^density operatordensity matrix,以下量子电路将产生状态 K ^ \hat{K} K^在这里插入图片描述
Training data可以以量子态形式存储在quantum RAM中,
∣ x ⃗ i ⟩ = 1 / ∣ x ⃗ i ∣ ∑ k = 1 N ( x ⃗ i ) k ∣ k ⟩ \left|\vec{x}_{i}\right\rangle=1 /\left|\vec{x}_{i}\right| \sum_{k=1}^{N}\left(\vec{x}_{i}\right)_{k}|k\rangle x i=1/x ik=1N(x i)kk量子态的Training data和事先准备的量子态 1 M ∑ i = 1 M ∣ i ⟩ \frac{1}{\sqrt{M}} \sum_{i=1}^{M}|i\rangle M 1i=1Mi经过Oracle的作用后,形成的叠加态为
∣ χ ⟩ = 1 / N χ ∑ i = 1 M ∣ x ⃗ i ∣ ∣ i ⟩ ∣ x ⃗ i ⟩ |\chi\rangle=1 / \sqrt{N_{\chi}} \sum_{i=1}^{M}\left|\vec{x}_{i}\right||i\rangle\left|\vec{x}_{i}\right\rangle χ=1/Nχ i=1Mx iix i其中 N χ = ∑ i = 1 M ∣ x ⃗ i ∣ 2 N_{\chi}=\sum_{i=1}^{M}\left|\vec{x}_{i}\right|^{2} Nχ=i=1Mx i2。利用density matrix描述量子系统状态,舍去Training data寄存器中的量子态,系统的状态为
ρ 1 = tr ⁡ 2 { ∣ χ ⟩ ⟨ χ ∣ } = tr ⁡ 2 { 1 N χ ∑ i , j = 1 M ∣ x ⃗ i ∣ ∣ x ⃗ j ∣ ∣ i ⟩ ∣ x ⃗ i ⟩ ⟨ j ∣ ⟨ x ⃗ j ∣ } = 1 N χ ∑ i , j = 1 M ⟨ x ⃗ j ∣ x ⃗ i ⟩ ∣ x ⃗ i ∣ ∣ x ⃗ j ∣ ∣ i ⟩ ⟨ j ∣ = K / t r K = K ^ \rho _{1}=\operatorname{tr}_{2}\{|\chi\rangle\langle\chi|\}=\operatorname{tr}_{2}\left\{\frac{1}{N_{\chi}} \sum_{i, j=1}^{M}|\vec{x}_{i}||\vec{x}_{j}|| i\rangle|\vec{x}_{i}\rangle\langle j|\langle\vec{x}_{j}|\right\}=\frac{1}{N_{\chi}} \sum_{i, j=1}^{M}\left\langle\vec{x}_{j}|\vec{x}_{i}\right\rangle|\vec{x}_{i}||\vec{x}_{j}|| i\rangle\langle j| = K/\mathrm{tr}K=\hat{K} ρ1=tr2{χχ}=tr2{Nχ1i,j=1Mx ix jix ijx j}=Nχ1i,j=1Mx jx ix ix jij=K/trK=K^这一步的计算复杂度为 O ( log ⁡ M N ) O(\log M N) O(logMN),可以理解为 M M M N N N维向量 x ⃗ i \vec{x}_{i} x i可以由 log ⁡ M N \log MN logMN个量子进行表示。

在这里插入图片描述
基于QPCA中的思想,非稀疏的埃尔米特矩阵 K ^ \hat{K} K^的指数化形成的酉算子 e − i K ^ Δ t e^{-i \hat{K}\Delta t } eiK^Δt对某一状态 ρ \rho ρ的作用,近似于swap matrix S S = ∑ m , n = 1 M ∣ m ⟩ ⟨ n ∣ ⊗ ∣ n ⟩ ⟨ m ∣ S=\sum_{m, n=1}^{M}|m\rangle\langle n|\otimes| n\rangle\langle m| S=m,n=1Mmnnm)的指数化形成的酉算子 e − i S Δ t e^{-i S\Delta t} eiSΔt K ^ \hat{K} K^ ρ \rho ρ形成的组合量子系统作用后,并舍弃 K ^ \hat{K} K^变化后的状态而余下的状态,图解如上图所示。该部分的证明较为复杂,将在文章最后给出。由于swap matrix S的指数化是较为高效的,因此该方法在误差允许范围内实现了非稀疏埃尔米特矩阵的指数化。

2. 基于HHL算法的模型参数求解

至此,矩阵 F ^ \hat{F} F^可以高效的指数化为酉算子 e − i F ^ Δ t e^{-i \hat{F} \Delta t} eiF^Δt,因此可以利用HHL算法求解 ( b α ⃗ ) = F − 1 ( 0 y ⃗ ) \left(\begin{array}{c} b \\ \vec{\alpha} \end{array}\right) =F^{-1}\left(\begin{array}{l} 0 \\ \vec{y} \end{array}\right) (bα )=F1(0y )。对应的QSVM参数训练量子电路图如下图所示,
在这里插入图片描述
这里简要推导一下基于HHL算法怎样得到模型参数 ( b α ⃗ ) \begin{pmatrix} b \\ \vec\alpha \end{pmatrix} (bα )

假设矩阵 F ^ \hat{F} F^的特征值为 λ 1 , λ 2 , … , λ M + 1 \lambda _{1},\lambda _{2},\dots ,\lambda _{M+1} λ1,λ2,,λM+1,对应的单位正交的特征向量为 ∣ u 1 ⟩ , ∣ u 2 ⟩ , … , ∣ u M + 1 ⟩ |u _{1}\rangle,|u _{2}\rangle,\dots ,|u _{M+1}\rangle u1,u2,,uM+1,这 M + 1 M+1 M+1个特征向量构成M+1维线性空间的一组标准正交基,将 ∣ y ~ ⟩ = ( 0 y ⃗ ) |\tilde{y}\rangle=\begin{pmatrix} 0 \\ \vec y \end{pmatrix} y~=(0y )在这组基下分解得到 ∣ y ~ ⟩ = ∑ j = 1 M + 1 ⟨ u j ∣ y ~ ⟩ ∣ u j ⟩ |\tilde{y}\rangle=\sum_{j=1}^{M+1}\langle u_{j} |\tilde{y}\rangle\left|u_{j}\right\rangle y~=j=1M+1ujy~uj,经过绿线框中的Improved quantum phase estimation,得到 ∑ j = 1 M + 1 ⟨ u j ∣ y ~ ⟩ ∣ λ j ⟩ ∣ u j ⟩ \sum_{j=1}^{M+1}\left\langle u_{j} |\tilde{y}\right\rangle\left|\lambda_{j}\right\rangle\left|u_{j}\right\rangle j=1M+1ujy~λjuj;引入ancilla qubit ∣ 0 ⟩ |0\rangle 0,执行Controlled rotation,得到 ∑ j = 1 M + 1 ⟨ u j ∣ y ~ ⟩ ( 1 − 1 2 λ j 2 ∣ 0 ⟩ + 1 λ j ∣ 1 ⟩ ) ∣ λ j ⟩ ∣ u j ⟩ \sum_{j=1}^{M+1} \left\langle u_{j} |\tilde{y}\right\rangle\left(\sqrt{1-\frac{1^{2}}{\lambda_{j}^{2}}}|0\rangle+\frac{1}{\lambda_{j}}|1\rangle\right)\left|\lambda_j\rangle|u_{j}\right\rangle j=1M+1ujy~(1λj212 0+λj11)λjuj;对第一个寄存器中的量子态进行测量,当测量得到的量子态为 ∣ 1 ⟩ |1\rangle 1时,忽略第二个寄存器中的量子态,最终得到 ∑ j = 1 M + 1 1 λ j ⟨ u j ∣ y ~ ⟩ ∣ u j ⟩ \sum_{j=1}^{M+1} \frac{1}{\lambda_{j}}\left\langle u_{j} |\tilde{y}\right\rangle\left|u_{j}\right\rangle j=1M+1λj1ujy~uj,即 ( b α ⃗ ) \left(\begin{array}{c} b \\ \vec{\alpha} \end{array}\right) (bα )

注意,上述推导过程忽略了HHL算法中要求 ∣ y ~ ⟩ |\tilde{y}\rangle y~为单位向量以及量子态的系数,导致某些量子态不是单位化的,并且HHL算法最终求解得出的结果是 ( b α ⃗ ) \left(\begin{array}{c} b \\ \vec{\alpha} \end{array}\right) (bα )的单位化。所以,最终得到的结果可以写为
∣ b , α ⃗ ⟩ = 1 C ( b ∣ 0 ⟩ + ∑ k = 1 M α k ∣ k ⟩ ) |b, \vec{\alpha}\rangle=\frac{1}{\sqrt{C}}\left(b|0\rangle+\sum_{k=1}^{M} \alpha_{k}|k\rangle\right) b,α =C 1(b0+k=1Mαkk)其中 C = b 2 + ∑ k = 1 M α k 2 C=b^{2}+\sum_{k=1}^{M} \alpha_{k}^{2} C=b2+k=1Mαk2

四、QSVM分类器

如何利用以量子态形式存储的模型参数 ∣ b , α ⃗ ⟩ |b, \vec{\alpha}\rangle b,α 对新的样本进行预测(分类)呢?作者利用了Swap-test算法。

利用Oracle构造两个量子态 ∣ u ~ ⟩ |\tilde{u}\rangle u~ ∣ x ~ ⟩ |\tilde{x}\rangle x~,
∣ u ~ ⟩ = 1 N u ~ ( b ∣ 0 ⟩ ∣ 0 ⟩ + ∑ k = 1 M α k ∣ x ⃗ k ∣ ∣ k ⟩ ∣ x ⃗ k ⟩ ) ,      N u ~ = b 2 + ∑ k = 1 M α k 2 ∣ x ⃗ k ∣ 2 |\tilde{u}\rangle=\frac{1}{\sqrt{N_{\tilde{u}}}}\left(b|0\rangle|0\rangle+\sum_{k=1}^{M} \alpha_{k}\left|\vec{x}_{k}\right||k\rangle\left|\vec{x}_{k}\right\rangle\right),\ \ \ \ N_{\tilde{u}}=b^{2}+\sum_{k=1}^{M} \alpha_{k}^{2}\left|\vec{x}_{k}\right|^{2} u~=Nu~ 1(b00+k=1Mαkx kkx k),    Nu~=b2+k=1Mαk2x k2 ∣ x ~ ⟩ = 1 N x ~ ( ∣ 0 ⟩ ∣ 0 ⟩ + ∑ k = 1 M ∣ x ⃗ ∣ ∣ k ⟩ ∣ x ⃗ ⟩ ) ,      N x ~ = M ∣ x ⃗ ∣ 2 + 1 |\tilde{x}\rangle=\frac{1}{\sqrt{N_{\tilde{x}}}}\left(|0\rangle|0\rangle+\sum_{k=1}^{M}|\vec{x}||k\rangle|\vec{x}\rangle\right),\ \ \ \ N_{\tilde{x}}=M|\vec{x}|^{2}+1 x~=Nx~ 1(00+k=1Mx kx ),    Nx~=Mx 2+1对这两个量子执行Swap-test,测得ancilla qubit的量子态为 ∣ 1 ⟩ |1\rangle 1的概率为 P = 1 2 ( 1 − ∣ ⟨ u ~ ∣ x ~ ⟩ ∣ 2 ) P=\frac{1}{2}(1-|\langle\tilde{u}|\tilde{x}\rangle|^{2}) P=21(1u~x~2),其中
⟨ u ~ ∣ x ~ ⟩ = 1 N x ~ N u ~ ( b + ∑ k = 1 M α k ∣ x ⃗ k ∣ ∣ x ⃗ ∣ ⟨ x ⃗ k ∣ x ⃗ ⟩ ) \langle\tilde{u}|\tilde{x}\rangle=\frac{1}{\sqrt{N_{\tilde{x}} N_{\tilde{u}}}}\left(b+\sum_{k=1}^{M} \alpha_{k}\left|\vec{x}_{k}\right||\vec{x}|\left\langle\vec{x}_{k}|\vec{x}\right\rangle\right) u~x~=Nx~Nu~ 1(b+k=1Mαkx kx x kx )上式与线性SVM的分类决策函数 f ( x ) = sign ( ∑ i = 1 M α i ∗ ( x ⃗ , x ⃗ i ) + b ∗ ) f(x) =\text{sign}\left( \sum ^{M}_{i=1}\alpha_{i}^{\ast }\left(\vec x, \vec x_{i}\right)+{b}^{\ast }\right) f(x)=sign(i=1Mαi(x ,x i)+b)只是系数上的不同。因此,通过多次运行Swap-test算法,若测得 P < 1 2 P<\frac{1}{2} P<21,说明新样本 x ⃗ \vec{x} x 属于正类;若测得 P > 1 2 P>\frac{1}{2} P>21,说明新样本 x ⃗ \vec{x} x 属于负类。为了使最后的误差小于 ϵ \epsilon ϵ,需要运行Swap-test算法 O ( P ( 1 − P ) / ϵ 2 ) O\left(P(1-P) / \epsilon^{2}\right) O(P(1P)/ϵ2)次。

参考文献
[1] Rebentrost P, Mohseni M, Lloyd S. Quantum support vector machine for big data classification[J]. Physical review letters, 2014, 113(13): 130503.
[2] Lloyd S, Mohseni M, Rebentrost P. Quantum principal component analysis[J]. Nature Physics, 2014, 10(9): 631-633.
[3] Buhrman H, Cleve R, Watrous J, et al. Quantum fingerprinting[J]. Physical Review Letters, 2001, 87(16): 167902.
[4] Harrow A W, Hassidim A, Lloyd S. Quantum algorithm for linear systems of equations[J]. Physical review letters, 2009, 103(15): 150502.
[5] Suykens J A K, Vandewalle J. Least squares support vector machine classifiers[J]. Neural processing letters, 1999, 9(3): 293-300.
[6] 量子支持向量机QSVM(一)
[7] 量子支持向量机QSVM(二)

公式证明
  1. 证明 S = ∑ m , n = 1 M ∣ m ⟩ ⟨ n ∣ ⊗ ∣ n ⟩ ⟨ m ∣ S=\sum_{m, n=1}^{M}|m\rangle\langle n|\otimes| n\rangle\langle m| S=m,n=1Mmnnm能够交换两个量子的状态:
    设有量子 ∣ α ⟩ = ∑ i = 1 M a i ∣ i ⟩ |\alpha\rangle=\sum_{i=1}^{M}a_{i}|i\rangle α=i=1Maii ∣ β ⟩ = ∑ j = 1 M b j ∣ j ⟩ |\beta\rangle=\sum_{j=1}^{M}b_{j}|j\rangle β=j=1Mbjj
    S ( ∣ α ⟩ ⊗ ∣ β ⟩ ) = ∑ m , n = 1 M ∣ m ⟩ ⟨ n ∣ ⊗ ∣ n ⟩ ⟨ m ∣ ( ∑ i , j = 1 M a i ∣ i ⟩ ⊗ b j ∣ j ⟩ ) = ∑ m , n = 1 M ∑ i , j = 1 M a i b j ( ∣ m ⟩ ⟨ n ∣ i ⟩ ) ⊗ ( ∣ n ⟩ ⟨ m ∣ j ⟩ ) = ∑ m , n = 1 M b m ∣ m ⟩ ⊗ a n ∣ n ⟩ = ∣ β ⟩ ⊗ ∣ α ⟩ . \begin{aligned} S\left(|\alpha\rangle\otimes|\beta\rangle\right) &= \sum_{m, n=1}^{M}|m\rangle\langle n|\otimes| n\rangle\langle m| \left(\sum_{i,j=1}^{M}a_{i}|i\rangle\otimes b_{j}|j\rangle\right) \\ &= \sum_{m, n=1}^{M}\sum_{i,j=1}^{M}a_{i}b_{j}\left(|m\rangle\langle n|i\rangle\right)\otimes\left(|n\rangle\langle m|j\rangle\right) \\ &= \sum_{m, n=1}^{M}b_{m}|m\rangle\otimes a_{n}|n\rangle \\ &= |\beta\rangle\otimes|\alpha\rangle. \end{aligned} S(αβ)=m,n=1Mmnnm(i,j=1Maiibjj)=m,n=1Mi,j=1Maibj(mni)(nmj)=m,n=1Mbmmann=βα.
  2. 显然有 S † = S S^{\dagger}=S S=S,所以 ⟨ α ∣ ⟨ β ∣ S = ( S ∣ α ⟩ ∣ β ⟩ ) † = ( ∣ β ⟩ ∣ α ⟩ ) † = ⟨ β ∣ ⟨ α ∣ \langle\alpha|\langle\beta|S=\left(S|\alpha\rangle|\beta\rangle\right)^{\dagger}=\left(|\beta\rangle|\alpha\rangle\right)^{\dagger}=\langle\beta|\langle\alpha| αβS=(Sαβ)=(βα)=βα.
  3. 因为 S 2 ( ∣ α ⟩ ⊗ ∣ β ⟩ ) = S ( ∣ β ⟩ ⊗ ∣ α ⟩ ) = ∣ α ⟩ ⊗ ∣ β ⟩ S^{2}\left(|\alpha\rangle\otimes|\beta\rangle\right)=S\left(|\beta\rangle\otimes|\alpha\rangle\right)=|\alpha\rangle\otimes|\beta\rangle S2(αβ)=S(βα)=αβ,所以 S 2 = I S^{2}=I S2=I.
  4. e − i S Δ t = cos ⁡ ( Δ t S ) − i sin ⁡ ( Δ t S ) = I cos ⁡ Δ t − i S sin ⁡ Δ t e^{-iS\Delta t}=\cos(\Delta t S)-i\sin(\Delta t S)=I\cos\Delta t-iS\sin\Delta t eiSΔt=cos(ΔtS)isin(ΔtS)=IcosΔtiSsinΔt.
  5. 证明 e − i K ^ Δ t ρ e i K ^ Δ t ≈ tr ⁡ 1 { e − i S Δ t K ^ ⊗ ρ e i S Δ t } = ρ − i Δ t [ K ^ , ρ ] + O ( Δ t 2 ) e^{-i \hat{K} \Delta t} \rho e^{i \hat{K} \Delta t} \approx \operatorname{tr}_{1}\left\{e^{-i S \Delta t} \hat{K} \otimes \rho e^{i S \Delta t}\right\}=\rho-i \Delta t[\hat{K}, \rho]+O\left(\Delta t^{2}\right) eiK^ΔtρeiK^Δttr1{eiSΔtK^ρeiSΔt}=ρiΔt[K^,ρ]+O(Δt2).
    K ^ = ∑ i = 1 M λ i ∣ k i ⟩ ⟨ k i ∣ \hat{K}=\sum_{i=1}^{M}\lambda_{i}|k_{i}\rangle\langle k_{i}| K^=i=1Mλikiki ρ = ∑ j = 1 M p j ∣ ψ j ⟩ ⟨ ψ j ∣ \rho=\sum_{j=1}^{M}p_{j}|\psi_{j}\rangle\langle \psi_{j}| ρ=j=1Mpjψjψj,其中 ∑ i = 1 M λ i = 1 \sum_{i=1}^{M}\lambda_{i}=1 i=1Mλi=1 ∑ j = 1 M p j = 1 \sum_{j=1}^{M}p_{j}=1 j=1Mpj=1。注意,density matrix的展开并不一定是谱分解,因此 λ i \lambda_{i} λi p j p_{j} pj并不一定是特征值, ∣ k i ⟩ |k_{i}\rangle ki ∣ ψ j ⟩ |\psi_{j}\rangle ψj并不一定是标准正交的特征向量。
    e − i K ^ Δ t ρ e i K ^ Δ t ≈ ( I − i K ^ Δ t ) ρ ( I + i K ^ Δ t ) = ∑ j = 1 M [ ( I − i Δ t ∑ i = 1 M λ i ∣ k i ⟩ ⟨ k i ∣ ) p j ∣ ψ j ⟩ ⟨ ψ j ∣ ( I + i Δ t ∑ i = 1 M λ i ∣ k i ⟩ ⟨ k i ∣ ) ] = ∑ j = 1 M ( p j ∣ ψ j ⟩ ⟨ ψ j ∣ − i Δ t ∑ i = 1 M λ i p j ⟨ k i ∣ ψ j ⟩ ∣ k i ⟩ ⟨ ψ j ∣ + i Δ t ∑ i = 1 M λ i p j ⟨ ψ j ∣ k i ⟩ ∣ ψ j ⟩ ⟨ k i ∣ + Δ t 2 ∑ i , γ = 1 M p j λ i λ γ ∣ ⟨ k i ∣ ψ j ⟩ ∣ 2 ∣ k i ⟩ ⟨ k γ ∣ ) = ρ − i Δ t ( ∑ i , j = 1 M λ i p j ⟨ k i ∣ ψ j ⟩ ∣ k i ⟩ ⟨ ψ j ∣ − ∑ i , j = 1 M λ i p j ⟨ ψ j ∣ k i ⟩ ∣ ψ j ⟩ ⟨ k i ∣ ) + Δ t 2 ∑ i , j , γ = 1 M p j λ i λ γ ∣ ⟨ k i ∣ ψ j ⟩ ∣ 2 ∣ k i ⟩ ⟨ k γ ∣ = ρ − i Δ t [ K ^ , ρ ] + O ( Δ t 2 ) \begin{aligned} e^{-i \hat{K} \Delta t} \rho e^{i \hat{K} \Delta t} &\approx \left(I-i \hat{K} \Delta t\right)\rho\left(I+i \hat{K} \Delta t\right) \\ &= \sum_{j=1}^{M}\left[\left(I-i \Delta t \sum_{i=1}^{M}\lambda_{i}|k_{i}\rangle\langle k_{i}|\right)p_{j}|\psi_{j}\rangle\langle \psi_{j}|\left(I+i \Delta t \sum_{i=1}^{M}\lambda_{i}|k_{i}\rangle\langle k_{i}|\right)\right] \\ &= \sum_{j=1}^{M}\left(p_{j}|\psi_{j}\rangle\langle \psi_{j}|-i\Delta t \sum_{i=1}^{M}\lambda_{i}p_{j}\langle k_{i}|\psi_{j}\rangle|k_{i}\rangle\langle \psi_{j}|+i\Delta t \sum_{i=1}^{M}\lambda_{i}p_{j}\langle \psi_{j}|k_{i}\rangle|\psi_{j}\rangle\langle k_{i}|+\Delta t^{2}\sum_{i,\gamma=1}^{M}p_{j}\lambda_{i}\lambda_{\gamma}\left|\langle k_{i}|\psi_{j}\rangle\right|^{2}|k_{i}\rangle\langle k_{\gamma}|\right) \\ &= \rho-i\Delta t\left(\sum_{i,j=1}^{M}\lambda_{i}p_{j}\langle k_{i}|\psi_{j}\rangle|k_{i}\rangle\langle \psi_{j}|-\sum_{i,j=1}^{M}\lambda_{i}p_{j}\langle \psi_{j}|k_{i}\rangle|\psi_{j}\rangle\langle k_{i}|\right)+\Delta t^{2}\sum_{i,j,\gamma=1}^{M}p_{j}\lambda_{i}\lambda_{\gamma}\left|\langle k_{i}|\psi_{j}\rangle\right|^{2}|k_{i}\rangle\langle k_{\gamma}| \\ &= \rho-i\Delta t\left[\hat{K},\rho\right]+O\left(\Delta t^{2}\right) \end{aligned} eiK^ΔtρeiK^Δt(IiK^Δt)ρ(I+iK^Δt)=j=1M[(IiΔti=1Mλikiki)pjψjψj(I+iΔti=1Mλikiki)]=j=1M(pjψjψjiΔti=1Mλipjkiψjkiψj+iΔti=1Mλipjψjkiψjki+Δt2i,γ=1Mpjλiλγkiψj2kikγ)=ρiΔt(i,j=1Mλipjkiψjkiψji,j=1Mλipjψjkiψjki)+Δt2i,j,γ=1Mpjλiλγkiψj2kikγ=ρiΔt[K^,ρ]+O(Δt2) tr ⁡ 1 { e − i S Δ t K ^ ⊗ ρ e i S Δ t } = tr ⁡ 1 { ( I cos ⁡ Δ t − i S sin ⁡ Δ t ) ( ∑ i , j = 1 M λ i p j ∣ k i ⟩ ⟨ k i ∣ ⊗ ∣ ψ j ⟩ ⟨ ψ j ∣ ) ( I cos ⁡ Δ t + i S sin ⁡ Δ t ) } = ∑ i , j = 1 M λ i p j tr ⁡ 1 { ( I cos ⁡ Δ t − i S sin ⁡ Δ t ) ( ∣ k i ⟩ ∣ ψ j ⟩ ⊗ ⟨ k i ∣ ⟨ ψ j ∣ ) ( I cos ⁡ Δ t + i S sin ⁡ Δ t ) } = ∑ i , j = 1 M λ i p j tr ⁡ 1 { cos ⁡ 2 Δ t ∣ k i ⟩ ∣ ψ j ⟩ ⟨ k i ∣ ⟨ ψ j ∣ − i sin ⁡ Δ t cos ⁡ Δ t ∣ ψ j ⟩ ∣ k i ⟩ ⟨ k i ∣ ⟨ ψ j ∣ + i sin ⁡ Δ t cos ⁡ Δ t ∣ k i ⟩ ∣ ψ j ⟩ ⟨ ψ j ∣ ⟨ k i ∣ + sin ⁡ 2 Δ t ∣ ψ j ⟩ ∣ k i ⟩ ⟨ ψ j ∣ ⟨ k i ∣ } = ∑ i , j = 1 M λ i p j tr ⁡ 1 { cos ⁡ 2 Δ t ∣ k i ⟩ ⟨ k i ∣ ⊗ ∣ ψ j ⟩ ⟨ ψ j ∣ − i sin ⁡ Δ t cos ⁡ Δ t ∣ ψ j ⟩ ⟨ k i ∣ ⊗ ∣ k i ⟩ ⟨ ψ j ∣ + i sin ⁡ Δ t cos ⁡ Δ t ∣ k i ⟩ ⟨ ψ j ∣ ⊗ ∣ ψ j ⟩ ⟨ k i ∣ + sin ⁡ 2 Δ t ∣ ψ j ⟩ ⟨ ψ j ∣ ⊗ ∣ k i ⟩ ⟨ k i ∣ } = ∑ i , j = 1 M λ i p j { cos ⁡ 2 Δ t ∣ ψ j ⟩ ⟨ ψ j ∣ − i sin ⁡ Δ t cos ⁡ Δ t ( ⟨ k i ∣ ψ j ⟩ ∣ k i ⟩ ⟨ ψ j ∣ − ⟨ ψ j ∣ k i ⟩ ∣ ψ j ⟩ ⟨ k i ∣ ) + sin ⁡ 2 Δ t ∣ k i ⟩ ⟨ k i ∣ } = ρ cos ⁡ 2 Δ t − i sin ⁡ Δ t cos ⁡ Δ t ∑ i , j = 1 M λ i p j ( ⟨ k i ∣ ψ j ⟩ ∣ k i ⟩ ⟨ ψ j ∣ − ⟨ ψ j ∣ k i ⟩ ∣ ψ j ⟩ ⟨ k i ∣ ) + K ^ sin ⁡ 2 Δ t = ρ − i sin ⁡ Δ t cos ⁡ Δ t [ K ^ , ρ ] + O ( Δ t 2 ) \begin{aligned} \operatorname{tr}_{1}\left\{e^{-i S \Delta t} \hat{K} \otimes \rho e^{i S \Delta t}\right\} &= \operatorname{tr}_{1}\left\{\left(I\cos\Delta t-iS\sin\Delta t\right)\left(\sum_{i,j=1}^{M}\lambda_{i}p_{j}|k_{i}\rangle\langle k_{i}|\otimes|\psi_{j}\rangle\langle \psi_{j}|\right)\left(I\cos\Delta t+iS\sin\Delta t\right)\right\} \\ &= \sum_{i,j=1}^{M}\lambda_{i}p_{j}\operatorname{tr}_{1}\left\{\left(I\cos\Delta t-iS\sin\Delta t\right)\left(|k_{i}\rangle|\psi_{j}\rangle\otimes\langle k_{i}|\langle \psi_{j}|\right)\left(I\cos\Delta t+iS\sin\Delta t\right)\right\} \\ &= \sum_{i,j=1}^{M}\lambda_{i}p_{j}\operatorname{tr}_{1}\left\{\cos^{2}\Delta t|k_{i}\rangle|\psi_{j}\rangle\langle k_{i}|\langle \psi_{j}|-i\sin\Delta t\cos\Delta t|\psi_{j}\rangle|k_{i}\rangle\langle k_{i}|\langle \psi_{j}|+i\sin\Delta t\cos\Delta t|k_{i}\rangle|\psi_{j}\rangle\langle \psi_{j}|\langle k_{i}|+\sin^{2}\Delta t|\psi_{j}\rangle|k_{i}\rangle\langle \psi_{j}|\langle k_{i}|\right\} \\ &= \sum_{i,j=1}^{M}\lambda_{i}p_{j}\operatorname{tr}_{1}\left\{\cos^{2}\Delta t|k_{i}\rangle\langle k_{i}|\otimes|\psi_{j}\rangle\langle \psi_{j}|-i\sin\Delta t\cos\Delta t|\psi_{j}\rangle\langle k_{i}|\otimes|k_{i}\rangle\langle \psi_{j}|+i\sin\Delta t\cos\Delta t|k_{i}\rangle\langle \psi_{j}|\otimes|\psi_{j}\rangle\langle k_{i}|+\sin^{2}\Delta t|\psi_{j}\rangle\langle \psi_{j}|\otimes|k_{i}\rangle\langle k_{i}|\right\} \\ &= \sum_{i,j=1}^{M}\lambda_{i}p_{j}\left\{\cos^{2}\Delta t|\psi_{j}\rangle\langle \psi_{j}|-i\sin\Delta t\cos\Delta t\left(\langle k_{i}|\psi_{j}\rangle|k_{i}\rangle\langle\psi_{j}|-\langle \psi_{j}|k_{i}\rangle|\psi_{j}\rangle\langle k_{i}|\right)+\sin^{2}\Delta t|k_{i}\rangle\langle k_{i}|\right\} \\ &= \rho\cos^{2}\Delta t-i\sin\Delta t\cos\Delta t \sum_{i,j=1}^{M}\lambda_{i}p_{j}\left(\langle k_{i}|\psi_{j}\rangle|k_{i}\rangle\langle\psi_{j}|-\langle \psi_{j}|k_{i}\rangle|\psi_{j}\rangle\langle k_{i}|\right)+\hat{K}\sin^{2}\Delta t \\ &= \rho-i\sin\Delta t\cos\Delta t\left[\hat{K},\rho\right]+O\left(\Delta t^{2}\right) \end{aligned} tr1{eiSΔtK^ρeiSΔt}=tr1{(IcosΔtiSsinΔt)(i,j=1Mλipjkikiψjψj)(IcosΔt+iSsinΔt)}=i,j=1Mλipjtr1{(IcosΔtiSsinΔt)(kiψjkiψj)(IcosΔt+iSsinΔt)}=i,j=1Mλipjtr1{cos2ΔtkiψjkiψjisinΔtcosΔtψjkikiψj+isinΔtcosΔtkiψjψjki+sin2Δtψjkiψjki}=i,j=1Mλipjtr1{cos2ΔtkikiψjψjisinΔtcosΔtψjkikiψj+isinΔtcosΔtkiψjψjki+sin2Δtψjψjkiki}=i,j=1Mλipj{cos2ΔtψjψjisinΔtcosΔt(kiψjkiψjψjkiψjki)+sin2Δtkiki}=ρcos2ΔtisinΔtcosΔti,j=1Mλipj(kiψjkiψjψjkiψjki)+K^sin2Δt=ρisinΔtcosΔt[K^,ρ]+O(Δt2)
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的量子支持向量机算法的Python实现: 首先,我们需要导入一些必要的库: ```python import numpy as np from qiskit import Aer, QuantumCircuit, transpile, assemble from qiskit.circuit.library import ZZFeatureMap, ZFeatureMap from qiskit.visualization import plot_histogram ``` 接着,我们定义一个函数,该函数将数据映射到量子比特上: ```python def get_feature_map(x, map_type): if map_type == 'ZZ': feature_map = ZZFeatureMap(feature_dimension=len(x)) else: feature_map = ZFeatureMap(feature_dimension=len(x)) return feature_map.bind_parameters(x) ``` 然后,我们定义一个函数,该函数创建一个量子支持向量机电路: ```python def get_qsvm_circuit(x, y, map_type='Z'): feature_map = get_feature_map(x, map_type) svm = QuantumCircuit(feature_map.num_qubits) svm.append(feature_map, range(feature_map.num_qubits)) svm.h(0) svm.cx(0, 1) svm.barrier() svm.rz(y[0] * np.pi / 2, 1) svm.cx(0, 1) svm.rz(-y[0] * np.pi / 2, 1) svm.cx(0, 1) svm.barrier() svm.h(0) return svm ``` 最后,我们定义一个函数,该函数执行量子支持向量机算法并返回结果: ```python def run_qsvm(x, y, map_type='Z'): svm = get_qsvm_circuit(x, y, map_type) svm.measure_all() backend = Aer.get_backend('qasm_simulator') qobj = assemble(transpile(svm, backend), shots=1024) results = backend.run(qobj).result().get_counts() return results ``` 现在,我们可以使用上述函数来运行量子支持向量机算法,并得到分类结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值