# Introduction

One of the key components of machine-learning simulations for quantum many-body systems are certainly the machines. In NetKet, artificial neural networks are used to parametrize the many-body wave-function, as introduced in Reference (1).

Generally speaking, a machine is a high-dimensional (typically non-linear) function

of the quantum numbers $s_1 \dots s_N$ that define the many-body quantum system, and depending on a set of parameters $\mathbf{p} \equiv p_1 \dots p_M$.

NetKet ships with several state-of-the-art implementations of Restricted Boltzmann Machines, Feedforward Neural Networks, Jastrow factors, and more. Custom machines can be also provided by the user, following the steps described here. Future versions of NetKet will provide an even larger choice of built-in machines. See also our Challenges, if you would like to contribute to the developments in these directions.

Compact parametrizations of the wave-function in terms of artificial neural networks can be used to find the ground-state of a many-body Hamiltonian (see also Ref. (2) for additional details). The algorithms to perform this learning task, as implemented in NetKet, are described in the Learning the Ground State section.

In addition to finding the ground-state of a given Hamiltonian, there are other learning tasks that can be performed using the machines implemented in NetKet. For example, supervised learning with Born machines (3,4), or unsupervised learning to perform state-reconstruction (5).

The corresponding learning algorithms will be implemented in future versions of NetKet. See also our Challenges, if you would like to contribute to the developments in these directions.