Main Content

# learnk

Kohonen weight learning function

## Syntax

```[dW,LS] = learnk(W,P,Z,N,A,T,E,gW,gA,D,LP,LS) info = learnk('code') ```

## Description

`learnk` is the Kohonen weight learning function.

`[dW,LS] = learnk(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)` takes several inputs,

 `W` `S`-by-`R` weight matrix (or `S`-by-`1` bias vector) `P` `R`-by-`Q` input vectors (or `ones(1,Q)`) `Z` `S`-by-`Q` weighted input vectors `N` `S`-by-`Q` net input vectors `A` `S`-by-`Q` output vectors `T` `S`-by-`Q` layer target vectors `E` `S`-by-`Q` layer error vectors `gW` `S`-by-`R` gradient with respect to performance `gA` `S`-by-`Q` output gradient with respect to performance `D` `S`-by-`S` neuron distances `LP` Learning parameters, none, `LP = []` `LS` Learning state, initially should be = `[]`

and returns

 `dW` `S`-by-`R` weight (or bias) change matrix `LS` New learning state

Learning occurs according to `learnk`’s learning parameter, shown here with its default value.

 `LP.lr - 0.01` Learning rate

`info = learnk('code')` returns useful information for each `code` character vector:

 `'pnames'` Names of learning parameters `'pdefaults'` Default learning parameters `'needg'` Returns 1 if this function uses `gW` or `gA`

## Examples

Here you define a random input `P`, output `A`, and weight matrix `W` for a layer with a two-element input and three neurons. Also define the learning rate `LR`.

```p = rand(2,1); a = rand(3,1); w = rand(3,2); lp.lr = 0.5; ```

Because `learnk` only needs these values to calculate a weight change (see “Algorithm” below), use them to do so.

```dW = learnk(w,p,[],[],a,[],[],[],[],[],lp,[]) ```

## Network Use

To prepare the weights of layer `i` of a custom network to learn with `learnk`,

1. Set `net.trainFcn` to `'trainr'`. (`net.trainParam` automatically becomes `trainr`’s default parameters.)

2. Set `net.adaptFcn` to `'trains'`. (`net.adaptParam` automatically becomes `trains`’s default parameters.)

3. Set each `net.inputWeights{i,j}.learnFcn` to `'learnk'`.

4. Set each `net.layerWeights{i,j}.learnFcn` to `'learnk'`. (Each weight learning parameter property is automatically set to `learnk`’s default parameters.)

To train the network (or enable it to adapt),

1. Set `net``.``trainParam` (or `net.adaptParam`) properties as desired.

2. Call `train` (or `adapt`).

## Algorithms

`learnk` calculates the weight change `dW` for a given neuron from the neuron’s input `P`, output `A`, and learning rate `LR` according to the Kohonen learning rule:

`dw = lr*(p'-w)`, if `a ~= 0`; `= 0`, otherwise

## References

Kohonen, T., Self-Organizing and Associative Memory, New York, Springer-Verlag, 1984

## See Also

Introduced before R2006a

Download ebook