问题:如何求
∣
ψ
⟩
|\psi\rangle
∣ψ⟩?
注:只要我们知道
∣
ψ
⟩
|\psi\rangle
∣ψ⟩,就可以求出联合概率密度
1.等概率假设
对于一大类图片
X
\mathbb{X}
X,例如0到9的手写体数字(见MNIST数据集),我们可以训练量子态
∣
ψ
⟩
|\psi\rangle
∣ψ⟩,使得该类中每一张图片(记为
X
X
X )出现的概率非零且相等,即:
P
(
X
)
=
(
∏
⊗
l
=
1
L
∣
⟨
x
l
∣
ψ
⟩
∣
)
2
=
const.
∀
X
∝
X
\mathrm{P}(X)=\left(\prod_{\otimes l=1}^{L}\left|\left\langle x_{l} \mid \psi\right\rangle\right|\right)^{2}=\text { const. } \forall \mathrm{X} \propto \mathbb{X}
P(X)=(⊗l=1∏L∣⟨xl∣ψ⟩∣)2= const. ∀X∝X注:找到一个
∣
ψ
⟩
|\psi\rangle
∣ψ⟩,使得
∣
ψ
⟩
|\psi\rangle
∣ψ⟩对应的联合概率中每一个样本出现的概率都等于一个非零的常数
等概率假设:当上式成立时,我们认为
∣
ψ
⟩
|\psi\rangle
∣ψ⟩给出的联合概率分布
P
(
X
)
\mathrm{P}(X)
P(X) 接近该类图片
X
\mathbb{X}
X给出的像素的联合概率分布。
2.量子懒惰学习
实际上。如果已知
X
\mathbb{X}
X(例如MNIST训练集),我们可以直接写出一种满足等概率假设的量子态:
∣
ψ
lazy
⟩
=
1
∣
X
∣
∑
X
∝
X
∏
⊗
l
=
1
L
∣
x
l
⟩
\left|\psi^{\text {lazy }}\right\rangle=\frac{1}{\sqrt{|\mathbb{X}|}} \sum_{X \propto \mathbb{X}} \prod_{\otimes l=1}^{L}\left|x_{l}\right\rangle
∣∣ψlazy ⟩=∣X∣1X∝X∑⊗l=1∏L∣xl⟩其中|
X
\mathbb{X}
X|代表
X
\mathbb{X}
X中图片数量。上态称之为lazy态。
由于“正交灾难",容易看出lazy态满足概率归一条件
⟨
ψ
l
a
z
y
∣
ψ
l
a
z
y
⟩
=
1
∣
X
∣
∑
X
,
X
′
∝
X
⟨
X
∣
X
′
⟩
≈
1
∣
X
∣
∑
X
,
X
′
∝
X
δ
X
,
X
′
=
1
\left\langle\psi^{\mathrm{lazy}} \mid \psi^{\mathrm{lazy}}\right\rangle=\frac{1}{|\mathbb{X}|} \sum_{X, X^{\prime} \propto \mathbb{X}}\left\langle X \mid X^{\prime}\right\rangle \approx \frac{1}{|\mathbb{X}|} \sum_{X, X^{\prime} \propto \mathbb{X}} \delta_{X, X^{\prime}}=1
⟨ψlazy∣ψlazy⟩=∣X∣1X,X′∝X∑⟨X∣X′⟩≈∣X∣1X,X′∝X∑δX,X′=1只要知道训练集
X
\mathbb{X}
X,即可通过特征映射计算出
∣
ψ
l
a
z
y
⟩
,
\left|\psi^{\mathrm{lazy}}\right\rangle,
∣∣ψlazy⟩, 而不需要通过任何训练过程,
∣
ψ
l
a
z
y
⟩
\left|\psi^{\mathrm{lazy}}\right\rangle
∣∣ψlazy⟩ 中也不包含任何变分参数, 因此通过lazy态实现机器学习任务被称为量子懒惰学习 (quantun lazy learning)。唯一可调的超参数为特征映射中的形式与参数。
例如:我们可以通过lazy态实现监督性分类。以MNIST为例,对于训练集10类图片,定义10个lazy态
∣
ψ
k
lazy
⟩
=
1
∣
X
k
∣
∑
X
∝
x
k
∏
⊗
l
=
1
L
∣
x
l
⟩
\left|\psi_{k}^{\text {lazy }}\right\rangle=\frac{1}{\sqrt{\left|\mathbb{X}_{k}\right|}} \sum_{\mathbf{X} \propto x_{k}} \prod_{\otimes l=1}^{L}\left|x_{l}\right\rangle
∣∣∣ψklazy ⟩=∣Xk∣1X∝xk∑⊗l=1∏L∣xl⟩其中
X
k
\mathbb{X}_{k}
Xk 代表第k类训练集样本。
根据这10个lazy态
{
∣
ψ
k
lazy
⟩
}
,
\left\{\left|\psi_{k}^{\text {lazy }}\right\rangle\right\},
{∣∣∣ψklazy ⟩}, 我们可以根据量子概率定义,估计任意图片
(
(
(记为
Y
Y
Y) 出现在第k类的概率:
P
k
(
Y
)
=
∣
⟨
Y
∣
ψ
k
lazy
⟩
∣
2
P_{k}(\boldsymbol{Y})=|\left\langle\boldsymbol{Y} \mid \psi_{k}^{\text {lazy }}\right\rangle|^2
Pk(Y)=∣⟨Y∣ψklazy ⟩∣2显然,该图片最概然的分类是argmax
k
(
P
k
(
Y
)
)
_{k}\left(P_{k}(Y)\right)
k(Pk(Y))
即概率最大的那个类即为分类器
{
∣
ψ
k
lazy
⟩
}
\left\{\left|\psi_{k}^{\text {lazy }}\right\rangle\right\}
{∣∣∣ψklazy ⟩} 给出的该图片的分类预测
这种非参数的方法可以给出不错的分类结果:MNIST
∼
97
%
\sim 97 \%
∼97%, fashion-MNIST
∼
85
%
\sim85 \%
∼85%
量子懒惰学习的表现虽然不及神经网络,但是超过了其它非参数学习方法, 以及SVM(调非常多的参数),朴素贝叶斯等方法(更多与SVM联系的讨论见PRB 101, 075135(2020))
3.监督/非监督张量网络机器学习
显然,
∣
ψ
⟩
|\boldsymbol{\psi}\rangle
∣ψ⟩ 的参数复杂度会随着特征个数
L
L
L指数上升,张量网络机器学习的中心思想之一就是将
∣
ψ
⟩
|\psi\rangle
∣ψ⟩用张量网络表示,从而使参数复杂度降低到多项式级。
注:lazy态同样指数复杂,但计算概率
P
(
X
)
P(X)
P(X) 的复杂度仅为多项式级
问题:如果我们想进一步提高精度,想要进行对 ∣ ψ ⟩ |\boldsymbol{\psi}\rangle ∣ψ⟩的优化,就需要将 ∣ ψ ⟩ |\boldsymbol{\psi}\rangle ∣ψ⟩ 写出来
在给定N个训练集样本 { X [ n ] } \left\{X^{[n]}\right\} {X[n]} 后,我们可以训练量子态,使其满足等概率假设 P ( X [ 1 ] ) = P ( X [ 2 ] ) = ⋯ , \boldsymbol{P}\left(\boldsymbol{X}^{[1]}\right)=\boldsymbol{P}\left(\boldsymbol{X}^{[2]}\right)=\cdots, P(X[1])=P(X[2])=⋯,这被称为MPS非监督机器学习。
3.1定义交叉熵损失函数:
f
(
{
X
[
n
]
}
)
=
−
1
N
∑
n
=
1
N
ln
P
(
X
[
n
]
)
=
−
1
N
∑
n
=
1
N
ln
(
∏
⊗
l
=
1
L
∣
⟨
x
l
[
n
]
∣
ψ
⟩
∣
)
2
f\left(\left\{X^{[n]}\right\}\right)=-\frac{1}{N} \sum_{n=1}^{N} \ln P\left(X^{[n]}\right)=-\frac{1}{N} \sum_{n=1}^{N} \ln \left(\prod_{\otimes l=1}^{L}\left|\left\langle x_{l}^{[n]} \mid \psi\right\rangle\right|\right)^{2}
f({X[n]})=−N1n=1∑NlnP(X[n])=−N1n=1∑Nln(⊗l=1∏L∣∣∣⟨xl[n]∣ψ⟩∣∣∣)2其中
N
N
N 为训练集样本个数。显然, 当且仅当
P
(
X
[
1
]
)
=
P
(
X
[
2
]
)
=
⋯
P\left(X^{[1]}\right)=P\left(X^{[2]}\right)=\cdots
P(X[1])=P(X[2])=⋯ 时,
f
f
f达到极小
MPS表示下损失函数如图:
3.2梯度更新方法
定义损失函数后, 我们可以通过梯度更新方法,更新张量网络中的张量, 使得损失函数降到极低,梯度更新公式为:
A
(
l
)
←
A
(
l
)
−
η
∂
f
∂
A
(
l
)
A^{(l)} \leftarrow A^{(l)}-\eta \frac{\partial f}{\partial A^{(l)}}
A(l)←A(l)−η∂A(l)∂f梯度步长
η
\eta
η 又被称为学习率。
使用MPS表示
∣
ψ
⟩
|\psi\rangle
∣ψ⟩ 时,可利用MPS中心正交形式,逐个更新各个张量, 步骤如下:
(1) 更新第
l
l
l个张量
A
(
l
)
A^{(l)}
A(l) 时,将正交中心移动至该张量;
(2) 利用张量网络的微分法则求出损失函数关于
A
(
l
)
A^{(l)}
A(l) 的梯度;
也可以考虑直接使用自动微分技术计算梯度, 以pytorch为例,设置MPS中张量的requires_grad=True, 即打开自动微分开关, 计算损失函数之后进行backward,所有打开了自动微分的张量的梯度, 将被自动计算出来。这样做可以同时更新所有张量,且不必保持MPS的中心正交形式。
同时, 可以使用torch.nn.optimizer进行学习了的自动优化,例如Adam, SGD等。
中心正则方式下逐个更新张量与自动微分同时更新所有张量相比,前者的精度与收致速度更好,这是由于前者的更新满足 “切空间更新原理",具体细节参考:PRE 102,012152(2020)