什么是张量网络

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是张量网络相关的知识,希望对你有一定的参考价值。

作为我的研究方向,我简单地介绍一下张量网络是什么,以及它有什么应用。
1. 张量(tensor)
张量网络中的张量,和微分几何和GR中的张量场并不完全相同。在微分几何中,一点处的张量是基于流形上该点的切空间的。一个(m,n)型张量是指将m个协变矢量(余切矢量,cotangent vector)和n个逆变矢量(切矢量,tangent vector)映射到数域上的多重线性映射。取定一组基,这个多重线性映射可以用一系列分量表示出来。这些分量当然和基的选取有关。在张量网络中,我们通常不会去作坐标变换,因此,任何一个具有n个指标的分量集合就称为一个张量。例如,christoffel符号在几何意义上不构成张量,但它是可以出现在张量网络中的。
2.量子力学里的张量
量子力学有一个基本假设,复合系统的Hilbert空间是其子系统Hilbert空间的张量积。因此,多体波函数天然就是一个张量。对于n体系统来说,它的波函数是一个n阶张量。当然,由于维数相同的线性空间是同构的,所以也可以把波函数看成一个矢量,这个矢量的维数是d^n。n体系统的哈密顿量是d^n维的矩阵,当然也可以看成一个(n,n)型的张量。单体算子可以看成2阶张量。两体算子可以看成d^2维的二阶张量,也可以看成维数为d的(2,2)型(四阶)张量。
量子力学中所有可观测量的平均值都可以写成内积,从矩阵的观点看这是二次型。如果波函数是一个张量的形式,算符也可以写成局域张量的求和,那么算符的平均值也可以看作这些张量的缩并的和。
3. 张量网络 (tensor network)
张量的基本运算包括线性运算、张量积、转置和缩并。当涉及的指标较少,缩并关系简单时我们常用抽象指标记号去作解析运算,例如在GR里。但是,当张量数目多,指标缩并关系复杂时,我们最好能用图形表示它们的缩并关系,这就是张量网络。在张量网络中,n阶张量由带n条外腿的圆圈(或方形、三角形等)表示,每条外腿代表一个指标。如果某两个张量的外腿连成一条线,就代表这两个张量的对应指标缩并。整个图形由张量、内腿(参与缩并的指标)和外腿(不参与缩并的指标)构成。整个图形所表示的张量的阶数就是其外腿的个数。例如,如果一个张量网络用来表示n体系统的波函数,那么它就有n条外腿。
4. why tensor networks?
对于量子多体系统,其一般波函数有d^n个分量,当粒子数较大时,这个数目是天文数字,电脑不可以存储。好在我们知道量子系统的基态一般具有两个性质:1. area law 2. exponential/algebraic decay of correlations.
首先,任何多体量子系统都可以选取其中L个连续的粒子构成子系统,而子系统与其他部分是有纠缠的。这个纠缠由子系统的约化密度矩阵的本征值刻画。把这些本征值按一定方式组合成一个数,就是纠缠熵(entanglement entropy),记为S。它刻画了这个长为L的子系统与其他部分的纠缠大小。对于一维系统来说,如果这个系统是gapped,那么它的基态具有如下性质:S有和L无关的上界;如果它是gapless,那么它的基态具有如下性质:S的上界和log L成正比。对于N维系统而言,取子系统为一个N维超正方体,边长为L,那么纠缠熵S的上界与这个正方体的表面积成正比,或者对于gapless系统而言,可以有log L的修正。以上只是对基态和低激发态说的,而凝聚态物理中我们一般也只关心基态和低激发态。对于Hilbert空间中的一般态,其纠缠熵符合volume law,要远远大于基态。
其次,统计物理表明,系统处在临界点(critical point)附近时,关联长度趋于无穷大,关联函数是按多项式递减的(例如L^(d-2+eta),eta是临界指数,称为反常维度);在系统为gapped的时候,关联函数是指数下降的(对应的临界指数称为dynamical critical exponent或者z)。
这些性质使得我们在选取系统的波函数时,不需要考虑大部分Hilbert空间的态,从而通过恰当的参数化,减少独立变量的个数。这种参数化是由tensor network描述的。换而言之,用tensor network表述的量子态能很好的符合系统基态的纠缠和关联性质,因此是很好的试验态。其独立参量个数一般只有O(n),甚至O(1)(当系统具有平移不变性时),这使得高效模拟成为可能。
5.MPS
矩阵乘积态(matrix product states,MPS)是最先被发现和使用的张量网络。它源于人们对密度矩阵重整化群(density matrix renormalization group,DMRG)的原理探究。DMRG是90年代White等人为了模拟量子多体系统提出的算法[1]。它被广泛使用,大获成功的同时,其算法的有效性却没有理论证明。同时,人们发现DMRG不能准确模拟gapless系统。直到00年代人们发现它本质上是使用MPS作为一维量子系统基态的试验态[2]。MPS的纠缠熵有上界,正好符合1维gapped系统的性质。因此在处理critical系统时就会出现一些问题,例如,只有短程行为是准确的(technically,这种现象被称为MPS引入了off-criticality,或者说引入了artifical correlation length)。现在,MPS被高效地用于无限大一维系统的基态和激发态的模拟中[3][4][5]。同时,对MPS取连续极限可以用它模拟量子场论的基态[6][19]。而笔者本人现在的工作是尽量实现用MPS模拟critical系统,实现对Conformal Field Theory的精确模拟。(这一工作已在会议中展示,文章in preparation)
6. PEPS
投影纠缠对态(projected entangled pair states,PEPS)是MPS在二维的拓展,它比MPS更难操纵,尽管获得了较大成功,但算法复杂度要比MPS高很多。二维系统有很多更有趣的物理性质,例如拓扑序、拓扑相变。PEPS可以用来研究这些性质。[7][8]
7.MERA
多尺度纠缠重整化试验态(multiscale entanglement renormalization ansatz,MERA)是一种一维量子系统基态的试验态。它具有log L的纠缠,符合一维临界系统的基态性质。而且MERA天然有尺度不变性(scale invariance),符合统计物理中对critical system的描述(critical point是重整化群流的不动点)[9][10]。MREA可以看成从直积态出发,按尺度逐层引入纠缠的过程。这一过程和holograhy的思想类似。MERA作为临界系统的试验态取得了极大成功,能够精确求解共形场论(conformal field theory,一种描述临界系统的场论),得到scaling operator的scaling dimension、conformal spin和operator product expansion [11]。并能构造具有正确fixed point的重整化群流[12][13]。高维的MERA也被发现并应用,例如2D MERA,branching MERA[14]。现在,MERA还被看成是实现AdS/CFT对偶的一种方式,成为一种全息对偶(holographic duality)的玩具模型[15][16]。MERA也被连续化为cMERA,因此可以用来模拟量子场论和共形场论[17][18]。
8.其他应用
除了模拟量子系统,tensor network还广泛运用于经典统计物理、量子化学和机器学习中。由于作者本人对其中的某些领域不熟悉,所以本文也止步于此。
9. 更新:最近的“张量网络与量子场论”会议上有很多非常精彩的进展。我将会稍后补充,敬请期待。
--Interested readers may want to refer to following literatures and references therein--
For general information, Arxiv: 1603.03039.
For specific details, please see below:
[1] S. R. White, Phys. Rev. Lett. 69, 2863 (1992).
[2] U. Schollwoeck, Annals of Physics 326, 96 (2011)
[3] G. Vidal, Phys. Rev. Lett. 91, 147902 (2003)
[4] G. Vidal, Phys. Rev. Lett. 98, 070201 (2007)
[5] J. Haegeman etal, Phys. Rev. B 88, 075133 (2013)
[6] J. Haegeman etal, Phys.Rev.Lett.104:190405,2010
[7] S. Yang etal, Phys. Rev. Lett. 114, 106803 (2015)
[8] N. Schuch, Phys. Rev. Lett. 111, 090501 (2013)
[9] K.G. Wilson, Rev. Mod. Phys. 47, 773 (1975)
[10] Scaling and Renormalization in Statistical Physics, J. Cardy (Cambridge
University Press, 1996)
[11] G. Vidal, Phys. Rev. Lett. 99, 220405 (2007), G. Vidal, Phys. Rev. Lett. 101, 110501 (2008).
[12] G. Evenbly, G. Vidal, Phys. Rev. Lett. 115, 180405 (2015)
[13] G. Evenbly, G. Vidal, Phys. Rev. Lett. 115, 200401 (2015)
[14] G. Evenbly, G. Vidal, Phys. Rev. B 89, 235113 (2014)
[15] B. Swingle, Phys. Rev. D 86, 065007 (2012)
[16] B. Czech etal, arXiv:1512.01548
[17] J. Haegeman etal, Phys. Rev. Lett. 110, 100402 (2013)
[18] Q, Hu, G.Vidal, arXiv:1703.04798
[19] M. Ganahl etal, arXiv:1611.03779
参考技术A 简单的说:张量概念是矢量概念和矩阵概念的推广,标量是零阶张量,矢量是一阶张量,矩阵(方阵)是二阶张量,而三阶张量则好比立体矩阵,更高阶的张量用图形无法表达.度量张量 维基百科,自由的百科全书 (重定向自量度张量) 黎曼几何的度量张量(在物理学上称度规张量)是二阶对称非退化张量用来衡量度量空间中的距离及角度.回

LSTM 网络张量流的输入

【中文标题】LSTM 网络张量流的输入【英文标题】:Input to LSTM network tensorflow 【发布时间】:2016-05-05 13:24:04 【问题描述】:

我有一个长度为 t (x0, ...,xt) 的时间序列,每个 xi 都是一个 d 维向量,即 xi=(x0i, x1i, ...., xdi)。因此我的输入 X 的形状为 [batch_size, d]

张量流 LSTM 的输入大小应为 [batchSize, hidden_​​size]。 我的问题是我应该如何将我的时间序列输入到 LSTM。我想到的一种可能的解决方案是增加大小为 [d,hidden_​​size] 的权重矩阵 W,并使用 X*W + B 输入 LSTM。

这是正确的还是我应该在网络上输入其他内容?

谢谢

【问题讨论】:

在讨论 X 时,您提到了 batch_size,但对于 LSTM,您提到了 batchSize。这些是一样的吗? 【参考方案1】:

你的直觉是正确的;您需要(以及您所描述的)是将输入向量转换为 LSTM 输入维度的嵌入。据我所知,实现这一目标的主要方法有 3 种。

您可以使用附加的权重矩阵 W 和偏置向量 b 手动执行此操作。 您可以使用linear() 函数from TensorFlow's rnn_cell.py library 自动创建权重矩阵和偏置向量。然后,当您通过 rnn_decoder() 函数 in Tensorflow's seq2seq.py library 或其他方式创建 LSTM 时,将该线性层的输出作为 LSTM 的输入。 或者您可以让 Tensorflow 创建此嵌入并将其自动连接到 LSTM 的输入,方法是通过同一 seq2seq 库第 141 行的embedding_rnn_decoder() 函数创建 LSTM。 (如果您在没有任何可选参数的情况下跟踪此函数的代码,您会发现它只是为输入以及 LSTM 创建一个线性嵌入层并将它们连接在一起。)

除非您出于某种原因需要访问您正在创建的各个组件,否则我建议您使用第三种方法来保持您的代码处于较高级别。

【讨论】:

第三种解决方案在这种情况下真的有效吗?您可以将 embedding_rnn_decoder() 用于稀疏但多维的输入张量吗?看起来该函数将查找给定一维整数或单热编码的嵌入,但不是一种仅使用权重矩阵更改输入向量维度的方法。 什么是最先进的方法或推荐的方法是什么?谢谢!

以上是关于什么是张量网络的主要内容,如果未能解决你的问题,请参考以下文章

Pytorch使用pytorch进行张量计算自动求导和神经网络构建

神经网络的数据表示——张量

神经网络与深度学习 pytorch入门——张量

LSTM 网络张量流的输入

Pytorch深度学习实战3-2:什么是张量?Tensor的创建与索引

如何在 Torch 的网络开头合并两个张量?