基于张量网络的机器学习(七)

时间:2024-03-20 21:14:13

  现在让我们先解决一下上一次博客中提出的问题:

  1. 斯密特分解时的系数矩阵中的元素是什么?怎么排列的?
      在对量子态作斯密特分解时,假如那个量子态的基态为L,每个基态的都为d维态矢,那么就会有dL种可能,即dL个系数,矩阵化的时候是矩阵化为一个d×dL-1的矩阵,至于怎么排列,按顺序丢进去就好了。
    我们再回顾一下前面的斯密特分解的这个式子,其实很具有迷惑性,这个量子态有D个基态,这里的基态和斯密特分解前的基态是不一样的,这里的α\alpha可以取D个值,所以应当是指D个纠缠谱的奇异值,并非进行了D-1次奇异值分解,斯密特分解实际只是求解MPS过程中的一步,这样的斯密特分解还要进行多少次要依照MPS的长度而定,比如如果说明MPS的长度为D,那么的确是要进行D-1次奇异值分解(斯密特分解)
    基于张量网络的机器学习(七)
  2. 有关MPS态绕过“指数墙”的问题?
      在问题一中可以知道,“指数墙”问题是因为一个量子态可以有dL种基态,也就是有这样一个指数级个数的参数,如果对一个量子态进行严格的MPS表示,假如MPS长度为L,最后得到的MPS态里面的每一个从左往右正交化的矩阵为:1×dd×d2,……,dL/2-1×dL/2dL/2×dL/2-1,……,d2×dd×1,而如果设定一个截断维数χ\chi,上述矩阵的维就不会指数增长,而是:1×dd×d2d2×χ\chi,……,χ\chi×χ\chi,……,χ\chi×d2d2×dd×1,这种截断和纠缠熵的面积定律有关,故而有效。
  3. 截断维数χ\chi是怎么确定的?
      截断维数χ\chi是预先设定好的。
  4. 一个高阶张量矩阵化后的元素怎么排列的?
      如果是一个三阶张量,在前面的学习中,要让它矩阵化,我们需要固定两个维度(阶),然后将其平铺,如果是一个四阶张量,我们依旧是固定其中两个维度然后平铺,依次类推,更高阶的张量也是如此,我们知道,张量可以理解为多维数组,因为多维数组才能更直观表示高阶张量。至于是怎么排列的,其实重要的是找到一个“原点”,之所以会提出这个问题,一方面可以复习一下前面学到的,另一方面则是看一下这样一个“原点”和第一个问题是否会有一定的联系。

  接下来开始本次博客的正题,逐块时间演化算法(TEBD)。

一.TEBD

TEBD

  TEBD是一种基于矩阵乘积态的、近似收缩张量网络的数值算法,其基本思想是从张量网络边界一行一行或一列一列地收缩张量网络,现在给定一个????×????的张量网络(内部有????×????个张量),如图:
基于张量网络的机器学习(七)
我们可以清晰看出内部张量的阶数,根据定义,我们可以把上面这个张量网络分为上半部分和下半部分,
基于张量网络的机器学习(七)
最下面的那一层相当于一个长度为????的MPS,可记为|φD0⟩ ,还可以看到,再往上两层的张量,我们可以把它们当做多体算符作用在|φD0⟩上,最后下半部分整体收缩为一个|φD⟩ ,且:
基于张量网络的机器学习(七)
然后上半部分是类似的我们设上半部分收缩为|φU⟩ ,最后求⟨φUD⟩ ,从而张量网络收缩计算变成了计算|φD⟩ 和|φU⟩,另外,上述的多体算符又叫做转移矩阵,这里的多体算符具有张量收缩的形式,这种形式称为矩阵乘积算符(matrix product operator, MPO),

TEBD算法

  由于TEBD基于MPS,所以每次收缩依旧会遇到辅助指标维度指数增长的问题,这也意味着需要MPS的最优裁剪,所以TEBD算法主要思路是先将对应边界的张量初始化为两个MPS,然后再将那些多体算符作用分别在这两个MPS上得到新的MPS,注意要先设定截断维数,如果MPS辅助指标维数超过了截断维数,那么就需要最优裁剪将辅助指标裁剪为截断维数,最后计算两个MPS态的内积,这看上去很简单,TEBD算法可以计算一维格点模型基态,其实这就是利用MPS求解基态,至于一维格点模型是什么,请听下回讲解。

二.提出问题

  现在让我们考虑以下问题:

  1. 什么是纠缠熵面积定律?
  2. 时间演化是什么?

下一次博客会探究一下如何使用MPS去求解基态或者说去计算物理系统的期望值,现在不清楚没关系,下次我会一一讲解。