org.joone.engine
Class KohonenSynapse

java.lang.Object
  extended by org.joone.engine.Synapse
      extended by org.joone.engine.FullSynapse
          extended by org.joone.engine.KohonenSynapse
All Implemented Interfaces:
java.io.Serializable, java.util.EventListener, InputPatternListener, Learnable, LearnableSynapse, NeuralElement, NeuralNetListener, OutputPatternListener, Inspectable

public class KohonenSynapse
extends FullSynapse
implements NeuralNetListener

This is an unsupervised Kohonen Synapse which is a Self Organising Map.

This KohonenSynapse works in conjunction with the next layer which should implement a SOM strategy such as a GuassianLayer or WTALayer (Winner Takes All). This synapse should connect to one of these layers, without a SOM Strategy in the next layer this component will not function correctly.

This KohonenSynapse takes a pattern from the previous layer, calculates the distance between the input vector and the weights and passes this on to the next layer. In the learning phase the next layer should calculate the distance fall off between the winner and all other nodes (1.0 being the closest distance and 0.0 being furthest away and not being considered near to the winner). These distances are passed back to this KohonenSynapse and used to adjust the weights.

The weights are adjusted based on the current learning rate and distance fall off.

At each epoch/cycel the learning rate is adjusted in the following way ...

If the current cycle is within the ordering phase then the learning rate is set to

User setup learning rate * exp(-(double)(Current Cycle/Time Constant)).

See Also:
Serialized Form

Field Summary
(package private)  double currentLearningRate
           
 
Fields inherited from class org.joone.engine.Synapse
array, b_pattern, bitems, bouts, count, enabled, fwdLock, inps, items, learnable, m_batch, m_pattern, myLearner, outs, revLock
 
Constructor Summary
KohonenSynapse()
          The default constructor for the KohonenSynapse class.
 
Method Summary
protected  void backward(double[] pattern)
          Adjusts the weights of this Kohonen Synapse according to the neighborhood fall off distance calculated by the next layer.
 java.util.TreeSet check()
          Check that there are no errors or problems with the properties of this KohonenSynapse.
 void cicleTerminated(NeuralNetEvent e)
          Changes the learning rate for this synapse depending in the current epoch number.
 void errorChanged(NeuralNetEvent e)
          Not implemented.
protected  void forward(double[] pattern)
          Fowards the euclidean distance squared between the input vector and the weight vector to the next layer.
 Learner getLearner()
          Deprecated. - Used only for backward compatibility
 int getOrderingPhase()
          Getter for property orderingPhase.
 double getTimeConstant()
          Getter for property timeConstant.
 void netStarted(NeuralNetEvent e)
          Initialises any shape sizes such as circular radius and time constant before possible training.
 void netStopped(NeuralNetEvent e)
          Not implemented.
 void netStoppedError(NeuralNetEvent e, java.lang.String error)
          Not implemented.
 void setMonitor(Monitor newMonitor)
          Sets the Monitor object of the synapse
 void setOrderingPhase(int orderingPhase)
          Setter for property orderingPhase.
 void setTimeConstant(double timeConstant)
          Setter for property timeConstant.
 
Methods inherited from class org.joone.engine.FullSynapse
setArrays, setDimensions
 
Methods inherited from class org.joone.engine.Synapse
addNoise, canCountSteps, fwdGet, fwdPattern_consume, fwdPattern_produce, fwdPut, getCount, getFwdLock, getIgnoreBefore, getInputDimension, getLearningRate, getMomentum, getMonitor, getName, getOutputDimension, getRevLock, getSynapseNameSafely, getWeights, init, initLearner, InspectableTitle, Inspections, isEnabled, isInputFull, isLoopBack, isOutputFull, randomize, readResolve, reset, revGet, revPattern_consume, revPattern_produce, revPut, setEnabled, setIgnoreBefore, setInputDimension, setInputFull, setLearningRate, setLoopBack, setMomentum, setName, setOutputDimension, setOutputFull, setWeights, warnLogger, warnLogger
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.joone.engine.LearnableSynapse
getInputDimension, getLearningRate, getMomentum, getOutputDimension, getWeights, setWeights
 
Methods inherited from interface org.joone.engine.Learnable
getMonitor, initLearner
 

Field Detail

currentLearningRate

double currentLearningRate
Constructor Detail

KohonenSynapse

public KohonenSynapse()

The default constructor for the KohonenSynapse class.

Method Detail

backward

protected void backward(double[] pattern)

Adjusts the weights of this Kohonen Synapse according to the neighborhood fall off distance calculated by the next layer.

Overrides:
backward in class FullSynapse
Parameters:
pattern - The pattern with the distance fall off's between the winner and all other nodes. (1.0 is the winner through 0.0 having no similarity to the original input vector)

forward

protected void forward(double[] pattern)

Fowards the euclidean distance squared between the input vector and the weight vector to the next layer. If the learning phase is currently active then the next layer should process this and pass back the distance fall off between the winning output and all other outputs.

Overrides:
forward in class FullSynapse
Parameters:
pattern - The pattern containg the euclidean distance squared between each weight and the input.

setMonitor

public void setMonitor(Monitor newMonitor)
Sets the Monitor object of the synapse

Specified by:
setMonitor in interface NeuralElement
Overrides:
setMonitor in class Synapse
Parameters:
newMonitor - neural.engine.Monitor

cicleTerminated

public void cicleTerminated(NeuralNetEvent e)

Changes the learning rate for this synapse depending in the current epoch number. The learning rate is changed in the following way ...

User setup learning rate * exp(-(double)(Current Cycle/Time Constant)).

Specified by:
cicleTerminated in interface NeuralNetListener
Parameters:
e - The original Net Event.

errorChanged

public void errorChanged(NeuralNetEvent e)
Not implemented.

Specified by:
errorChanged in interface NeuralNetListener
Parameters:
e - The original Net Event.

netStarted

public void netStarted(NeuralNetEvent e)
Initialises any shape sizes such as circular radius and time constant before possible training.

Specified by:
netStarted in interface NeuralNetListener
Parameters:
e - The original Net Event.

netStopped

public void netStopped(NeuralNetEvent e)
Not implemented.

Specified by:
netStopped in interface NeuralNetListener
Parameters:
e - The original Net Event.

netStoppedError

public void netStoppedError(NeuralNetEvent e,
                            java.lang.String error)
Not implemented.

Specified by:
netStoppedError in interface NeuralNetListener
Parameters:
e - The original Net Event.
error - The error that caused this NetStoppedError event.

check

public java.util.TreeSet check()

Check that there are no errors or problems with the properties of this KohonenSynapse.

Specified by:
check in interface NeuralElement
Overrides:
check in class Synapse
Returns:
The TreeSet of errors / problems if any.
See Also:
InputPaternListener, OutputPaternListener

getOrderingPhase

public int getOrderingPhase()
Getter for property orderingPhase.

Returns:
Value of property orderingPhase.

setOrderingPhase

public void setOrderingPhase(int orderingPhase)
Setter for property orderingPhase.

Parameters:
orderingPhase - New value of property orderingPhase.

getTimeConstant

public double getTimeConstant()
Getter for property timeConstant.

Returns:
Value of property timeConstant.

setTimeConstant

public void setTimeConstant(double timeConstant)
Setter for property timeConstant.

Parameters:
timeConstant - New value of property timeConstant.

getLearner

public Learner getLearner()
Deprecated. - Used only for backward compatibility

Description copied from class: Synapse
Returns the appropriate Learner object for this class depending on the Monitor.learningMode property value

Specified by:
getLearner in interface Learnable
Overrides:
getLearner in class FullSynapse
Returns:
the Learner object if applicable, otherwise null
See Also:
Learnable.getLearner()


Submit Feedback to pmarrone@users.sourceforge.net