【独家】当量子计算遇上神经网络与深度学习,QNN初探( Quantum Neural Networks),David 9的量子计算系列#1

曾经的存在主义与结构主义的争论,在量子世界中似乎用概率和大量抽样完成了和解 — David 9

上世纪60年代哲学界有一场关于存在主义结构主义的争论:存在主义认为一个人的发展是由“自由意识”和欲望主导的; 结构主义认为占主导的其实是社会中的经济、政治、伦理、宗教等结构性因素,人只是巨大结构中的一部分。

究竟是什么塑造了一个人也许难以确定。而对于量子世界,一个qubit(量子比特)的状态,不仅受到量子系统的磁场影响,qubit本身也有自身状态的变化概率和扰动。我们一会儿可以看到,量子系统的输出,即那个qubit的最终观测状态,是用概率和大量抽样判定的:

在细讲QNN前(量子神经网络其实是一个量子系统),David 9 有必要介绍一下量子计算本身的一些基础知识 。

首先,量子计算与传统计算机的不同,可从qubit(量子比特)说起,我们知道与电子计算机非“0”“1”相比,qubit的状态可能同时介于“0”和“1”之间

即所谓的“薛定谔的猫”的叠加态(superposition):

\(\frac{1} {\sqrt{2}}\)(|0>+|1>) (在量子物理中符号|x>表示状态x)

你们可能会问David,为什么状态系数是 1/\(\sqrt{2}\) ? 这是量子物理中的一个约定(规范化),即平方和等于1

 α^2+β^2=1

其中αβ就是状态的系数,是不是让你联想到圆形几何 ?

是的,在量子物理中可以把qubit想象成粒子球体(叠加或非叠加态):

三维世界中qubit的自旋状态非常灵活,可以上自旋(|0>),可以下自旋(|1>),可以像地球一样斜着自旋

来自:http://www.dudamath.com/earthOrbit.html

当然也可以叠加态自旋(\(\frac{1} {\sqrt{2}}\)(|0>+|1>) )

有了这么多种qubit状态,从根本上导致量子计算的信息量级比传统计算机大的多。

传统的2个bit位的计算机只能编码4种状态:00, 01, 10, 11 ,因为它只有2个位的自由度,所以n个bit位能编码的信息只有2^n (即\(2^n\))

而如果一个量子计算机有2个qubit,传统计算机的00, 01, 10, 11这些状态就可以同时出现这4个状态本身变为4个自由度

这就导致它能编码2^4=16种状态 ,即我们需要同时确定00, 01, 10, 11四个状态各自的出现概率,才能得到这个系统状态的联合概率。所以n个qubit能编码的信息有2^(2^n) (即\(2^{2^n}\))

这样的计算量级,使得2018年google的72个qubit量子计算机就可以称霸业界。感兴趣可以计算一下2^(2^72) (即\(2^{2^{72}}\))是一个多么庞大的数字。但是要保持稳定的量子系统,需要苛刻环境和极低的温度(-273摄氏度非常接近绝对零度):

有了以上这些基本知识,跟着David 9再在来看Google的这篇QNN设计的论文,就能更好理解量子计算是如何与深度学习(神经网络)结合的了。

首先看基本QNN架构:

输入输出和一般的神经网络(深度学习)相似。唯一区别是QNN的输入|ψ, 1>是n+1位qubit的状态(这个状态是事先根据输入样本编码准备的,其中n是样本,1是输出qubit的占位)。而输出是经过一系列U(θ) 变换最终得到的一个qubit在三维中Y轴的观察Yn+1

为了容错并得到可靠输出,Yn+1 需要经过多次观测得到0或1的输出“label”(当然,一个qubit状态很少正好上自旋,而是一个求约的概率估计)

接下来看U(θ)ULL) 这些计算操作是什么?其中 θ 即传统神经网络中的待训练的参数(神经网络中的权重) 。而对于U(即上图中的一个个小方块),和传统计算机的计算门(“与或”门,“或”“否”门)类似,量子计算中,常用的是线性操作的unitary归一门(unitary operations)。可以把他想象成一个线性矩阵,它有一个很好的性质:通过unitary转换之后,两组qubit状态的内积值不变

即如果两组状态的内积用<Φ|Ψ> 表示,即:

那么:

即经过转换后,内积值不变。(其中U+号表示U矩阵的共轭矩阵

内积值不变不仅可以帮助我们之前提到的归一化约定: α^2+β^2=1 。而且当我们在QNN中对于θ 求梯度更新时,梯度不会太大,天然地防止了传统神经网络中的“梯度爆炸”问题。事实上,QNN的loss函数和一般的神经网络类似:

其中z是样本编码,l(z) 是真实样本的label,

是预测并观测的样本label。

这样,QNN通过不断对最后一个qubit的Yn+1 的观测,与真实样本label比较,得到一个修正值,修正神经网络中的θ 参数,并且根据θ 参数调整每个unitary归一门操作 ,不断进行迭代并更新每个unitary归一门 ,直到QNN每次预测的Yn+1 与真实样本的label一致。

另外,传统深度学习的成功更多地是归功于引入非线性的激活函数(Tanh, ReLu, softmax), 那么量子神经网络QNN如何引入非线性的呢 ?其实答案在架构图中就可以找到:

如上图,每一层U 门(unitary变换)的输入,都是由上一层U门通过不同连接组合连接的,这里的不同组合就是非线性的(虽然U门本身是线性的)。

最后,值得注意的是,对于整个量子神经网络的容错文章也做了探讨和考虑,在U门操作中加入了奇偶校验和reed-muller编码(一种比海明码高效的校验避编码)。具体David就不展开了。

对于文章不合理以及解释不当的地方希望大家积极指出。愿在新的一年Dvaid可以和大家继续探索量子计算世界,特别是结合机器学习与深度学习的领域,以及一些实际的量子计算项目与代码。

新年快乐 !!!

参考文献:

  1. Classification with Quantum Neural Networks on Near Term Processors
  2. https://www.quantiki.org/wiki/basic-concepts-quantum-computation
  3. https://github.com/adamisntdead/QuSimPy
  4. https://ai.googleblog.com/search/label/Quantum%20AI
  5. https://github.com/quantumlib/Cirq
  6. intriganod的量子计算youtube教学视频
  7. How Does a Quantum Computer Work? youtube教学视频
  8. 量子的unitary变换讲解视频
  9. https://www.slideshare.net/ProjectStudent/error-checking-and-correction-parity-bit-majority-voting-check-digit
  10. https://baike.baidu.com/item/reed-muller/407684
  11. https://en.wikipedia.org/wiki/Pauli_matrices

本文采用署名 – 非商业性使用 – 禁止演绎 3.0 中国大陆许可协议进行许可。著作权属于“David 9的博客”原创,如需转载,请联系微信: david9ml,或邮箱:yanchao727@gmail.com

或直接扫二维码:

发布者

David 9

David 9

邮箱:yanchao727@gmail.com 微信: david9ml

发表评论

电子邮件地址不会被公开。 必填项已用*标注