## 2 Artificial Neural Networks  
The concept of ANN was first proposed in 1943. It is an information-processing technology that simulates the human brain and the nervous system. Similar to the human brain, ANN does not follow specific rules to process data but uses the data that it obtains to abstract the rules governing them [18].  
ANN in simple terms is a biologically inspired computational model. Like the neuron, it is an interconnection of nodes as is shown in Figure 1a [19]. Each node receives multiple inputs from other nodes through connections with related weights. If the weighted sum of inputs exceeds the threshold value of the node, it activates and passes the signal through the transfer function and sends it to the next node. This process can be expressed as a mathematical model [20]:  
\[y_{k}=f\Bigg{(}\sum_{i=1}^{n}\omega_{ij}x_{ij}+b_{jk}\Bigg{)}. \tag{1}\]  
where \(y\) is the output of the node, \(f\) is the transfer function, \(\omega_{ij}\) is the weight of input \(x\), and \(b\) is the threshold value.  
The general architecture of an ANN is shown in Figure 1a [21]. The nodes in the network are organized into linear arrays called layers. Generally, three layers are included, the input layer with input neurons, hidden layer(s) with hidden neurons, and output layers with output neurons. Input layers are responsible for receiving signals from specific datasets. Hidden layers give a critical computational ability to the system, are predominant stages of ANN. Output layers make the final decisions and output results [22]. Designingthe network topology involves determining the number of nodes at each layer, the number of layers in the network, and the path of the connections among the nodes [19].  
The ANN uses a learning process to train the network, which can be summarized in Figure 1b. To ensure the reliability of the ANN in tackling the problem before putting it into operation, running a validation protocol is necessary [18]. Part of the sample is prepared for training the ANN (training set), while the remaining cases are used to assess the predictive capability of the ANN (testing set or validation set) [18]. The subsequent training process is explained below [19; 20; 23]. During training, the input layer broadcasts a pattern to all the hidden nodes. The system is then required to calculate the output value according to Equation (1) and broadcasts the result to the output nodes. Each output node then calculates a weighted sum, and an actual result is generated. In the next stage, the system has to decide whether further learning is required, which is accomplished by comparing the obtained total difference with a specified acceptable error given by the system developer. If the goal is not met, the output nodes calculate the derivatives of the error with respect to the weights and the result is sent back through the system to all the hidden nodes. Then, each hidden-layer node and output-layer node will change their weights to compensate for the corrections. Once the weights have been changed, the computation starts all over again. New output values are obtained, and the cycle continues until a desired result is obtained. Finally, the ANN system that passed the test can now be used to predict the outcome of an input not previously seen by the ANN.  
The flexible network topology and the self-learning ability make ANN a powerful algorithm for learning [21]. Adaptivity allows ANN to perform well even when the environment or the system being modeled varies with time. However, some shortcomings of ANN are also revealed. The network structures and the ability to deal with problems of  
Figure 1: Artificial neural network model. (**a**) ANN structure. (Adapted from [24]); (**b**) development process (Adapted from [25]).  
ANN are two manifestations of its characteristics, and the corresponding pros and cons of ANN are listed in Table 1 according to the literature [26].