Artificial **neural networks** are a powerful type of model capable of processing many types of data. Initially inspired by the connections between biological neural networks, modern artificial neural networks only bear slight resemblances at a high level to their biological counterparts. Nonetheless, the analogy remains conceptually useful and is reflected in some of the terminology used. Individual 'neurons' in the network receive variably-weighted input from numerous other neurons in the more superficial layers. Activation of any single neuron depends on the cumulative input of these more superficial neurons. They, in turn, connect to many deeper neurons, again with variable weightings.

There are two broad types of neural networks:

- fully connected networks
- simple kind of neural network where every neuron on one layer is connected to every neuron on the next layer

- recurrent neural networks
- neural network where part or all of the output from its previous step is used as input for its current step. This is very useful for working with a series of connected information, for example, videos.

The usefulness of neural networks stems from the fact that they are universal function approximators, meaning that given the appropriate parameters, they can represent a wide variety of interesting and dissimilar functions.

Furthermore, they are differentiable mathematical functions, that is for a given set of parameters, inputs and labels, one can find the gradient of the parameters concerning defined loss functions, in effect helping determine how these parameters should be altered in order to improve predictions.