## 2 Phenomenological and Numerical Models' Descriptions
### Numerical Model  
The term numerical model means the set of the mathematical model and the related numerical solution methods, implemented in a calculation code written in a programming language and made available in the form of software. Mathematical models can have somewhat different levels of complexity. In the previous paragraphs we have seen that for some physical processes it is extremely difficult to develop a mathematical model that can simulate the acoustic behavior of some materials. Machine learning is a branch of artificial intelligence that gathers different mechanisms that allow an intelligent machine to improve its skills and performance over time. The machine, therefore, will be able to learn to perform certain tasks by improving, through experience, its skills, responses, and functions. At the basis of machine learning there are a series of different algorithms that, starting from primitive notions, will be able to make a specific decision rather than another or perform actions learned over time. In this way it is possible to overcome the need to develop a model of the physical processes underlying the problem. In recent years, machine learning-based algorithms have been used to deal with problems of a different nature [12; 13; 14; 15; 16; 17; 18; 19; 20; 21; 22]. Specifically, neural networks are a very powerful set of algorithms that allow to tackle problems in the field of classification, and of regression. These algorithms have a high processing speed and can learn the solution by analyzing a certain set of examples. Neural networks are machine learning models that try to imitate the structure and functioning of the biological brain, consisting of large clusters of neurons connected together by axons, through the use of sets of neural units, called artificial neurons, interconnected with each other to form a network. Each neural unit relates to many others, and the connection can be reinforcing or inhibitory in relation to the activation of the units to which it is connected. Each neuron contains a function used to combine the values of all its inputs and a function, called the activation function, which returns the output of the neuron [23; 24]. These networks can be seen as nonlinear mathematical functions that transform a set of independent variables \(x=(x_{1},\,\ldots,\,x_{n})\), called network inputs, into a set of dependent variables \(y=(y_{1},\,\ldots,\,y_{k})\), called network outputs. The precise form of these functions depends on the internal structure of the network and on a set of values \(w=(w_{1},\,\ldots,\,w_{n})\), called weights. We can therefore write the function of the network in the following form:  
\[y=f\left(\sum_{j}w_{j}*x_{j}+b\right) \tag{9}\]  
Here:  
\(\bullet\)\(x_{j}\) is the \(j\)th input  
\(\bullet\)\(w_{j}\) is the \(j\)th weight  
\(\bullet\)\(b\) is the bias  
\(\bullet\)\(y\) is the output  
The set of weights and bias represents the information that the neuron learns during the training phase and that it retains later. The function\(f\) represents the activation function, which normally consists of a threshold or limitation function which ensures that only signals with values compatible with the threshold or limit imposed can propagate to the next neuron or neurons. Typically, the activation function is a nonlinear function, and usually it is a step, a sigmoid, or a logistics function [25]. The weights are determined during the training phase based on the experience gained by the network. Training can be a very intense computational action and requires a series of examples, called training sets, whose elements are input-target pairs. The training is carried out with the search for appropriate weight values that minimize a specific error function [26; 27].