## 2 Fundamental Concepts
### Artificial Neural Networks  
Artificial neural networks are a computational representation of an information processing system with characteristics similar to biological neural networks, inspired by the functioning of the human brain [15]. The artificial neuron is the basic processing unit of an ANN, its first model being proposed by [PERSON] and [PERSON] in 1943. In the model in question, the dendrites are represented by \(n\) inputs \(x_{1}\), \(x_{2}\),...\(x_{n}\). The axon is characterized by the \(y\) output. The synapses (connections between neurons) are responsible for defining the intensity of each input signal, being represented by the synaptic weights \(w_{1}\), \(w_{2}\),...\(w_{n}\), each one associated with its respective input. The nucleus and the cell body are responsible for handling the inputs and calculating the weighted sum \(u\) of the inputs, in addition to verifying if this sum exceeds the threshold \(\theta\); if it exceeds, the neuron fires a \(y\) signal. Otherwise, no signal is fired. Some methods based on the [PERSON] and [PERSON] model allow for different output signals. For this result, different activation functions were defined, such as linear, sigmoid, hyperbolic tangent, inverse tangent and ReLU, among others [16]. There are some types of networks, the most common being perceptron, Kohonen, Hopfield and ART [17]. In this paper, we applied the perceptron type ANN. The basic unit of this type of network is the simple perceptron, which works by receiving a set of input data and a bias, weighted by their respective synaptic weights. Then, the sum of these data is calculated, and then the activation function is triggered; the result sorts the input set between two different groups. However, the simple perceptron has some limitations. This type of network has problems classifying sets that are not linearly separable, or even when this separation is not well defined. For this type of situation, it is more appropriate to use the multilayer perceptron (MLP) network. MLP consists of an input layer, an output layer and one or more hidden layers between these two layers. Layers are intended to increase the network's ability to model complex functions. Each layer in a network contains a sufficient number of neurons depending on the application. The input layer is passive and works by just receiving the data. The hidden and output layers actively process the data, the output layer being responsible for producing the results of the neural network [18]. The MLP model has supervised learning by error correction, has more than one layer and is acyclic. The output of a neuron cannot serve as an input for any last neuron that is connected. Therefore, all neurons process each input. A propagation rule is given by the inner product of the inputs weighted by the weights with the addition of the bias term, and the output of the previous layer is the input of the current layer. It is important to note that, in this type of network, there may be more than one hidden layer, in addition to different numbers of neurons in each layer [5]. Only a training set and arbitrary synaptic weights are not enough for a neural network to classify or predict values closest to an actual situation. For this, it is necessary to carry out training. The weights are adjusted, better describing the condition addressed. The training of an MLP network is usually divided into a few steps, called the feedforward step (forward phase) and the backpropagation with the adjustment of the weights (backward phase) [19]. The backpropagation algorithm is one of the most used tools for ANN training. However, in some practical applications, it may be too slow. Suppose, for example, that there are \(t\) training samples, \(f\) features and \(h\) hidden layers, each containing \(n\) neurons and \(o\) output neurons. The time complexity of backpropagation is \(O(t*f*n^{h}*o*i)\), where \(i\) is the number of iterations.