- Exploring the possibility to use neural network to represent wavefunction and compute ground state energy in ab-initio systems;
- Targeting strongly correlated systems (static correlations)
- Exploring different sampling schemes.
Given the number of electrons and number of orbitals, constructing all the possible determinants and passing the total number of determinants as the size of the Hamiltonian.
-
Constructing a three-layer neural network, with input layer, one hidden layer and the output layer. The input layer are for the basis determinants and the output layer will give output of the coefficient of this determinant. The output layer has two neurons, giving the real and imaginary part of the coefficent, respectively.
-
Starting with a random determinant. Choosing randomly (with probability propotional to the offdiagonal terms' magnitude and properly unbias it) an connection, obtaining the magnitudes for the seed and its connection from the neural network. Decide to move to the connection from the seed with probability
$|\psi_i|^2/|\psi_{i-1}|^2$ . Repeat it for$N$ steps. -
Store all the coefficents for each determiant obtained from last step and the inputs and activations of each neuron for each dterminant. (This will be the memory bottle neck).
-
Calculating
where the prime on the
- The derivatives
using back-propagation algorithm.
so we can write the derivative as a sum
where
-
Updating the connection weights between neurons
$W_i^{(t+1)}=W_i^{(t)}-\alpha \delta_i^{(t)}$ . (More solvers can be used instead of simple gradient descend. Will add more in the future). -
Going back to 1 and repeat the steps for
$M (t=0,1,2,...,M)$ times (or until$\delta_i^{(t)}<\epsilon$ where$\epsilon$ is the tolerance). Or simple the energy converges.
The test files are under the test directory. In principle, each implemented functionality should have a test file and pass the test.
The library and the tests can be built with cmake, e.g.
mkdir build
cd build
cmake ../
Will set up the make environment, then, the single tests can be built with (e.g.)
make testAlg
The executables can be run from the test/ subdirectory of the build directory. Note that those tests that need to read in a user-supplied Hamiltonian require an FCIDUMP file (example files are supplied with this program in the run/ directory).
The default build type is RELEASE and will use extensive compiler optimization, to build in a debug mode, specify
-DCMAKE_BUILD_TYPE=Debug
when running cmake.