论文笔记(未完待续)—Training deep quantum neural networks

论文概论

  这片论文对比经典的神经网络,提出了一种全新的量子神经网络,包括量子感知器(类似经典深度学习中的神经元),神经网络的损失函数(以量子保真度模拟),还有基于前两者的量子神经网络前馈算法和反向传播算法。
  该网络的输入和输出都是量子态,论文里用生成的量子态对网络模型进行了测试,显示出了不错的网络性能。
  论文里对整个网络都进行了公式推导,需要一定的量子计算基础才能看懂。

公式分析

  以经典的深度学习网络为例,一个完整的网络需要定义好它的网络结构、配合上它的输入、输出,这就可以看作是他的前向传播了。
  然后是网络的损失函数,这可以用来评估网络的性能。
  然后是网络的关键,反向传播,或者说是更新网络中的参数矩阵的部分。这一部分在也是论文里 最复杂的地方了。

网络中的数据形式

网络的训练数据

  论文里的量子神经网络的训练数据是由量子比特的状态。
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,unitarystate1],,[stateN,unitarystateN]]
而其中的 state \text{state} state unitary ⋅ state \text{unitary} \cdot \text{state} unitarystate都是以右矢(列向量)的形式存在:
{ ∣ ϕ 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=ρin0...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=ξl1(...ξ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(Xl1)=trl1(Ul(s) (Xl10...0>l<0...0)) Ul(s))
其中:

  • s:表示的是循环次数
  • tr l − 1 \text{tr}_{l-1} trl1:是对当前的复合系统(量子计算里面的一个概念)进行求偏迹(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=1N<ϕ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 Ujleiϵ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,,βixtrrestMjl(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)(ρxl1(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((1l10...0>l<0...0) Ul(s) (1l1Xl) Ul(s))=trl((1l10...0>l<0...0) U1l(s)Umll(s) (1l1Xl) Umll(s)U1l(s))

代码实现

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值