五、Tensor-train分解
1. 量子态与量子算符
我们知道,量子的状态用态矢 ∣ φ ⟩ |\varphi\rangle ∣φ⟩ 来表示,可以表示为基态的线性组合的系数构成的列向量,算符表示对态矢的操作,可以通过矩阵来表示。
给定基矢,确定量子态与算子的矩阵表示后,相关的计算变为向量与矩阵的运算。对量子态做的某种操作可以转换为矩阵表示的算子乘以向量表示的态矢。
矩阵和向量的乘积又可以表示为指标收缩的形式,我们可以用指标收缩的式子来表示,如算符
σ
\sigma
σ 作用于态矢
φ
\varphi
φ ,我们可以表示为:
σ
φ
⇔
∑
j
σ
i
j
φ
j
\sigma \varphi \Leftrightarrow \sum_j\sigma_{ij}\varphi_j
σφ⇔j∑σijφj
对于两态的量子系统,他的基矢为四个四维向量,可以定义为:
∣
0
⟩
∣
0
⟩
,
∣
0
⟩
∣
1
⟩
,
∣
1
⟩
∣
0
⟩
,
∣
1
⟩
∣
1
⟩
|0\rangle|0\rangle,|0\rangle|1\rangle,|1\rangle|0\rangle,|1\rangle|1\rangle
∣0⟩∣0⟩,∣0⟩∣1⟩,∣1⟩∣0⟩,∣1⟩∣1⟩
任意的二自旋量子态可以写成基矢的线性叠加:
∣
φ
⟩
=
φ
00
∣
00
⟩
+
φ
01
∣
0
⟩
∣
1
⟩
+
φ
10
∣
1
⟩
∣
0
⟩
+
φ
11
∣
1
⟩
∣
1
⟩
|\varphi\rangle=\varphi_{00}|00\rangle+\varphi_{01}|0\rangle|1\rangle+\varphi_{10}|1\rangle|0\rangle+\varphi_{11}|1\rangle|1\rangle
∣φ⟩=φ00∣00⟩+φ01∣0⟩∣1⟩+φ10∣1⟩∣0⟩+φ11∣1⟩∣1⟩
二自旋量子态 ∣ φ ⟩ |\varphi\rangle ∣φ⟩ 的系数可以看作是 4 × 1 4\times 1 4×1 的向量 [ φ 00 φ 01 φ 10 φ 11 ] T \begin{bmatrix}\varphi_{00} & \varphi_{01} & \varphi_{10} & \varphi_{11} \end{bmatrix}^T [φ00φ01φ10φ11]T ,同时我们可以将该向量表示为 2 × 2 2\times2 2×2 的矩阵 [ φ 00 φ 01 φ 10 φ 11 ] \begin{bmatrix}\varphi_{00} & \varphi_{01} \\ \varphi_{10} & \varphi_{11} \end{bmatrix} [φ00φ10φ01φ11] ,即二阶张量。
对于 N 自旋体系,其量子态的系数可以表示为
2
N
2^N
2N 维的向量,同时我们还可以使用
N
N
N 阶张量来表示该量子态基态的系数,其每个指标的维数为 2 ,就像上面用二维张量表示二自旋量子态一样。同时对于
2
N
2^N
2N 维的向量,其算符应该是一个
2
N
×
2
N
2^N \times 2^N
2N×2N 的矩阵,我们可以将该矩阵表示为
2
N
2N
2N 阶的张量。我们可以用如下的图形来表示:
这里我们定义只作用在一个量子上的算符为 单体算符 。单体算符可以作用在单独一个量子构成的量子体系,它是一个二阶张量,如下图所示:
同时我们可以将单体算符作用在多个量子组成的整体中的某一个量子,以三量子双态系统
∣
φ
⟩
|\varphi\rangle
∣φ⟩ 来说,如果我们定义只作用在第一个量子上的算子
O
^
(
1
)
\hat{O}^{(1)}
O^(1) ,它是一个
2
×
2
2\times2
2×2 的矩阵,但是三量子系统的基态系数是一个
2
×
2
×
2
2\times2\times2
2×2×2 的向量,其对应的算符为
2
3
×
2
3
2^3\times2^3
23×23 的矩阵,因此
O
^
(
1
)
\hat{O}^{(1)}
O^(1) 作用到
∣
φ
⟩
|\varphi\rangle
∣φ⟩ 上的公式可以写为:
∣
φ
′
⟩
=
O
^
(
1
)
∣
φ
⟩
=
O
^
(
1
)
⊗
I
^
(
2
)
⊗
I
^
(
3
)
∣
φ
⟩
|\varphi^{'}\rangle =\hat{O}^{(1)}|\varphi\rangle =\hat{O}^{(1)} \otimes \hat{I}^{(2)} \otimes \hat{I}^{(3)} |\varphi\rangle
∣φ′⟩=O^(1)∣φ⟩=O^(1)⊗I^(2)⊗I^(3)∣φ⟩
其中 I ^ ( n ) \hat{I}^{(n)} I^(n) 为作用在第 n n n 个量子上的单位算符,是一个单位矩阵。
O ^ ( 1 ) ⊗ I ^ ( 2 ) ⊗ I ^ ( 3 ) \hat{O}^{(1)} \otimes \hat{I}^{(2)} \otimes \hat{I}^{(3)} O^(1)⊗I^(2)⊗I^(3) 是一个 2 3 × 2 3 2^3\times 2^3 23×23 的矩阵,可以以指标收缩的形式作用到维数为 2 3 2^3 23 的量子态向量 ∣ φ ⟩ |\varphi\rangle ∣φ⟩ 上面。
实际上我们不用按上述方式进行
2
N
×
2
N
2^N \times 2^N
2N×2N 维矩阵与
2
N
2^N
2N 维向量进行相乘的运算,而是做如下的计算:设
∣
φ
⟩
|\varphi\rangle
∣φ⟩ 与
∣
φ
′
⟩
|\varphi'\rangle
∣φ′⟩ 的系数分别为三阶张量
φ
i
j
k
\varphi_{ijk}
φijk 和
φ
i
′
j
k
′
\varphi_{i'jk}^{'}
φi′jk′ ,设
O
^
(
1
)
\hat{O}^{(1)}
O^(1) 的系数为二阶矩阵
O
i
i
′
(
1
)
O_{ii'}^{(1)}
Oii′(1) ,则有如下公式:
φ
i
′
j
k
′
=
∑
i
O
i
i
′
(
1
)
φ
i
j
k
\varphi_{i'jk}^{'}=\sum_i O_{ii'}^{(1)} \varphi_{ijk}
φi′jk′=i∑Oii′(1)φijk
上式的意义为,将作用在第 n n n 个量子上的单体算符 O ^ ( n ) \hat{O}^{(n)} O^(n) 作用在多量子组成的整体时,只需要将算符与第 n n n 个指标进行收缩,对应的图形表示为:
虽然我们只对第 n n n 个指标进行了收缩,但实际上,在进行缩并运算时张量的所有元素都可能被改变了,并非只有第 n n n 个指标对应的张量元发生了改变。
相似的,多体算符 定义为对多个量子操作的运算,当该算符可以写成多个定义在不同空间的单体算符的直积时,如果我们将该多体算符作用到多体态上,只需要将这几个单体算符作用到对应的量子上即可。由于单体算符定义在不同空间,算符之间相互对易(可以相互交换顺序而结果不变,即 O ^ ( m ) O ^ ( n ) = O ^ ( n ) O ^ ( m ) \hat{O}^{(m)}\hat{O}^{(n)} = \hat{O}^{(n)}\hat{O}^{(m)} O^(m)O^(n)=O^(n)O^(m)),故作用的顺序不影响结果。
如,将定义在第一个和第二个量子空间中的算符
O
^
=
O
^
(
1
)
⊗
O
^
(
2
)
\hat{O}=\hat{O}^{(1)}\otimes\hat{O}^{(2)}
O^=O^(1)⊗O^(2) 作用到三个量子组成的多体量子态
∣
φ
⟩
|\varphi\rangle
∣φ⟩ 上,得到的量子态
∣
φ
′
⟩
|\varphi'\rangle
∣φ′⟩ ,相应的系数满足:
φ
i
′
j
′
k
′
=
∑
i
j
O
i
′
i
(
1
)
O
j
′
j
(
2
)
φ
i
j
k
\varphi'_{i'j'k}=\sum_{ij}O_{i'i}^{(1)}O_{j'j}^{(2)}\varphi_{ijk}
φi′j′k′=ij∑Oi′i(1)Oj′j(2)φijk
我们可以用图形表示为:
如果多体算符不能分解为多个单体算符直积的形式,我们可以根据分解的情况进行收缩,如下图所示:
如果有不同的算符作用在相同的量子上,我们可以从上到下依次将各个算符作用到对应的量子上,如下所示:
如果量子算符为幺正算符,那么这些算符构成一个作用在多体态上的大的幺正操作,称之为 量子线路 。在经典计算机中,将逻辑门作用于电路时我们可以改变电路的状态,从而实现对数据的各种操作。在量子计算机中,对量子的各种操作由幺正算符来实现,其功能类似于经典计算机中的逻辑门,张量网络为量子线路提供了一个给定基底下的数学表示方法。
2. Tensor-train分解
当多量子系统包含的量子个数 N N N 增加时,表示量子状态的向量的维数随 N N N 呈指数增加,对于多量子组成的状态,我们将无法用经典计算机实现对其进行各种计算,甚至对它的表示都变得特别困难,该问题称为量子指数墙。
我们考虑如下的一个问题,对于特别大的张量我们对它的处理会变得特别困难,那么我们能不能把大张量分解为若干个小的张量,之后我们通过对小张量的处理间接实现对大张量的处理。
这里我们引入张量的 tensor-train 分解,其表述为将一个
N
N
N 阶的张量分解为
N
N
N 个二阶或三阶张量的缩并形式,即:
T
s
1
s
2
⋯
s
N
=
∑
a
1
a
2
…
a
N
−
1
A
s
1
a
1
(
1
)
A
s
2
a
1
a
2
(
2
)
⋯
A
s
N
−
1
a
N
−
2
a
N
−
1
(
N
−
1
)
A
s
N
a
N
−
1
(
N
)
=
A
s
1
:
(
1
)
A
s
2
:
:
(
2
)
⋯
A
s
N
−
1
:
:
(
N
−
1
)
A
s
N
:
(
N
)
T
T_{s_{1} s_{2} \cdots s_{N}}= \sum_{a_{1} a_{2} \ldots a_{N-1}} A_{s_{1} a_{1}}^{(1)} A_{s_{2} a_{1} a_{2}}^{(2)} \cdots A_{s_{N-1} a_{N-2} a_{N-1}}^{(N-1)} A_{s_{N}a_{N-1}}^{(N)} =A_{s_{1}:}^{(1)} A_{s_2::}^{(2)} \cdots A_{s_{N-1}::}^{(N-1)} A_{s_N:}^{(N) \mathrm{T}}
Ts1s2⋯sN=a1a2…aN−1∑As1a1(1)As2a1a2(2)⋯AsN−1aN−2aN−1(N−1)AsNaN−1(N)=As1:(1)As2::(2)⋯AsN−1::(N−1)AsN:(N)T
我们可以用四阶张量来表示 TT 分解为:
从图示我们可以看出,TT 分解就是将一个大的张量分解为若干个二阶张量和三阶张量的缩并,其中我们称 a n a_n an 为辅助指标, s n s_n sn 称为自由指标,这几个二阶张量和三阶张量缩并后,将辅助指标缩并掉,只保留自由指标。
TT 分解可以通过 N − 1 N-1 N−1 次的奇异值分解或 QR 分解来实现,奇异值分解是将一个 m × n m \times n m×n 的矩阵 A A A ,分解为 A = U Σ V T A = U\Sigma V^T A=UΣVT 的形式,前面我们已经介绍过了。
下面我们来看一下 QR 分解,其定义为给定一个
d
1
×
d
2
d_1\times d_2
d1×d2 的矩阵
M
M
M ,将其分解为
M
=
Q
R
M=QR
M=QR
的形式,其中 Q Q Q 为 d 1 × d 1 d_1\times d_1 d1×d1 的酉矩阵,满足 Q Q H = Q H Q = I QQ^H = Q^HQ=I QQH=QHQ=I , R R R 为 d 1 × d 2 d_1 \times d_2 d1×d2 的上三角矩阵。
对于一个四阶张量的 TT 分解,我们可以用图形表示为如下:
其具体步骤为:
首先我们将一个
N
N
N 阶张量矩阵化得到一个矩阵,对该矩阵进行奇异值分解,得到
A
=
U
Σ
V
T
A = U\Sigma V^T
A=UΣVT ,这时我们将分解后的结果视为两部分,分别为
U
U
U 和
Σ
V
T
\Sigma V^T
ΣVT ,我们把
Σ
V
T
\Sigma V^T
ΣVT 从矩阵重新还原成张量的形式,这个分解的结果可以表示为如下图示:
由于奇异值分解得到的
U
U
U 和
V
V
V都是正交归一的,即有
U
U
T
=
I
UU^T=I
UUT=I 和
V
V
T
=
I
VV^T=I
VVT=I ,我们用箭头来表示一个矩阵的正交性,而张量的图示中,每个指标由一个腿表示,所以上面的
U
U
U 上的内向箭头表示该指标和其共轭张量收缩后得到单位阵,箭头的含义表示如下:
对于多个内向箭头的张量,它表示将多个内向箭头进行缩并后是单位阵,如下所示:
之后,我们再继续进行奇异值分解,我们将后面的张量再矩阵化,矩阵的两个维度分别为下面两个虚线框包含指标的乘积。
之后我们再进行奇异值分解,把分解后得到的三个个矩阵的乘积分为两部分,再恢复成两个张量。得到如下的结果:
依次类推,我们便可以得到最终的结果:
下面我们引入 TT 秩 的概念:从上面的讲述我们可以知道,在连续对张量进行奇异值分解时,每次分解都会得到一组奇异值,而非零奇异值的个数为被分解矩阵的秩,我们在进行 TT 分解过程中进行了 N − 1 N-1 N−1 次的奇异值分解,那么我们可以得到 N − 1 N-1 N−1 组奇异值,每组奇异值中非零奇异值的个数组成了 N − 1 N-1 N−1 个数,称为 TT 秩,所以 TT 秩是一个 N − 1 N-1 N−1 维的数列,而且它就是各个辅助指标的维数组成的数列。
有了 TT 秩的概念后,我们可以引入最优 TT 低秩近似 的问题了。给定一个张量
T
T
T ,进行 TT 分解使得:
min
{
dim
(
a
n
)
≤
χ
}
∣
T
s
1
s
2
⋯
s
N
−
∑
a
1
a
2
…
a
N
−
1
A
s
1
a
1
(
1
)
A
s
2
a
1
a
2
(
2
)
⋯
A
s
N
−
1
a
N
−
2
a
N
−
1
(
N
−
1
)
A
s
N
a
N
−
1
(
N
)
∣
\min_{\{ \dim(a_n) \leq \chi \}} \left| T_{s_1s_2\cdots s_N} - \sum_{a_{1} a_{2} \ldots a_{N-1}} A_{s_{1} a_{1}}^{(1)} A_{s_{2} a_{1} a_{2}}^{(2)} \cdots A_{s_{N-1} a_{N-2} a_{N-1}}^{(N-1)} A_{s_{N}a_{N-1}}^{(N)} \right|
{dim(an)≤χ}min∣∣∣∣∣Ts1s2⋯sN−a1a2…aN−1∑As1a1(1)As2a1a2(2)⋯AsN−1aN−2aN−1(N−1)AsNaN−1(N)∣∣∣∣∣
我们称
T
~
=
∑
a
1
a
2
…
a
N
−
1
A
s
1
a
1
(
1
)
A
s
2
a
1
a
2
(
2
)
⋯
A
s
N
−
1
a
N
−
2
a
N
−
1
(
N
−
1
)
A
s
N
a
N
−
1
(
N
)
\widetilde{T}= \sum_{a_{1} a_{2} \ldots a_{N-1}} A_{s_{1} a_{1}}^{(1)} A_{s_{2} a_{1} a_{2}}^{(2)} \cdots A_{s_{N-1} a_{N-2} a_{N-1}}^{(N-1)} A_{s_{N}a_{N-1}}^{(N)}
T
=a1a2…aN−1∑As1a1(1)As2a1a2(2)⋯AsN−1aN−2aN−1(N−1)AsNaN−1(N)
为 T T T 的最优低秩近似,其中的 dim ( a n ) ≤ χ \dim(a_n) \leq \chi dim(an)≤χ 表示我们在每次奇异值分解时保留的奇异值和奇异向量的个数不超过 χ \chi χ 个,保留的奇异向量的个数也就是辅助指标维数,其上限为 χ \chi χ ,该上限也被称为 截断维数 或 裁剪维数。最优 TT 低秩近似也就是让 TT 分解的每个辅助指标都变小,找到一个尽可能接近 T T T 的张量 T ~ \widetilde{T} T 。
不做任何近似的 TT 分解,在不亏秩的情况下不能解决 “指数墙” 的问题,因为在分解过程中,辅助指标的维数会随着分解的次数呈指数上升。