This is a Python implementation of neural network quantum state introduced in the paper "Solving the quantum many-body problem with artificial neural networks".
Required library: Numpy, Numba, MPI4Py, Matplotlib
Hamiltonian
$$ \hat{H}=\sum_{i=1}^{N-1} \hat{S}^z_i \hat{S}^z_{i+1} - \frac{1}{2}\left[ \hat{S}^+i \hat{S}^-{i+1} + \hat{S}^-i \hat{S}^+{i+1} \right]$$
Trial wave function
Variational energy
Jastrow wave function with single parameter
On a 4 sites chain, the variational energy can be calculated analytically. Here is the comparison of the exact results with variational Monte Carlo results.
Gradient descent:
Define
Then
Jastrow wave function
Restricted Boltzman machine wave function
All the parameters in the wave function are complex numbers.
In the modified natural gradient descent method, the Fubini-study metric, which is the complex-valued form of Fisher information, is used to measure the "distance" between wave functions |ψ〉 and |φ〉. NGD can greatly improve the convengence speed as shown below.