During the learning phase the weights in the FFNet will be modified. All weights are modified in such a way that when a pattern is presented, the output unit with the correct category, hopefully, will have the largest output value.
The FFNet uses a supervised learning algorithm: besides the input pattern, the neural net also needs to know to what category the pattern belongs. Learning proceeds as follows: a pattern is presented at the inputs. The pattern will be transformed in its passage through the layers of the network until it reaches the output layer. The units in the output layer all belong to a different category. The outputs of the network as they are now are compared with the outputs as they ideally would have been if this pattern were correctly classified: in the latter case the unit with the correct category would have had the largest output value and the output values of the other output units would have been very small. On the basis of this comparison all the connection weights are modified a little bit to guarantee that, the next time this same pattern is presented at the inputs, the value of the output unit that corresponds with the correct category is a little bit higher than it is now and that, at the same time, the output values of all the other incorrect outputs are a little bit lower than they are now. (The differences between the actual outputs and the idealized outputs are propagated back from the top layer to lower layers to be used at these layers to modify connection weights. This is why the term backpropagation network is also often used to describe this type of neural network.)
If you perform the procedure above once for every pattern and category pair in your data set you have performed one epoch of learning.
The hope is that eventually, probably after many epochs, the neural net will come to remember these pattern-category pairs. You even hope that the neural net, when the learning phase has terminated, will be able to generalize and has learned to classify correctly any unknown pattern presented to it.
Because real-life data often contains noise as well as partly contradictory information, these hopes can be fulfilled only partly.
For learning you need to select three different objects together: a FFNet (the classifier), a PatternList (the inputs) and a Categories (the correct outputs).
In general, this question is hard to answer. It depends on the size of the neural network, the number of patterns to be learned, the number of epochs, the tolerance of the minimizer and the speed of your computer, how much computing time the learning phase may take.
If computing time becomes excessive in your interactive environment then consider using the powerful scripting facilities in Praat to process your learning job as a batch job.
© djmw, April 28, 2004