MPO construction and compression principles (or: how does OpSum work?)

Hello,

I am trying to understand what OpSum is doing, and in particular, from a mathematical point of view, how best to construct arbitrary MPOs from sums of tensor products and how to compress them.

The way I understand this is e.g. H = X_0 X_2 + Y_1 X_2 in the following way
image

So each extra site adds an MPO tensor (vectors on the boundary), and each new term adds a row and column to each of the tensors. Is this correct?

Now I was wondering how you can compress them, because if I constructed a TFIM with n spins, using this formalism I’d have O(n) terms and i.e. MPO bond dim O(n). But I know that there is a more efficient MPO construction for the TFIM where I can construct it with MPO bond dim 3 (or 4/5, not sure).

The way I would naively do the compression, and also what I undersatnd itensor to be doing here, is take the tensor with legs (v1, v2, s1, s2) (virtual 1/2, physical s1/2), permute to (v1, s1, v2, s2), reshape to ((v1, s1), (v2, s2)), and then SVD. However, when I do that for an example with N=10 terms, where 2 are non-trivial PauliX and the remaining 8 are identities, I get a flat spectrum with all ones, so clearly something is not right?

Or is this expected with this construction? And if so, what is the better construction (essentially, what is OpSum doing?)

I am not too well-versed in julia and found it easier to do a small mwe in python, hope there is no offense taken

import numpy as np

paulix = np.array([[0., 1.], [1., 0.]])

dimMPO = 10

arr = np.zeros((dimMPO, dimMPO, 2, 2), dtype=complex)

for i in range(dimMPO):
    arr[i, i] = np.eye(2)

arr[0, 0] = paulix
arr[1, 1] = paulix

arr = np.transpose(arr, [0, 2, 1, 3])
arr = np.reshape(arr, (dimMPO * 2, dimMPO * 2))
U, S, Vd = np.linalg.svd(arr)

print(S)
# [1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
3 Likes

For construction, I would recommend checking out if you haven’t

And this paper on MPO compression

I’ll have to let others comment on the exact compression techniques that are in ITensors

1 Like

Thanks, will check the 2020 paper!
I am aware of the finite automata constructions, I am curious about either having no repetition / translational invariance that allows such a constructions, or retrieving such a format through compression from the “naive” construction

This is an interesting topic, for sure, and there has been a lot of theoretical progress on it.

The main reference for the system currently used by OpSum is:
“Matrix Product Operators, Matrix Product States, and ab initio Density Matrix Renormalization Group algorithms” Chan, Keselman, Nakatani, Li, White
https://arxiv.org/abs/1605.02611.
For a brief summary of the construction there, I’m attaching the pdf notes below that I wrote for one of the Flatiron postdocs helping us to generalize that system. A key thing to realize about the method in that paper (or something I was initially confused about) is that one places all of the coefficients of the operators in the sum into a ‘bond matrix’ on each bond. But this representation is not simultaneous: these are different representations of the same operator, where one chooses a different bond to ‘expand around’. Then for each such representation, you compute the SVD of the coefficient matrix, then just the “V” matrix from the SVD is sufficient to compute an optimally compressed representation of the MPO, as detailed in the paper and notes.

Note that while the above algorithm gives optimal bond dimensions (up to some minor corner cases), it does not have optimal complexity for systems with arbitrary, long-range interactions, because the SVD of the coefficient matrix scales as the third power of the system size, (or square if you use a technique like randomized SVD), whereas it should be possible to find a general, linear-scaling algorithm.

Last but not least, Parker and Zaletel have developed a general theory of “canonical forms” of MPOs representing sums of operators (i.e. MPOs where there are special ‘settings’ of the bond indices that make strings of identity operators).
https://journals.aps.org/prb/abstract/10.1103/PhysRevB.102.035147
It is worth a read in tandem with the Chan, Keselman, et al. paper above because it deals with the concepts but in a slightly more general (and I think also more readable) way.





4 Likes