Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

art1

Create and train an art1 network


Description

Adaptive resonance theory (ART) networks perform clustering by finding prototypes. They are mainly designed to solve the stability/plasticity dilemma (which is one of the central problems in neural networks) in the following way: new input patterns may generate new prototypes (plasticity), but patterns already present in the net (represented by their prototypes) are only altered by similar new patterns, not by others (stability). ART1 is for binary inputs only, if you have real-valued input, use art2 instead.

Learning in an ART network works as follows: A new input is intended to be classified according to the prototypes already present in the net. The similarity between the input and all prototypes is calculated. The most similar prototype is the winner. If the similarity between the input and the winner is high enough (defined by a vigilance parameter), the winner is adapted to make it more similar to the input. If similarity is not high enough, a new prototype is created. So, at most the winner is adapted, all other prototypes remain unchanged.

Usage

art1(x, ...)

## Default S3 method:
art1(x, dimX, dimY, f2Units = nrow(x), maxit = 100,
  initFunc = "ART1_Weights", initFuncParams = c(1, 1),
  learnFunc = "ART1", learnFuncParams = c(0.9, 0, 0),
  updateFunc = "ART1_Stable", updateFuncParams = c(0),
  shufflePatterns = TRUE, ...)

Arguments

x

a matrix with training inputs for the network

...

additional function parameters (currently not used)

dimX

x dimension of inputs and outputs

dimY

y dimension of inputs and outputs

f2Units

controls the number of clusters assumed to be present

maxit

maximum of iterations to learn

initFunc

the initialization function to use

initFuncParams

the parameters for the initialization function

learnFunc

the learning function to use

learnFuncParams

the parameters for the learning function

updateFunc

the update function to use

updateFuncParams

the parameters for the update function

shufflePatterns

should the patterns be shuffled?

Details

The architecture of an ART network is the following: ART is based on the more general concept of competitive learning. The networks have two fully connected layers (in both directions), the input/comparison layer and the recognition layer. They propagate activation back and forth (resonance). The units in the recognition layer have lateral inhibition, so that they show a winner-takes-all behaviour, i.e., the unit that has the highest activation inhibits activation of other units, so that after a few cycles its activation will converge to one, whereas the other units activations converge to zero. ART stabilizes this general learning mechanism by the presence of some special units. For details refer to the referenced literature.

The default initialization function, ART1_Weights, is the only one suitable for ART1 networks. It has two parameters, which are explained in the SNNS User Manual pp.189. A default of 1.0 for both is usually fine. The only learning function suitable for ART1 is ART1. Update functions are ART1_Stable and ART1_Synchronous. The difference between the two is that the first one updates until the network is in a stable state, and the latter one only performs one update step. Both the learning function and the update functions have one parameter, the vigilance parameter.

In its current implementation, the network has two-dimensional input. The matrix x contains all (one dimensional) input patterns. Internally, every one of these patterns is converted to a two-dimensional pattern using parameters dimX and dimY. The parameter f2Units controls the number of units in the recognition layer, and therewith the maximal amount of clusters that are assumed to be present in the input patterns.

A detailed description of the theory and the parameters is available from the SNNS documentation and the other referenced literature.

Value

an rsnns object. The fitted.values member of the object contains a list of two-dimensional activation patterns.

References

Carpenter, G. A. & Grossberg, S. (1987), 'A massively parallel architecture for a self-organizing neural pattern recognition machine', Comput. Vision Graph. Image Process. 37, 54–115.

Grossberg, S. (1988), Adaptive pattern classification and universal recoding. I.: parallel development and coding of neural feature detectors, MIT Press, Cambridge, MA, USA, chapter I, pp. 243–258.

Herrmann, K.-U. (1992), 'ART – Adaptive Resonance Theory – Architekturen, Implementierung und Anwendung', Master's thesis, IPVR, University of Stuttgart. (in German)

Zell, A. et al. (1998), 'SNNS Stuttgart Neural Network Simulator User Manual, Version 4.2', IPVR, University of Stuttgart and WSI, University of Tübingen. http://www.ra.cs.uni-tuebingen.de/SNNS/welcome.html

Zell, A. (1994), Simulation Neuronaler Netze, Addison-Wesley. (in German)

See Also

Examples

## Not run: demo(art1_letters)
## Not run: demo(art1_lettersSnnsR)


data(snnsData)
patterns <- snnsData$art1_letters.pat

inputMaps <- matrixToActMapList(patterns, nrow=7)
par(mfrow=c(3,3))
for (i in 1:9) plotActMap(inputMaps[[i]])

model <- art1(patterns, dimX=7, dimY=5)
encodeClassLabels(model$fitted.values)

RSNNS

Neural Networks using the Stuttgart Neural Network Simulator (SNNS)

v0.4-12
LGPL (>= 2) | file LICENSE
Authors
Christoph Bergmeir [aut, cre, cph], José M. Benítez [ths], Andreas Zell [ctb] (Part of original SNNS development team), Niels Mache [ctb] (Part of original SNNS development team), Günter Mamier [ctb] (Part of original SNNS development team), Michael Vogt [ctb] (Part of original SNNS development team), Sven Döring [ctb] (Part of original SNNS development team), Ralf Hübner [ctb] (Part of original SNNS development team), Kai-Uwe Herrmann [ctb] (Part of original SNNS development team), Tobias Soyez [ctb] (Part of original SNNS development team), Michael Schmalzl [ctb] (Part of original SNNS development team), Tilman Sommer [ctb] (Part of original SNNS development team), Artemis Hatzigeorgiou [ctb] (Part of original SNNS development team), Dietmar Posselt [ctb] (Part of original SNNS development team), Tobias Schreiner [ctb] (Part of original SNNS development team), Bernward Kett [ctb] (Part of original SNNS development team), Martin Reczko [ctb] (Part of original SNNS external contributors), Martin Riedmiller [ctb] (Part of original SNNS external contributors), Mark Seemann [ctb] (Part of original SNNS external contributors), Marcus Ritt [ctb] (Part of original SNNS external contributors), Jamie DeCoster [ctb] (Part of original SNNS external contributors), Jochen Biedermann [ctb] (Part of original SNNS external contributors), Joachim Danz [ctb] (Part of original SNNS development team), Christian Wehrfritz [ctb] (Part of original SNNS development team), Patrick Kursawe [ctb] (Contributors to SNNS Version 4.3), Andre El-Ama [ctb] (Contributors to SNNS Version 4.3)
Initial release
2019-09-16

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.