论文概论
这片论文对比经典的神经网络,提出了一种全新的量子神经网络,包括量子感知器(类似经典深度学习中的神经元),神经网络的损失函数(以量子保真度模拟),还有基于前两者的量子神经网络前馈算法和反向传播算法。
该网络的输入和输出都是量子态,论文里用生成的量子态对网络模型进行了测试,显示出了不错的网络性能。
论文里对整个网络都进行了公式推导,需要一定的量子计算基础才能看懂。
公式分析
以经典的深度学习网络为例,一个完整的网络需要定义好它的网络结构、配合上它的输入、输出,这就可以看作是他的前向传播了。
然后是网络的损失函数,这可以用来评估网络的性能。
然后是网络的关键,反向传播,或者说是更新网络中的参数矩阵的部分。这一部分在也是论文里 最复杂的地方了。
网络中的数据形式
网络的训练数据
论文里的量子神经网络的训练数据是由量子比特的状态。
t
r
a
i
n
i
n
g
D
a
t
a
=
[
[
state
1
,
unitary
⋅
state
1
]
,
…
,
[
state
N
,
unitary
⋅
state
N
]
]
trainingData = \big[ [\text{state}_1,\, \text{unitary} \cdot \text{state}_1], \dots , [\text{state}_N,\, \text{unitary} \cdot \text{state}_N] \big]
trainingData=[[state1,unitary⋅state1],…,[stateN,unitary⋅stateN]]
而其中的
state
\text{state}
state和
unitary
⋅
state
\text{unitary} \cdot \text{state}
unitary⋅state都是以右矢(列向量)的形式存在:
{
∣
ϕ
i
n
>
,
∣
ϕ
o
u
t
>
}
{ |{\phi^{in}}>,|{\phi^{out}}>}
{∣ϕin>,∣ϕout>}
网络的输入和输出
虽然网络的训练数据都是右矢的形式,但是网络的初始输入需要求出它对应的密度矩阵,也就是:
ρ
i
n
=
∣
ϕ
i
n
>
<
ϕ
i
n
∣
\rho^{in}=|{\phi^{in}}><{\phi^{in}}|
ρin=∣ϕin><ϕin∣
其中,
ρ
i
n
\rho^{in}
ρin就是网络的初始输入。然后:
X
i
n
=
ρ
i
n
⊗
∣
0...0
>
l
<
0...0
∣
X^{in}=\rho^{in}\otimes |0...0>_l<0...0|
Xin=ρin⊗∣0...0>l<0...0∣
ρ
l
=
ξ
l
−
1
(
.
.
.
ξ
3
(
ξ
2
(
ξ
1
(
X
i
n
)
)
)
)
\rho^{l}=\xi^{l-1}(...\xi^3(\xi^2(\xi^1(X^{in}))))
ρl=ξl−1(...ξ3(ξ2(ξ1(Xin))))
公式里的
ρ
l
\rho^{l}
ρl即是每层的输出,也是对应的下一层的输入。一直到网络的最后输出
ρ
o
u
t
\rho^{out}
ρout。
网络的前向传播
网络的整个前向传播,就在
ξ
l
\xi^l
ξl中,其中
l
l
l是指网络第
l
l
l层的操作,整个
ξ
\xi
ξ的操作就是:
ξ
s
l
(
X
l
−
1
)
=
tr
l
−
1
(
U
l
(
s
)
(
X
l
−
1
⊗
∣
0...0
>
l
<
0...0
∣
)
)
U
l
(
s
)
†
)
\xi_s^l(X^{l-1}) = \text{tr}_{l-1}\bigg( U^l(s) \ \big( X^{l-1} \otimes |0...0>_l<0...0| \big)) \ U^l(s)^{\dag} \bigg)
ξsl(Xl−1)=trl−1(Ul(s) (Xl−1⊗∣0...0>l<0...0∣)) Ul(s)†)
其中:
- s:表示的是循环次数
- tr l − 1 \text{tr}_{l-1} trl−1:是对当前的复合系统(量子计算里面的一个概念)进行求偏迹(partial trace)操作
- U l = U m l l . . . U 1 l \ U^l=U^l_{ml}...U^l_{1} Ul=Umll...U1l;代表了当前第 l l l层的所有量子神经元。其中 m l ml ml是当前 l l l层的量子神经元个数
- U l ( s ) † \ U^l(s)^{\dag} Ul(s)†是 U l \ U^l Ul的厄米特共轭矩阵。将一矩阵A的行与列互换,并取各矩阵元素的共轭复数,得一新矩阵,称为厄米特共轭
- ∣ 0...0 > l < 0...0 ∣ |0...0>_l<0...0| ∣0...0>l<0...0∣是一个只有第一行第一列的元素为1,其余元素全为0的矩阵。
网络的损失函数
网络的损失函数是以量子保真度定义的,而且是用的对量子纯态的保真度计算。
C
(
s
)
=
1
N
∑
x
=
1
N
<
ϕ
x
o
u
t
∣
ρ
x
o
u
t
(
s
)
∣
ϕ
x
o
u
t
>
C(s) = \frac{1}{N} \sum_{x = 1}^N<\phi_x^{out}|\rho_x^{out}(s)|\phi_x^{out}>
C(s)=N1x=1∑N<ϕxout∣ρxout(s)∣ϕxout>
其中
N
N
N是训练数据的数目。
网络的反向传播
网络的反向传播就是更新网络的参数矩阵的过程:
U
j
l
→
e
i
ϵ
K
j
l
U
j
l
U^l_j\rightarrow e^{i\epsilon K^l_j}U^l_j
Ujl→eiϵKjlUjl
其中:
- i i i:暂时我也没有弄明白
-
ϵ
\epsilon
ϵ:类比经典的深度神经网络,是更新的步长
而这里的关键,就是如何计算 K j l K^l_j Kjl:
K j l ( s ) = 2 n a 1 , … , β i 2 N λ ∑ x tr rest M j l ( s ) K_j^l(s) = \frac{2^{n_{a_1, \dots, \beta}} \, i}{2 N \lambda} \sum_x \text{tr}_\text{rest} M_j^l(s) Kjl(s)=2Nλ2na1,…,βix∑trrestMjl(s)
M j l ( s ) = [ A j l ( s ) , B j l ( s ) ] M_j^l(s) = \big[A_j^l(s), B_j^l(s) \big] Mjl(s)=[Ajl(s),Bjl(s)]
A j l ( s ) = U j l ( s ) … U 1 l ( s ) ( ρ x l − 1 ( s ) ⊗ ∣ 0...0 > l < 0...0 ∣ ) U 1 l ( s ) † … U j l ( s ) † A_j^l(s)= U_j^l(s) \dots U_1^l(s) \, \big( \rho_x^{l-1}(s) \otimes|0...0>_l<0...0| \ \big) \, U_1^l(s)^{\dag} \dots U_j^l(s)^{\dag} Ajl(s)=Ujl(s)…U1l(s)(ρxl−1(s)⊗∣0...0>l<0...0∣ )U1l(s)†…Ujl(s)†
B j l ( s ) = U j + 1 l ( s ) † … U m l l ( s ) † ( 1 l ⊗ σ x l ( s ) ) U m l l ( s ) … U j + 1 l ( s ) B_j^l(s) = U_{j+1}^l(s)^{\dag} \dots U_{m_l}^l(s)^{\dag} \, \big( \mathbb{1}_l \otimes \sigma_x^l(s) \big) \, U_{m_l}^l(s) \dots U_{j+1}^l(s) Bjl(s)=Uj+1l(s)†…Umll(s)†(1l⊗σxl(s))Umll(s)…Uj+1l(s)
σ x l ( s ) = F s l + 1 ( … F s o u t ( ∣ ϕ x o u t > < ϕ x o u t ∣ ) … ) \sigma_x^l(s) = \mathcal{F}_s^{l+1} \big( \dots \mathcal{F}_s^{out} \big( |\phi_x^{out}><\phi_x^{out}| \big) \dots \big) σxl(s)=Fsl+1(…Fsout(∣ϕxout><ϕxout∣)…)
F s l ( X l ) = tr l ( ( 1 l − 1 ⊗ ∣ 0...0 > l < 0...0 ∣ ) U l ( s ) † ( 1 l − 1 ⊗ X l ) U l ( s ) ) = tr l ( ( 1 l − 1 ⊗ ∥ 0...0 > l < 0...0 ∣ ) U 1 l ( s ) † … U m l l ( s ) † ( 1 l − 1 ⊗ X l ) U m l l ( s ) … U 1 l ( s ) ) \mathcal{F}_s^l(X^{l}) = \text{tr}_{l}\bigg( \big( \mathbb{1}_{l-1} \otimes |0...0>_l<0...0| \big) \ U^{l}(s)^{\dag} \ \big( \mathbb{1}_{l-1} \otimes X^l \big) \ U^l(s) \bigg) \\ = \text{tr}_{l}\bigg( \big( \mathbb{1}_{l-1} \otimes \|0...0>_l<0...0| \big) \ U_1^l(s)^{\dag} \dots U_{m_l}^l(s)^{\dag} \ \big( \mathbb{1}_{l-1} \otimes X^l \big) \ U_{m_l}^l(s) \dots U_1^l(s) \bigg) Fsl(Xl)=trl((1l−1⊗∣0...0>l<0...0∣) Ul(s)† (1l−1⊗Xl) Ul(s))=trl((1l−1⊗∥0...0>l<0...0∣) U1l(s)†…Umll(s)† (1l−1⊗Xl) Umll(s)…U1l(s))