This class implements competitive training, which would be used in a winner-take-all neural network, such as the self organizing map (SOM). This is an unsupervised training method, no ideal data is needed on the training set. If ideal data is provided, it will be ignored. Training is done by looping over all of the training elements and calculating a "best matching unit" (BMU). This BMU output neuron is then adjusted to better "learn" this pattern. Additionally, this training may be applied to othr "nearby" output neurons. The degree to which nearby neurons are update is defined by the neighborhood function. A neighborhood function is required to determine the degree to which neighboring neurons (to the winning neuron) are updated by each training iteration. Because this is unsupervised training, calculating an error to measure progress by is difficult. The error is defined to be the "worst", or longest, Euclidean distance of any of the BMU's. This value should be minimized, as learning progresses. Because only the BMU neuron and its close neighbors are updated, you can end up with some output neurons that learn nothing. By default these neurons are forced to win patterns that are not represented well. This spreads out the workload among all output neurons. This feature is used by default, but can be disabled by setting the "forceWinner" property.
Inheritance: BasicTraining, ILearningRate
 /// <summary>
 /// Construct a BestMatchingUnit class.  The training class must be provided.
 /// </summary>
 /// <param name="training">The parent class.</param>
 public BestMatchingUnit(CompetitiveTraining training)
 {
     this.training = training;
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Construct a BestMatchingUnit class.  The training class must be provided.
 /// </summary>
 /// <param name="training">The parent class.</param>
 public BestMatchingUnit(CompetitiveTraining training)
 {
     this.training = training;
 }