HTN Paper

小程序

小程序的开发用了较长的时间,一方面经验不足,一方面是小程序的开发组件还有待完善。

  • 如何唯一标识用户(_openId)

    即使用户没有对小程序授权,小程序也可以获取每个访问用户的唯一标识(openId),可以通过云函数进行获取。

  • 如何表示矩阵、公式?

    小程序目前的渲染功能还比较有限,不支持Latex、MathType,并且这类公式在存储到数据库中时也十分的不方便,因此采用图片的形式,将题目保存成图片,随后读取出来,只要位置大小安排合理,能够正常显示。

  • 控件和布局可以用现成的框架Weui,Vant等等,开发起来事半功倍。当然要是能熟练运用flex布局,那也是妥妥的

Quantum-Classical Machine learning by Hybrid Tensor Networks

论文下载:这里

论文链接:点击这里

3.1 介绍

这篇文章结合传统张量网络深度学习提出了一种量子经典混合张量网络,能够有效的克服传统张量网络的缺点。这样的混合张量网络能够以深度学习的方式与BP、SGD等算法结合,并且论文中还提到,这样一种网络能够作为一种新型的深度学习算法框架,如下图

3.2 张量网络机器学习的局限性

同时文中还介绍了正则张量网络的一些限制,如下

  1. 表示能力

张量网络是一个线性函数并且遵从量子力学的叠加原理,这是量子多体系统中张量网络的固有特性,但同时也是建立强大的机器学习通用分类器的障碍,所以在处理时一般都通过非线性函数映射成到Hilbert空间,因此特征映射函数是张量网络机器学习的一个关键点(类比SVM)。张量网络机器学习TTN需要比经典模型(CNN、FCN等)更多的参数,而文中的量子经典混合张量网络需要的参数比TTN还要少的多!参数的比较见下图

  1. 体系结构的可扩展

图(a)表示的是神经网络,可以看到输出神经元权重数目要大于输入神经元权重数(例如全连接层),这使得神经网络能够实现一对多的映射关系。相反图(b)和图©表示的张量网络,只是进行一对一的张量的收缩关系,因此对于单个张量,无法将输入数据映射到多组输出方向上,这一点就极大的限制了张量网络的可扩展性。

3.3 混合神经网络

为了解决张量网络的局限性,一个基本的想法就是通过将张量网络和神经网络结合起来,从而引入非线性。而训练HTN的方式则可以采用BP或者SGD算法,那么以BP算法为例,计算第i张量网络层的偏导数的公式如下。

 cost Ti= cost LmLmLm1L1TnTnTn1Ti+1Ti\frac{\partial \text { cost }}{\partial T_{i}}=\frac{\partial \text { cost }}{\partial L_{m}} \frac{\partial L_{m}}{\partial L_{m-1}} \ldots \frac{\partial L_{1}}{\partial T_{n}} \frac{\partial T_{n}}{\partial T_{n-1}} \ldots \frac{\partial T_{i+1}}{\partial T_{i}}

而张量网络中张量的收缩过程可以用如下公式表示:

Ti+1[k]=α1αpTi,α1[1]Ti,α2[2]Ti,αp[p]T_{i+1}^{[k]}=\sum_{\alpha_{1} \ldots \alpha_{p}} T_{i, \alpha_{1}}^{[1]} T_{i, \alpha_{2}}^{[2]} \ldots T_{i, \alpha_{p}}^{[p]}

其中表示i+1层的第k个张量,所以(2)式推导为:

Ti+1[k]Ti[j]=α1αpTi,α1[1]Ti,αj[j]Ti,αp[p]Ti[j]=α1αp}\{αj}Ti,α1[1]Ti,αj1[j1]Ti,αj+1[j+1]Ti,αp[p]\begin{aligned} \frac{\partial T_{i+1}^{[k]}}{\partial T_{i}[j]} &=\frac{\partial \sum_{\alpha_{1} \ldots \alpha_{p}} T_{i, \alpha_{1}}^{[1]} \ldots T_{i, \alpha_{j}}^{[j]} \ldots T_{i, \alpha_{p \mid}}^{[p]}}{\partial T_{i}[j]} \\ &=\sum_{\left.\alpha_{1} \ldots \alpha_{p}\right\} \backslash\left\{\alpha_{j}\right\}} T_{i, \alpha_{1}}^{[1]} \ldots T_{i, \alpha_{j-1}}^{[j-1]} T_{i, \alpha_{j+1}}^{[j+1]} \ldots T_{i, \alpha_{p}}^{[p]} \end{aligned}

其中表示第i层的第j个张量,随后用梯度下降更新张量

Ti=Tiη cost TiT_{i}^{\prime}=T_{i}-\eta \frac{\partial \text { cost }}{\partial T_{i}}

其中表示学习率,用这样的方式可以逐步更新HTN中的各个张量

3.4 量子态分类和量子分类自编码

分类的思路也比较容易理解,首先是将图片的像素映射成量子态,单个像素的映射如下

vs(x)=(d1s1)(cos(π2x))ds(sin(π2x))s1v_{s}(x)=\sqrt{\left(\begin{array}{l} d-1 \\ s-1 \end{array}\right)}\left(\cos \left(\frac{\pi}{2} x\right)\right)^{d-s}\left(\sin \left(\frac{\pi}{2} x\right)\right)^{s-1}

随后将像素表示成矩阵成绩态,如下

Φ=ϕ(x1)ϕ(x2)ϕ(xn)|\Phi\rangle=\left|\phi\left(x_{1}\right)\right\rangle \otimes\left|\phi\left(x_{2}\right)\right\rangle_{\cdots} \otimes\left|\phi\left(x_{n}\right)\right\rangle

将作为输入,与现成的张量网络进行收缩,将输入表示成低维的中间态,即对应如下的公式

I=ΨΦ|I\rangle=\langle\Psi \mid \Phi\rangle

那么中间态(也就是后面神经网络的输入)就可以表示为

c=IMIc=\langle I|M| I\rangle

其中M表示测量操作,随后通过神经网络层将输入分成对应的十个类别,训练过程如下图

量子分类器自编码就是将输入的量子态压缩成低维的中间态,将损失函数换位MSE,同时使用PSNR来对比图片压缩前后的差异,对MNIST数据的压缩如下所示。

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2015-2024 YuleZhang's Blog
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信