How Does Block Absorption Work in MPS DMRG
Posted: 01 Feb 2022, 00:18
Hello,
This is a conceptual question about how a key aspect of the DMRG works in the language of Matrix Product States. I have attached an image of Block Site absorption; this image has been taken from "DMRG in the Language of Matrix Product States" by Ulrich Schollwock. In this post, I call the states \(\{| a_{l}\rangle\}\) the new states and the states \(\{|a_{l-1} \rangle \}\) the old states.
From Quantum Mechanics we see that each new state can be written from all the old states:
\(|a_{l} \rangle = \sum_{a_{l-1} ;\sigma_{l}} \langle a_{l-1} \sigma_{l}| a_{l} \rangle | a_{l-1} \sigma_{l} \rangle \)\(\equiv \sum_{a_{l-1} ;\sigma_{l}} M^{\sigma_{l}}_{a_{l-1} , a_{l}} | a_{l-1} \sigma_{l} \rangle\)
However, knowing the old states is not enough to find the coefficients \( M^{\sigma_{l}}_{a_{l-1} , a_{l}} \). Here were my ideas on how to implement this algorithm conceptually:
(1) Consider the block from sites 1 to \(l-1\). Suppose we find the states \(\{|a_{l-1} \rangle \}\). In order to find the new states, we need these old states \(\{|a_{l-1} \rangle \}\). Hence we need to store these states in the computer's memory, but storing all of these states \(\{|a_{l-1} \rangle \}\) will take up an exponential amount of space.
(2) To deal with this, we can reshape the states \(\{|a_{l-1} \rangle \}\) into matrices and can compute the density matrix of each state. Then we perform exact diagonalization on each density matrix to find the eigenvalues. These eigenvalues can be used to compute the Von Neumann entanglement entropy. The m states with the largest entanglement entropy are kept. We note that a sum over the subset of old states with high entanglement is just as good as the sum over all old states.
(3) Each state that we keep has an exponential number of coefficients (for instance for a spin 0.5 chain with N sites, the eigenstates are \(2^N \times 1\) vectors). Storing the kept vectors as is will still take up an exponential amount of space. As a result, each state that we keep can be converted into MPS form. This way we can store m states polynomially.
(4) By doing all of this, we can almost find all of the new states and absorb the site into the block to get a larger block.
Here are my questions:
(1) Is the MPS version of DMRG implemented the way I described in steps (1), (2), and (3)? Which of my steps are actually used and which are not? What steps are used in lieu of mine?
(2) How does one approximate the coefficients \(M^{\sigma_{l}}_{a_{l-1} , a_{l}}\)? How does one get an approximate version of the new states?
BTW: I am new to the DMRG algorithm and I mainly use it to study known systems. However, I am keenly interested in knowing how the algorithm works conceptually (let's say from a systems engineer perspective rather than from a developer's perspective, since I am trying to understand the algorithm from a high level, one which humans can carry out by words and pictures). I am reading Schollwock's paper too and a lot of the math makes sense, but not everything is clicking and hence why I asked.
This is a conceptual question about how a key aspect of the DMRG works in the language of Matrix Product States. I have attached an image of Block Site absorption; this image has been taken from "DMRG in the Language of Matrix Product States" by Ulrich Schollwock. In this post, I call the states \(\{| a_{l}\rangle\}\) the new states and the states \(\{|a_{l-1} \rangle \}\) the old states.
From Quantum Mechanics we see that each new state can be written from all the old states:
\(|a_{l} \rangle = \sum_{a_{l-1} ;\sigma_{l}} \langle a_{l-1} \sigma_{l}| a_{l} \rangle | a_{l-1} \sigma_{l} \rangle \)\(\equiv \sum_{a_{l-1} ;\sigma_{l}} M^{\sigma_{l}}_{a_{l-1} , a_{l}} | a_{l-1} \sigma_{l} \rangle\)
However, knowing the old states is not enough to find the coefficients \( M^{\sigma_{l}}_{a_{l-1} , a_{l}} \). Here were my ideas on how to implement this algorithm conceptually:
(1) Consider the block from sites 1 to \(l-1\). Suppose we find the states \(\{|a_{l-1} \rangle \}\). In order to find the new states, we need these old states \(\{|a_{l-1} \rangle \}\). Hence we need to store these states in the computer's memory, but storing all of these states \(\{|a_{l-1} \rangle \}\) will take up an exponential amount of space.
(2) To deal with this, we can reshape the states \(\{|a_{l-1} \rangle \}\) into matrices and can compute the density matrix of each state. Then we perform exact diagonalization on each density matrix to find the eigenvalues. These eigenvalues can be used to compute the Von Neumann entanglement entropy. The m states with the largest entanglement entropy are kept. We note that a sum over the subset of old states with high entanglement is just as good as the sum over all old states.
(3) Each state that we keep has an exponential number of coefficients (for instance for a spin 0.5 chain with N sites, the eigenstates are \(2^N \times 1\) vectors). Storing the kept vectors as is will still take up an exponential amount of space. As a result, each state that we keep can be converted into MPS form. This way we can store m states polynomially.
(4) By doing all of this, we can almost find all of the new states and absorb the site into the block to get a larger block.
Here are my questions:
(1) Is the MPS version of DMRG implemented the way I described in steps (1), (2), and (3)? Which of my steps are actually used and which are not? What steps are used in lieu of mine?
(2) How does one approximate the coefficients \(M^{\sigma_{l}}_{a_{l-1} , a_{l}}\)? How does one get an approximate version of the new states?
BTW: I am new to the DMRG algorithm and I mainly use it to study known systems. However, I am keenly interested in knowing how the algorithm works conceptually (let's say from a systems engineer perspective rather than from a developer's perspective, since I am trying to understand the algorithm from a high level, one which humans can carry out by words and pictures). I am reading Schollwock's paper too and a lot of the math makes sense, but not everything is clicking and hence why I asked.