这里写目录标题
- 一、TEBD算法
- 定义
- TEBD算法计算一维格点模型基态
- 二、密度矩阵重整化群算法
- 三、基于自动微分的基态变分算法
- 四、矩阵乘积态与纠缠熵面积定律
我是一只正在不断学习、希望早日成为小白的小小白,有什么错误欢迎大家批评指正,喜欢的请点个赞哦!
文章图片
一、TEBD算法 定义 【张量网络算法基础|张量网络算法基础(五、TEBD算法和DMRG算法)】给定一个张量网络,把所有的指标求和,得出求和的结果。例如一个由 W×H 个张量组成的张量网络,如下图。该张量网络由三种不等价张量构成,该三种不等价张量为:在四个角上的张量为二阶张量、在边上的张量为三阶张量、在内部的张量为四阶张量。把该张量所有的指标求和,得出的结果是一个标量。
文章图片
TEBD(time-evolving block decimation)算法为一种基于矩阵乘积态的、近似收缩张量网络的数值算法。要是忘记了什么是矩阵乘积态,戳这里:矩阵乘及态。
TEBD算法是从处于边界的张量构成的MPS开始,一行一行或一列一列地收缩张量网络的算法。以下图的收缩为例,把张量网络沿水平方向从中间分成两部分,右图以下部分为例,下边界的张量也就是橙色的部分组成一个长度为W的MPS态,我们把它记为 ∣ φ D 0 ? \left| {{\varphi }^{{{D}_{0}}}} \right\rangle ∣∣?φD0??,中间的每一层张量也就是蓝色的部分构成作用在 ∣ φ D 0 ? \left| {{\varphi }^{{{D}_{0}}}} \right\rangle ∣∣?φD0??上的算符,记为 ρ ^ \hat{\rho } ρ^?。看到这再结合之前学过的多体算符作用到多体态上的内容,有没有思绪万千?我们继续往下看。
文章图片
TEBD的做法就是把上面这一层一层的张量 ρ ^ \hat{\rho } ρ^?和MPS态 ∣ φ D 0 ? \left| {{\varphi }^{{{D}_{0}}}} \right\rangle ∣∣?φD0??进行收缩,如下图所示。每收缩一层就会产生一个新的MPS态,整个下半部分收缩的结果为另一个MPS态,记为 ∣ φ D ? \left| {{\varphi }^{D}} \right\rangle ∣∣?φD?,易得
∣ φ D ? = ρ ^ H 2 ? 1 ∣ φ D 0 ? \left| {{\varphi }^{D}} \right\rangle \text{=}{{\hat{\rho }}^{\frac{H}{2}-1}}\left| {{\varphi }^{{{D}_{0}}}} \right\rangle ∣∣?φD?=ρ^?2H??1∣∣?φD0??
文章图片
下半层同理,类似地定义 ∣ φ U ? =( ρ ^ T ) H 2 ? 1 ∣ φ U 0 ? \left| {{\varphi }^{U}} \right\rangle \text{=(}{{\hat{\rho }}^{T}}{{)}^{\frac{H}{2}-1}}\left| {{\varphi }^{{{U}_{0}}}} \right\rangle ∣∣?φU?=(ρ^?T)2H??1∣∣?φU0??,所以整个张量网络收缩的结果为
Z = ? φ U ∣ φ D ? = ? φ U 0 ∣ ρ ^ H ? 2 ∣ φ D 0 ? Z=\left\langle {{\varphi }^{U}} \right.\left| {{\varphi }^{D}} \right\rangle \text{=}\left\langle {{\varphi }^{{{U}_{0}}}} \right|{{\hat{\rho }}^{H-2}}\left| {{\varphi }^{{{D}_{0}}}} \right\rangle Z=?φU∣∣?φD?=?φU0?∣∣?ρ^?H?2∣∣?φD0??
一切看起来都那么的简单,但是如果我们只进行收缩其它什么操作都没有,那么们我们就会遇见一个问题,每次收缩都会使MPS态的辅助指标扩大D倍( ρ ^ \hat{\rho } ρ^?水平方向指标的维数),所以此时需要引入MPS的最优裁剪,设置截断维数 χ \chi χ,如下图的操作。也就是在收缩的过程中,我们收缩一层,得到一个新的MPS态,通过中心正交形式计算MPS纠缠谱,将多于截断维数的奇异值和对应的奇异向量进行裁剪,最后将辅助指标的维数裁剪为χ \chi χ
注意:这种收缩、裁剪的方式很重要,后面的学习还会涉及,理解还不够透彻可以再回顾下上篇博客有关MPS的内容TT分解和MPS态
文章图片
TEBD算法计算一维格点模型基态 考虑N个自旋构成的一维海森堡模型:
H ^ = ∑ ? i , j ? H ^ i j , H ^ i j = ∑ α = x , y , z s ^ i α s ^ j α \widehat{H}=\sum_{\langle i, j\rangle} \widehat{H}_{i j}, \quad \widehat{H}_{i j}=\sum_{\alpha=x, y, z} \hat{s}_{i}^{\alpha} \hat{s}_{j}^{\alpha} H =?i,j?∑?H ij?,H ij?=α=x,y,z∑?s^iα?s^jα?
求解该模型的基态步骤如下:
(1) 获得演化算符的 e ? τ H ^ i j {{e}^{-\tau {{{\hat{H}}}_{ij}}}} e?τH^ij?的系数张量:
G s 1 ′ s 2 ′ s 1 s 2 = ? s 1 ′ s 2 ′ ∣ e ? τ H ^ i j ∣ s 1 s 2 ? {{G}_{{{s}_{1}}'{{s}_{2}}'{{s}_{1}}{{s}_{2}}}}=\left\langle {{s}_{1}}'{{s}_{2}}' \right|{{e}^{-\tau {{{\hat{H}}}_{ij}}}}\left| {{s}_{1}}{{s}_{2}} \right\rangle Gs1?′s2?′s1?s2??=?s1?′s2?′∣e?τH^ij?∣s1?s2??
其中 τ \tau τ为极小的正实数,基态演化算符:
P ^ = lim ? K → ∞ ? ( e ? τ ∑ ? i , j ? H ^ i j ) K \hat{P}=\underset{K\to \infty }{\mathop{\lim }}\,{{({{e}^{-\tau \sum\nolimits_{\left\langle i \right.,\left. j \right\rangle }{{{{\hat{H}}}_{ij}}}}})}^{K}} P^=K→∞lim?(e?τ∑?i,j??H^ij?)K
其被表示为由四阶张量G构成的如下图所示的张量网络;
文章图片
(2) 随机初始化MPS态,MPS满足归一性,将随机初始化的MPS态放置在张量网络底部,以竖直方向和MPS态一层一层地进行收缩,只要MPS态和 P ^ \hat{P} P^不完全正交,就可以把任意一个态投影到基态上;
补充:这里收缩和裁剪的方式不止一种,我们可以先思考一下,答案后面揭晓
文章图片
(3) 将靠近MPS态的半层张量与MPS态进行收缩,部分近邻的两个张量被收缩成一个四阶张量。
文章图片
(4) 利用规范变化,将MPS态变换为中心正交形式,正交中心为第一个四阶张量。
文章图片
(5) 对中心张量进行奇异值分解,如果奇异谱维数大于截断维数 χ \chi χ,仅保留 χ \chi χ个最大的奇异值与奇异向量。
文章图片
(6) 移动正则中心到下一个四阶张量,重复步骤(4)—(5)直到所有四阶张量被分解成三阶张量。
(7) 进行完上述步骤后MPS被变换成为演化前的形式,重复(3)—(6)收缩下一个半层张量直到MPS收敛。
文章图片
TEBD算法的方法并不唯一…
文章图片
可以每次只收缩一个算符然后进行裁剪,也就是收缩一个算符裁剪一次,而不是收缩一层算符再进行裁剪,没想到吧!( ??? )?
二、密度矩阵重整化群算法 密度矩阵重整化群(DMRG)是基于最大本征态求解对应的最优化问题,即求解哈密顿量的基态和基态能。DMRG就是更新各个张量使能量达到最小,更新策略不唯一。
在单点DMRG中每次更新MPS中的一个张量,其余的张量看成给定的参数。将单个张量的优化问题等价为局域矩阵最大本征值问题
E g = min ? ? φ ∣ φ ? = 1 ? ? φ ∣ H ^ ∣ φ ? {{E}_{g}}=\underset{\left\langle \varphi \right|\left. \varphi \right\rangle =1}{\mathop{\min }}\,\left\langle \varphi \right|\hat{H}\left| \varphi \right\rangle Eg?=?φ∣φ?=1min??φ∣H^∣φ?
不懂?我们看图说话。以更新第二个张量为例,定义有效哈密顿量 h ^ 2 {{\hat{h}}_{2}} h^2?,如下图。
文章图片
把需要更新的张量及其对应的共轭去除,未相连的部分之间进行直积运算,每一项收缩的结果为六阶张量,所以 h ^ 2 {{\hat{h}}_{2}} h^2?就是六个六阶张量的求和,故也是六阶张量。最终最优化问题变成了:
E = min ? ∣ A ( 2 ) = 1 ∣ ? ? A ( 2 ) ∣ h ^ 2 ∣ A ( 2 ) ? E=\underset{\left| {{A}^{(2)}}=1 \right|}{\mathop{\min }}\,\left\langle {{A}^{(2)}} \right|{{\hat{h}}_{2}}\left| {{A}^{(2)}} \right\rangle E=∣A(2)=1∣min??A(2)∣∣∣?h^2?∣∣∣?A(2)?
其中 A ( 2 ) {{A}^{(2)}} A(2)是 h ^ 2 {{\hat{h}}_{2}} h^2?的最小本征态,所以 A ( 2 ) {{A}^{(2)}} A(2)应被更新为 h ^ 2 {{\hat{h}}_{2}} h^2?的最低本征态。
文章图片
min ? ∣ A ( 2 ) = 1 ∣ ? ? A ( 2 ) ∣ h ^ 2 ∣ A ( 2 ) ? \underset{\left| {{A}^{(2)}}=1 \right|}{\mathop{\min }}\,\left\langle {{A}^{(2)}} \right|{{\hat{h}}_{2}}\left| {{A}^{(2)}} \right\rangle ∣A(2)=1∣min??A(2)∣∣∣?h^2?∣∣∣?A(2)?
得到基态MPS后,利用中心正交形式简化对算符观测量的计算,如下面两种情况。
正交中心与观测量所在格点重合时,如下图,将观测量左/右两边的张量进行收缩以此来达到简化对算符观测量的计算的目的。
文章图片
正交中心与观测量所在格点不重合时,如下图,将正交中心左边的张量进行收缩,观测量右边的算符进行收缩,从而简化对算符观测量的计算。
文章图片
三、基于自动微分的基态变分算法 看了我张量网络算法基础第三篇博客的小伙伴一定会对这个感觉到莫名的亲切,但是这里针对的对象和之前是不同的。没看的小伙伴也没事,戳这里快速了解下:格点模型
与之前利用自动微分求解对称矩阵的最大本征向量不同的是,自动微分法求解多体系统基态,对应的优化问题写为:
E = min ? { A ( n ) } ? ? φ ∣ H ^ ∣ φ ? ? φ ∣ φ ? E=\underset{\left\{ {{A}^{(n)}} \right\}}{\mathop{\min }}\,\frac{\left\langle \varphi \right|\hat{H}\left| \varphi \right\rangle }{\left\langle \varphi \right|\left. \varphi \right\rangle } E={A(n)}min??φ∣φ??φ∣H^∣φ??
∣ φ ? \left| \varphi \right\rangle ∣φ?写成MPS态的形式, H ^ \hat{H} H^写成 H ^ = ∑ ? i , j ? H ^ i j \hat{H}={{\sum\nolimits_{\left\langle i,\left. j \right\rangle \right.}{{\hat{H}}}}_{ij}} H^=∑?i,j??H^ij?的形式,变分参数为MPS中的各个张量 { A ( n ) } \left\{ {{A}^{(n)}} \right\} {A(n)},梯度更新的公式为:
A ( n ) ← A ( n ) ? η ? E ? A ( n ) {{A}^{(n)}}\leftarrow {{A}^{(n)}}-\eta \frac{\partial E}{\partial {{A}^{(n)}}} A(n)←A(n)?η?A(n)?E?
虽然表面上看起来不太一样,但实际上和之前的求解对称矩阵的最大本征向量的本质还是一样的。这里通过不断更新MPS的张量达到求解基态的目的。
四、矩阵乘积态与纠缠熵面积定律 由MPS的正交形式可以看出奇异谱的维数等于辅助指标的维数,且有 ∣ Λ ∣ =1 \left| \Lambda \right|\text{=1} ∣Λ∣=1,设奇异谱维数为 χ \chi χ,当 Λ = [ 1 χ 1 χ 1 χ 1 χ ] \Lambda \text{=}\left[ \begin{matrix} \frac{\text{1}}{\sqrt{\chi }} & \frac{\text{1}}{\sqrt{\chi }} & \frac{\text{1}}{\sqrt{\chi }} & \frac{\text{1}}{\sqrt{\chi }} \\ \end{matrix} \right] Λ=[χ ?1??χ ?1??χ ?1??χ ?1??]时,纠缠熵
S = ? ∑ k = 0 χ ? 1 Λ k 2 ln ? Λ k 2 S=-\sum\limits_{k=0}^{\chi -1}{{{\Lambda }_{k}}^{2}\ln {{\Lambda }_{k}}^{2}} S=?k=0∑χ?1?Λk?2lnΛk?2达到极大值,我们可以尝试去证明一下这个结论:
前提: Λ 1 2 + Λ 2 2 + ? + Λ x ? 1 2 = 1 \Lambda_{1}^{2}+\Lambda_{2}^{2}+\cdots+\Lambda_{x-1}^{2}=1 Λ12?+Λ22?+?+Λx?12?=1
根据拉格朗日条件极值法求 S 的极值
证明:
f ( Λ 0 , Λ 1 , ? ? , Λ x ? 1 , p ) = Λ 0 2 ln ? Λ 0 2 + Λ 1 2 ln ? Λ 1 2 + ? + Λ x ? 1 2 ln ? Λ x ? 1 2 + p ( Λ 0 2 + Λ 1 2 + ? + Λ x ? 1 2 ) f({{\Lambda }_{0}},{{\Lambda }_{1}},\cdots ,{{\Lambda }_{x-1}},p)=\Lambda _{0}^{2}\ln \Lambda _{0}^{2}+\Lambda _{1}^{2}\ln \Lambda _{1}^{2}+\cdots +\Lambda _{x-1}^{2}\ln \Lambda _{x-1}^{2}+p(\Lambda _{0}^{2}+\Lambda _{1}^{2}+\cdots +\Lambda _{x-1}^{2}) f(Λ0?,Λ1?,?,Λx?1?,p)=Λ02?lnΛ02?+Λ12?lnΛ12?+?+Λx?12?lnΛx?12?+p(Λ02?+Λ12?+?+Λx?12?)
{ 2 Λ 0 ln ? Λ 0 2 + Λ 0 2 2 Λ 0 Λ 0 2 + 2 p Λ 0 = 0 2 Λ 1 ln ? Λ 1 2 + Λ 1 2 2 Λ 1 Λ 1 2 + 2 p Λ 1 = 0 ? 2 Λ x ? 1 ln ? Λ x ? 1 2 + Λ x ? 1 2 2 Λ x ? 1 Λ x ? 1 + 2 p Λ x ? 1 = 0 Λ 0 2 + Λ 1 2 + ? + Λ x ? 1 2 = 1 \left\{\begin{array}{c}2 \Lambda_{0} \ln \Lambda_{0}^{2}+\Lambda_{0}^{2} \frac{2 \Lambda_{0}}{\Lambda_{0}^{2}}+2 p \Lambda_{0}=0 \\ 2 \Lambda_{1} \ln \Lambda_{1}^{2}+\Lambda_{1}^{2} \frac{2 \Lambda_{1}}{\Lambda_{1}^{2}}+2 p \Lambda_{1}=0 \\ \vdots \\ 2 \Lambda_{x-1} \ln \Lambda_{x-1}^{2}+\Lambda_{x-1}^{2} \frac{2 \Lambda_{x-1}}{\Lambda_{x-1}}+2 p \Lambda_{x-1}=0 \\ \Lambda_{0}^{2}+\Lambda_{1}^{2}+\cdots+\Lambda_{x-1}^{2}=1\end{array}\right. ????????????????2Λ0?lnΛ02?+Λ02?Λ02?2Λ0??+2pΛ0?=02Λ1?lnΛ12?+Λ12?Λ12?2Λ1??+2pΛ1?=0?2Λx?1?lnΛx?12?+Λx?12?Λx?1?2Λx?1??+2pΛx?1?=0Λ02?+Λ12?+?+Λx?12?=1?
{ ln ? Λ 0 2 + 1 + p = 0 ln ? Λ 2 2 + 1 + p = 0 ? ln ? Λ x ? 1 2 + 1 + p = 0 Λ 0 2 + Λ 1 2 + ? + Λ x ? 1 2 = 1 \left\{\begin{array}{c}\ln \Lambda_{0}^{2}+1+p=0 \\ \ln \Lambda_{2}^{2}+1+p=0 \\ \vdots \\ \ln \Lambda_{x-1}^{2}+1+p=0 \\ \Lambda_{0}^{2}+\Lambda_{1}^{2}+\cdots+\Lambda_{x-1}^{2}=1\end{array}\right. ??????????????lnΛ02?+1+p=0lnΛ22?+1+p=0?lnΛx?12?+1+p=0Λ02?+Λ12?+?+Λx?12?=1?
所以 Λ 0 = Λ 1 = ? = Λ x ? 1 = 1 χ \Lambda_{0}=\Lambda_{1}=\cdots=\Lambda_{x-1}=\frac{1}{\sqrt{\chi}} Λ0?=Λ1?=?=Λx?1?=χ ?1?
给定MPS的辅助指标维数后,其能容纳的纠缠熵上限为
S = ? ∑ k = 0 χ ? 1 1 χ ln ? 1 χ = ln ? χ S=-\sum\limits_{k=0}^{\chi -1}{\frac{1}{\chi }\ln \frac{1}{\chi }=\ln \chi } S=?k=0∑χ?1?χ1?lnχ1?=lnχ
由此可见,在任意一处剪断MPS进行二分后,两部分之间的纠缠熵大小与各部分包含的格点个数无关,仅与边界处辅助指标的维数有关。
定义纠缠熵的面积定律:对于D维格点系统的量子态,将体系二分后,两部分之间的纠缠熵满足: S ~ O ( l D ? 1 ) S\sim O({{l}^{D-1}}) S~O(lD?1),其中l l l 代表空间尺度。对于MPS态
S = ln ? χ = l D ? 1 ln ? χ S=\ln \chi ={{l}^{D-1}}\ln \chi S=lnχ=lD?1lnχ
文章图片
对于一般的张量网络态,二分纠缠熵的上限一般是由穿过边界的辅助指标的总维数确定的,选取穿过辅助指标个数最小的边界进行二分,例如:
文章图片
该体系二分后两部分之间的纠缠熵满足:
S ~ ln ? χ 1 χ 2 = ln ? χ 1 + ln ? χ 2 S\sim \ln {{\chi }_{1}}{{\chi }_{2}}=\ln {{\chi }_{1}}+\ln {{\chi }_{2}} S~lnχ1?χ2?=lnχ1?+lnχ2?
所以对于一般的张量网络态纠缠熵的上限
S ~ N ln ? χ ( N ~ O ( l D ? 1 ) ) S\sim N\ln \chi(N\sim O({{l}^{D-1}})) S~Nlnχ(N~O(lD?1))
要构建满足二维纠缠熵面积定律的张量网络态,需要改变网络结构,例如定义在二维张量网络上的投影纠缠对态(PEPS),PEPS的 D=2,穿过边界的指标个数满足 O ( l 2 ? 1 ) O({{l}^{2-1}}) O(l2?1)也就是 O ( l 1 ) O({{l}^{1}}) O(l1)
文章图片
我是一只正在不断学习、希望早日成为小白的小小白,有什么错误欢迎大家批评指正,喜欢的请点个赞哦!
文章图片
推荐阅读
- paddle|动手从头实现LSTM
- 人工智能|干货!人体姿态估计与运动预测
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- 分析COMP122 The Caesar Cipher
- 读书笔记|《白话大数据和机器学习》学习笔记1
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)
- C语言学习(bit)|16.C语言进阶——深度剖析数据在内存中的存储
- Python机器学习基础与进阶|Python机器学习--集成学习算法--XGBoost算法