of multilayer perceptrons. It is essentially a gradient search technique that minimizes a cost function between the desired outputs and those generated by the net. The aim is to establish a functional relationship for a given problem by adjusting the weightings between neurons. After selecting some initial values for Output Input FIGURE 8.7 A perceptron. Network Data and Optimization OUTPUT Output layer second hidden layer First hidden layer INPUT FIGURE 8.8 Basic deep learner for event prediction. the weights and internal thresholds, input/output patterns are presented to the network repeatedly and, on each presentation, the states of all neurons are computed starting from the bottom layer and moving upward until the states of the neurons in the output layer are determined. At this level, an error is estimated by computing the difference in the values between the outputs of the network and the desired outputs. The variables of the network are then adjusted by propagating the errors backwards from the top layer to the first layer. The application of deep learning to Network Cloud will be described in a later section. 8.2.5.4 Open Source Distributed Processing Toolkits for ML There are a variety of open source toolkits available today that attempt to provide all types of ML under one umbrella (supervised, unsupervised, deep, etc.). One of the earliest toolkits originally produced with MapReduce was Mahout, whereas SPARK now has MLlib, and some of the newer toolkits like H2O and Deeplearning4j, start to incorporate deep learning approaches in their librar- ies as well. These are not exhaustive, and no doubt, further developments will be coming. Table 8.5 provides a summarized view of various functionalities of these toolkits at the time of this writing. Depending on one's application, a different ML toolkit may be preferable; however, the newer and more active communities are currently in the SPARK and deep learning areas. 8.3 BIG DATA MEETS NETWORK CLOUD While the Network Cloud is about virtualizing the network by