b) Recurrent networks
The forward pass first requires calling the function MLP: :resetNet(), followed by the presentation of each time segment in the pattern to the network. MLP: :resetNet() sets all outputs of the context layer and all previous outputs and deltas of the first hidden layer to zero. The function MLP: : recurrentBackprop() is then called. This operates in an similar way to MLP: :backprop() with the following exceptions:
- The function Node: :calcRecurrentDelta() is called for each node in the first hidden layer. This calculates the deltas for each time segment for a particular node. (in other words unfolding the network in time, see section 3.4.3).
- The weights for connections from the input nodes and context nodes are calculated using a summation of all the Dws calculated for each time segment (equation 6).
5.3.1.4 Identification
Identification is performed on a break as a whole, in other words a complete .rcy file. This happens in the function MLP: :identify(), which carries out a forward pass for each drum hit. The results at the output nodes of the MLP are stored in the TrainingVects struct for that break, in order that the results can be further classified by the postprocessing stage. In order to see what sort of classification has been performed by the MLP, the value of all MLP outputs above the classification threshold are displayed, alongside the drum type to which they correspond.
5.3.2. Kohonen SOM
A representation of the SOM class can be seen in appendix A. Each node in the map has also been represented by a member object, the SOMNeuron class, but due to the reduced complexity of network connections and the learning algorithms, this class only needs to contain the weight vector for the node it represents.
5.3.2.1. Initialisation
When the SOM constructor is called, all parameters and vectors relating to the clustering algorithms are initialised. In addition, the weight vectors for each node are initialised to random values (between -0.5 and 0.5) and the squares of the distances between all nodes are calculated.
|