Skip to content

lfcmoraes/cnn_Hxxz

Repository files navigation

Using Convolutional Neural Network to solve quantum-spin-chains Ground-States.

The project main idea is to find the the ground state of a quantum spin chain hamiltonian using deep learning. Deep learning is wildily used as a tool to find abstract information in a lot of kind of problems, image pattern recognition are one of them. An image is nothing more than a tensor of numbers, in that sense an Hamiltonian is just a single chanel image and deep learning can be used to predict non explicit characteristics of the same, like its ground-state throught a regression method.

I've chosen an XXZ Hamiltonian with an uniform external magnect field. The Hamiltonian is in the for:

hamiltonian


Data set

The number of spins of the chain was fixed, L=8, and de anisotropy constant, \Delta, was set to garantee the paramagnect regime. To generete the Hamiltonians the magnect fiel was started at -6, the matrix is block diagonalized and the minimum of all of the block are stored (sigmaz commutes with the Hamiltonian so the last can be written in magnatizations zones). After that the magnect field is incread by 0.001. Doing this until the magnect field is 6 so we get 12k samples.

The ground state engergy density (E/L) and the magnetization of the data set in function of the external magnect field (h) are represente in the graphics bellow respectivaly:

gs-energy_big

gs-mag_big

Create the data set

To create the Hamiltonians, save then in a folder named matrix/ as numpy arrays (h.npy) and create de graphics above simply run the following command:

python3 data_set.py

Code

Used to # of samples %
Train 9120 76
Validate 2280 19
Test 600 5
Total 12000 100

Results

loss predct

Random

Loss

Retrain 500, 1k and 5k:

loss_retrain_rand_500 loss_retrain_rand_1k loss_retrain_rand_5k

Train 1k and 10k:

loss_train_rand_1k loss__train_rand_10k

Predictions

Just test:

pred_rand_100 just_test_rand

Retrain 500, 1k and 5k:

retrain_rand_500 retrain_rand_1k retrain_rand_5k

Train 1k and 10k:

train_rand_1k train_rand_10k

Train rand 25k

train_rand_25k


Pool

Loss

Retrain 500, 1k and 10k:

loss_retrain_pool_500 loss_retrain_pool_1k loss_retrain_pool_5k

Train 1k and 10k:

loss_train_pool_1k loss_train_pool_10k

Predictions

Just test:

just_test_pool

Retrain 500, 1k and 5k:

retrain_pool_500

retrain_pool_1k retrain_pool_5k

Train 1k and 10k:

train_pool_1k train_pool_10k


Pool L = 16

Loss:
Prediction:

train_l16_10k

Pool l=16 20k

Loss:

loss_train_l16_20k loss_train_l16_20k_old

Prediction:

train_l16_20k

Delta x Negativity

train_Del_neg train_Del_neg_cont train_Del_neg_cont_10percent_test train_Del_neg_cont_10percent