## 4 Performance Evolution

Table 2: Fast artificial neural network module settings. \begin{table}
\begin{tabular}{c c} \hline \hline
**Parameters** & **Details** \\ \hline Number of samples used in learning & 12 \\ Number of samples used for training & 9 \\ Number of samples used for testing & 3 \\ Number of sample that FANN predict & 1 \\ Time used for learning process & 165 \(\upmu\)s \\ Time used for prediction & 10 \(\upmu\)s \\ Desired training error & 10\({}^{-7}\) \\ \hline \hline \end{tabular}
\end{table} 
Table 3: FANN training parameters’ settings. we modified the back propagation algorithm by adding the adaptive learning rate and momentum features to gradient descent algorithm, as in [22; 23]. The algorithmic computational complexity of gradient descent with such features can be found in [24]. For the back propagation learning algorithm we used a linear activation function for the neuron in the output layer to produce a linear output value similar to that given during the training of the network. Also, we used the default initial weights and learning rate of the neural network library [22] for the back propagation algorithm. Figure 6 shows the performance evaluation of the prediction accuracy of FANN module when performing an online learning and prediction process over a training dataset containing ONU reports collected at the OLT during a period of 10 ms. In Figure 6a, the upper plot shows the actual aggregated ONU report in Kbytes (solid) and the predicted aggregated ONU report (dashed). The bottom plot shows the prediction error (i.e., differences between the values of the actual ONU reports and the predicted reports over the time). From this figure it can be seen that training FANN with the model settings given in Table 2 can achieve a prediction error very close to the desired error used during the learning process (i.e., \((-1\)-\(1)*10^{-7}\)). The FANN model settings given in Table 2 are obtained by applying the model selection method reported in [25]. This method is based on constructing a neural network model with a different number of hidden layers and neurons and evaluating the performance of the network in terms of prediction  
Figure 6: The prediction accuracy performance of FANN module trained over a period of 10 ms with different number of layers and hidden neurons: (**a**) Two hidden layers with three neurons in first layer and two in second layer; (**b**) one hidden layer with two neurons; (**c**) two hidden layers two neurons on each layer; (**d**) three hidden layers with four neurons in the first layer and two in the second layer. error; then, choosing the model settings that achieve prediction error close to the desired error required by the problem we are going to solve. In our simulation experiment, to evaluate the appropriate model setting for our prediction problem, we started by selecting a small number of hidden layers and neurons and evaluating the performance of the network using them; then we increased the number and observed the prediction error change. We began with one hidden layer and two neurons and noticed that the model failed to converge to the desired error (see the prediction error in Figure 6b). Then, we increased the number of hidden layers to two, with two neurons in each layer, and noticed an improvement in the prediction error toward the desired error (see Figure 6c). After that, we kept the number of hidden layers to two and increased the number of neurons in the first hidden layer to three; then, we obtained the prediction error as depicted in Figure 6a. We again noticed an increase in the prediction error when we further increased the number of neurons in the first hidden layer to four, as shown in Figure 6d. For this reason, we adopted the model settings given in Table 2 to conduct the other simulation experiments in this paper. Figure 7 shows the performance evaluation of three algorithms in terms of upstream delay, utilization, packet loss rate, and jitter. Figure 7a shows the delay performance comparison between the three algorithms.