1. An artificial neural network, implemented on one or more computers, comprising a plurality of neurons arranged in layers, the artificial neural network being arranged to receive a new neuron into a layer of the artificial neural network during training, the new neuron being added to the neural network when no other neuron in that layer for a selected output can learn a relationship associated with an input vector of a data set being learnt, wherein: the new neuron being updated with both the relationship which could not be learnt by any other neuron in that layer and a modified data set from a last trained neuron in that layer that contributes to the selected output of the neural network, wherein the modified data set is formed by copying all learnt relationships from the last trained neuron into the new neuron and modifying the copied relationship based upon the relationship which could not be learnt by any other neuron in that layer; and, one or more output neurons being updated to accept input from the new neuron.