learnsom
(To be removed) Self-organizing map weight learning function
learnsom will be removed in a future release. For more information,
see Transition Legacy Neural Network Code to dlnetwork Workflows.
For advice on updating your code, see Version History.
Syntax
[dW,LS] = learnsom(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
info = learnsom('code')
Description
learnsom is the self-organizing map weight learning
function.
[dW,LS] = learnsom(W,P,Z,N,A,T,E,gW,gA,D,LP,LS) takes several
inputs,
W |
|
P |
|
Z |
|
N |
|
A |
|
T |
|
E |
|
gW |
|
gA |
|
D |
|
LP | Learning parameters, none, |
LS | Learning state, initially should be =
|
and returns
dW |
|
LS | New learning state |
Learning occurs according to learnsom’s learning parameters, shown
here with their default values.
LP.order_lr | 0.9 | Ordering phase learning rate |
LP.order_steps | 1000 | Ordering phase steps |
LP.tune_lr | 0.02 | Tuning phase learning rate |
LP.tune_nd | 1 | Tuning phase neighborhood distance |
info = learnsom(' returns useful
information for each code')code character vector:
'pnames' | Names of learning parameters |
'pdefaults' | Default learning parameters |
'needg' | Returns 1 if this function uses |
Examples
Here you define a random input P, output A, and
weight matrix W for a layer with a two-element input and six neurons.
You also calculate positions and distances for the neurons, which are arranged in a
2-by-3 hexagonal pattern. Then you define the four learning parameters.
p = rand(2,1); a = rand(6,1); w = rand(6,2); pos = hextop(2,3); d = linkdist(pos); lp.order_lr = 0.9; lp.order_steps = 1000; lp.tune_lr = 0.02; lp.tune_nd = 1;
Because learnsom only needs these values to calculate a weight
change (see “Algorithm” below), use them to do so.
ls = []; [dW,ls] = learnsom(w,p,[],[],a,[],[],[],[],d,lp,ls)
Algorithms
learnsom calculates the weight change dW for a
given neuron from the neuron’s input P, activation
A2, and learning rate LR:
dw = lr*a2*(p'-w)
where the activation A2 is found from the layer output
A, neuron distances D, and the current
neighborhood size ND:
a2(i,q) = 1, if a(i,q) = 1 = 0.5, if a(j,q) = 1 and D(i,j) <= nd = 0, otherwise
The learning rate LR and neighborhood size NS
are altered through two phases: an ordering phase and a tuning phase.
The ordering phases lasts as many steps as LP.order_steps. During
this phase LR is adjusted from LP.order_lr down to
LP.tune_lr, and ND is adjusted from the
maximum neuron distance down to 1. It is during this phase that neuron weights are
expected to order themselves in the input space consistent with the associated neuron
positions.
During the tuning phase LR decreases slowly from
LP.tune_lr, and ND is always set to
LP.tune_nd. During this phase the weights are expected to spread
out relatively evenly over the input space while retaining their topological order,
determined during the ordering phase.
Version History
Introduced before R2006aSee Also
Time Series
Modeler | fitrnet (Statistics and Machine Learning Toolbox) | fitcnet (Statistics and Machine Learning Toolbox) | trainnet | trainingOptions | dlnetwork