# Combination of Self Organizing Maps and Growing Neural Gas

Lukáš Vojáček, Pavla Dráždilová, Jiří Dvorský

► To cite this version:

Lukáš Vojáček, Pavla Dráždilová, Jiří Dvorský. Combination of Self Organizing Maps and Growing Neural Gas. 13th IFIP International Conference on Computer Information Systems and Industrial Management (CISIM), Nov 2014, Ho Chi Minh City, Vietnam. pp.100-111, 10.1007/978-3-662-45237-0_11. hal-01405567

HAL Id: hal-01405567

https://inria.hal.science/hal-01405567

Submitted on 30 Nov 2016

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_1.png" /></figure>

Distributed under a Creative Commons Attribution 4.0 International License
# Combination of Self Organizing Maps and Growing Neural Gas

Lukáš Vojáček<fnref n="1" />,<fnref n="2" />, Pavla Dráždilová<fnref n="2" />, and Jiří Dvorský<fnref n="2" />

pavla.drazdilova@vsb.cz, jiri.dvorsky@vsb.cz, lukas.bojacek@vsb.cz

**Abstract.** The paper deals with the high dimensional data clustering problem. One possible way to cluster this kind of data is based on Artificial Neural Networks (ANN) such as Growing Neural Gas (GNG) or Self Organizing Maps (SOM). The learning phase of ANN, which is time-consuming especially for large high-dimensional datasets, is the main drawback of this approach to data clustering. Parallel modification, Growing Neural Gas with pre-processing by Self Organizing Maps, and its implementation on the HPC cluster is presented in the paper. Some experimental results are also presented.

**Keywords:** self organizing maps, growing neural gas, high-dimensional dataset, high performance computing

## 1 Introduction

Recently, the issue of high-dimensional data clustering has arisen together with the development of information and communication technologies which support growing opportunities to process large data collections. High-dimensional data collections are commonly available in areas like medicine, biology, information retrieval, web analyse, social network analyse, image processing, financial transaction analysis and many others.

Two main challenges should be solved to process high-dimensional data collections. One of the problems is the fast growth of computational complexity with respect to growing data dimensionality. The second one is specific similarity measurement in a high-dimensional space. Beyer et al. presented in [1] for any point in a high-dimensional space the expected distance, computed by the Euclidean distance to the closest and to the farthest point, shrinks with growing dimensionality. These two reasons reduce the effectiveness of clustering algorithms on the above-mentioned high-dimensional data collections in many actual applications.

The authors propose an effective data clustering algorithm which is based on *Growing Neural Gas* (GNG) [9] and *Self Organizing Maps* (SOM). The computational complexity is resolved by the parallel implementation of GNG with

<footnote n="1">¹ IT4Innovations, VŠB - Technical University of Ostrava,
17. listopadu 15/2172, 708 33 Ostrava, Czech Republic</footnote>

<footnote n="2">² Department of Computer Science,
VŠB – Technical University of Ostrava, 17. listopadu 15/2172,
708 33 Ostrava, Czech Republic</footnote>
pre-processing by SOM. Some technical problems have to be resolved in order to
effectively train such kind of neural network using an *High Performance Comput-
ing* (HPC) cluster with MPI. In our previous paper [14] we proposed a method
of parallel implementation of GNG by using only MPI, but there were limitation
to effective parallelization.

## 2 Artificial Neural Networks

In this section we will describe two type of neural network, the first is Self
Organizing Maps and the second is Growing Neural Gas and then we present a
combination of SOM and GNG.

2.1 Self Organizing Maps

*Self Organizing Maps* (SOMs), also known as Kohonen maps, were proposed by Teuvo Kohonen in 1982 [6]. SOM is a kind of artificial neural network that is trained by unsupervised learning. Using SOM, the input space of training samples can be represented in a lower-dimensional (often two-dimensional) space [7], called a *map*. Such a model is efficient in structure visualization due to its feature of topological preservation using a neighbourhood function.

SOM consists of two layers of neurons: an *input layer* that receives and transmits the input information, and an *output layer*, the map that represents the output characteristics. The output layer is commonly organized as a two-dimensional rectangular grid of nodes, where each node corresponds to one neuron. Both layers are feed-forward connected. Each neuron in the input layer is connected to each neuron in the output layer. A real number, or weight, is assigned to each of these connections.

## 2.2 Growing Neural Gas

The representation of Growing Neural Gas is an undirected graph which need
not be connected. Generally, there are no restrictions to the topology. The graph
is generated and continuously updated by competitive Hebbian Learning [8, 10].
According to the pre-set conditions, new neurons are automatically added and
connections between neurons are subject to time and can be removed. GNG
can be used for vector quantization by finding the code-vectors in clusters [5],
biologically influenced [12], image compression, disease diagnosis.

GNG works by modifying the graph, where the operations are the addition
and removal of neurons and edges between neurons.

To understand the functioning of GNG, it is necessary to define the learning
algorithm. The algorithm described by Algorithm 1 is based on the original
algorithm [4] [5], but it is modified for better continuity in the SOM algorithm.

*Remark* The notation used in the paper is briefly listed in Table 1.
<table><caption>**Table 1.** Notation used in the paper</caption><thead><tr><th>Symbol</th><th>Description</th></tr></thead><tbody><tr><td><i>M</i></td><td>Number of input vectors</td></tr><tr><td><i>n</i></td><td>Dimension of input vectors, number of input neurons, dimension of weight vectors in GNG output layer neurons</td></tr><tr><td><i>N</i></td><td>Current number of neurons in GNG output layer</td></tr><tr><td><i>N</i><sub>max</sub></td><td>Maximum allowed number of neurons in GNG output layer</td></tr><tr><td><b>n</b><sub><i>i</i></sub></td><td><i>i</i>-th input neuron, <i>i</i> = 1, 2, ..., <i>n</i></td></tr><tr><td><b>N</b><sub><i>i</i></sub></td><td><i>i</i>-th output neuron, <i>i</i> = 1, 2, ..., <i>N</i></td></tr><tr><td><b>e</b><sub><i>ij</i></sub></td><td>edge between neurons <b>N</b><sub><i>i</i></sub> and <b>N</b><sub><i>j</i></sub> for some <i>i</i>, <i>j</i> = 1, ..., <i>N</i>, where <i>i</i> ≠ <i>j</i>.</td></tr><tr><td><b>E</b></td><td>set of all edges in GNG</td></tr><tr><td><b>G</b></td><td>undirected graph describing topology of GNG, <i>G</i>(<b>N</b><sub>1</sub>, ..., <b>N</b><sub><i>N</i></sub>), <b>E</b></td></tr><tr><td><i>T</i></td><td>Number of epochs</td></tr><tr><td><i>t</i></td><td>Current epoch, <i>t</i> = 1, 2, ..., <i>T</i></td></tr><tr><td><b>X</b></td><td>Set of input vectors, <b>X</b> ⊂ ℝ<sup><i>n</i></sup></td></tr><tr><td><b>x</b>(<i>t</i>)</td><td>Current input vector in epoch <i>t</i>, arbitrarily selected vector from set <b>X</b><br><b>x</b>(<i>t</i>) ∈ <b>X</b>, <b>x</b>(<i>t</i>) = (x<sub>1</sub>, x<sub>2</sub>, ..., x<sub><i>n</i></sub>)</td></tr><tr><td><b>w</b><sub><b>k</b></sub>(<i>t</i>)</td><td>Weight vector of neuron <b>N</b><sub><i>k</i></sub>, <i>k</i> = 1, 2, ..., <i>N</i><br><b>w</b><sub><b>k</b></sub>(<i>t</i>) ∈ ℝ<sup><i>n</i></sup>, <b>w</b><sub><b>k</b></sub>(<i>t</i>) = (w<sub>k1</sub>, w<sub>k2</sub>, ..., w<sub>kn</sub>)</td></tr><tr><td><b>N</b><sub>c<sub>1</sub></sub></td><td>The first Best Matching Unit (<i>BMU</i><sub>1</sub>), winner of learning competition</td></tr><tr><td><b>N</b><sub>c<sub>2</sub></sub></td><td>The second Best Matching Unit (<i>BMU</i><sub>2</sub>), second best matching neuron in learning competition</td></tr><tr><td><i>l</i><sub>c<sub>1</sub></sub></td><td>Learning factor of <i>BMU</i><sub>1</sub></td></tr><tr><td><i>l</i><sub>nc<sub>1</sub></sub></td><td>Learning factor of <i>BMU</i><sub>1</sub> neighbours</td></tr><tr><td><i>e</i><sub><i>i</i></sub></td><td>Local error of output neuron <b>N</b><sub><i>i</i></sub>, <i>i</i> = 1, 2, ..., <i>N</i></td></tr><tr><td><b>B</b></td><td>Number of clusters (<i>C</i>)</td></tr><tr><td><b>C</b><sub><i>i</i></sub></td><td><i>i</i>th cluster witch contains similar input vectors</td></tr><tr><td><b>m</b><sub><i>i</i></sub></td><td>Number of input vectors in cluster <b>C</b><sub><i>i</i></sub></td></tr><tr><td><b>Z</b><sub><i>i</i></sub></td><td>Centroid of cluster <b>C</b><sub><i>i</i></sub></td></tr><tr><td><i>β</i></td><td>Neuron error reduction factor</td></tr><tr><td><i>γ</i></td><td>Interval of input patterns to add a new neuron</td></tr><tr><td><i>δ</i>(<b>C</b><sub><i>i</i></sub>, <b>C</b><sub><i>j</i></sub>)</td><td>Distance metric between <b>C</b><sub><i>i</i></sub> and <b>C</b><sub><i>j</i></sub></td></tr><tr><td><i>a</i><sub>max</sub></td><td>Maximum edge age</td></tr><tr><td><b>BMU</b></td><td>Best match unit</td></tr><tr><td><b>d</b>(<b>x</b>, <b>y</b>)</td><td>Distance between two vectors</td></tr><tr><td><b>epoch</b></td><td>During training phase are all input data one time used</td></tr><tr><td><i>p</i>, <i>q</i></td><td>Natural numbers</td></tr></tbody></table>

**Algorithm 1** Growing Neural Gas algorithm

1. Initialization of network. Two neurons $N_1$ and $N_2$ are created, $E = \{e_{12}\}$. Weight vectors $w_1(t)$ and $w_2(t)$ are initialized to random values $w_{kj}(t) \in [0, 1] \quad \forall j = 1, \dots, n, \quad k = 1, 2$.

2. Select arbitrary unused input data vector.

3. Perform the one learning iteration.

4. Reduce error value $e_i$ for all neurons $N_i$ using factor $\beta$.

5. Returns to step 2, until all input data vectors have been used.

6. If $t < T$ return to step 2.
## 2.3 Combination of SOM and GNG

One of the problems with parallelization which we described in the previous paper [14] is that when adding a new neuron it is necessary to send, in the worst scenario, vectors of two BMU neurons, which takes a lot of time. In this chapter we will describe a method for parallelization of the GNG network, which is based on the distribution of dataset.

The basic idea is to pre-process the input data by SOM, as a result of which there are clusters of similar data. Subsequently, we created the same number of GNG network as clusters, and assigned each cluster to one GNG. Each GNG creates its own neural map and after the learning process is finished, the results are merged.

<figure><img src="image_2.png" /><figcaption>Fig. 1. Combination of SOM and GNG</figcaption></figure>
In general, the whole process is separated into a few phases, where the first phase contains the initialization of the SOM and running of the training process (Fig. 1(a)). In second phase each input vector assigned to one neuron (Fig. 1(b)). The main goal of the third phase is to create clusters of similar neurons (Fig. 1(c)). The clusters are created on the basis of Algorithm 2.

**Algorithm 2** Algorithm of creating clusters by create spanning tree

1. Compute the dissimilarity for all $k = 1, \dots, N$, between each neuron and its neighbors. It is possible to use:

- Euclidean distance $d_e(\mathbf{w}_i, \mathbf{w}_j) = (\sum_{k=1}^{n} |\mathbf{w}_{ik} - \mathbf{w}_{jk}|^2)^{\frac{1}{2}}$,

- Minkowski distance $d_m(\mathbf{w}_i, \mathbf{w}_j) = (\sum_{k=1}^{n} |\mathbf{w}_{ik} - \mathbf{w}_{jk}|^p)^{\frac{1}{p}}$, where $p \in R^+$,

- cosine dissimilarity $d_c(\mathbf{w}_i, \mathbf{w}_j) = (1 - \frac{\mathbf{w}_i \cdot \mathbf{w}_j}{\|\mathbf{w}_i\| \|\mathbf{w}_j\|})$.

2. Sort dissimilarity from smallest to greatest.

3. Select smallest unused dissimilarity and an associated two neurons.

4. If selected neurons are not in connected component, then create connection between them.

5. If neither of the following conditions is met, return to step 3:

- The number of the clusters.

- Number (percentage) of input data in cluster.

This is the end of SOM pre-processing and from now on we will use a GNG network. Now the same number of GNG networks is created as the number of clusters from pre-processing and the clusters are assigned to networks. After running the training process on each GNG network we have learned GNG networks, each of which has a different number of neurons and connections (Fig. 1(d)). All the GNG networks have the same configurations. If the pre-processing is perfect the GNG networks can be completely separated, but to eliminate potential errors we merge all GNG networks into one GNG network, which we do likewise with the input data. After running the training process but without adding a new neuron; only connections between existing neurons are created (Fig. 1(e)). Connected GNG networks create clusters $C_i$ of input vectors.

We implemented following indexes for determining the quality of clusters containing input vectors.

- Davies-Bouldin index [2] - This method is used to determine the distance between clusters and the cohesive. The smaller the resulting value, the better the quality of clusters.

$$S_i = \left( \frac{1}{m_i} \sum_{j=1}^{m_i} |\mathbf{x}_j - \mathbf{Z}_i|^q \right)^{1/q} \quad (1)$$
$$R_{ij} = \left( \sum_{k=1}^{B} |Z_{ik} - Z_{jk}|^p \right)^{1/p} \qquad (2)$$

$$D_{ij} = \frac{S_j + S_i}{R_{ij}} \qquad (3)$$

$$DB = \frac{1}{B} \sum_{i=1}^{B} \max_{i \neq j} (D_{ij}) \qquad (4)$$

- Dunn index [3] - This method is used to determine the inter-cluster distance (the optimal is maximal) and intra-cluster distance (the optimal is minimal). The range of values are from 0 to 1, where values close to 0 means optimal clustering.

$$\delta(C_i, C_j) = \min_{\mathbf{x} \in C_i, \mathbf{y} \in C_j} d(\mathbf{x}, \mathbf{y}) \qquad (5)$$

$$\Delta(C_i) = \max_{\mathbf{x}, \mathbf{y} \in C_i} d(\mathbf{x}, \mathbf{y}) \qquad (6)$$

$$Dunn\ index = \min_{1 \le i \le m} \left( \min_{1 \le j \le m, j \ne i} \left( \frac{\delta(C_i, C_j)}{\max_{1 \le k \le m} \Delta(C_k)} \right) \right) \qquad (7)$$

- Silhouette [11] - This method is aimed to evaluation object how well there are assigned to clusters. A range of values are from -1 to 1, where values close to 1 means optimal clustering. For each input vector is calculate silhouette Eq. (11) and then calculated average value Eq. (12).

$$a_i = \sum_{\mathbf{x}_i, \mathbf{x}_j \in C_k; \mathbf{x}_i \neq \mathbf{x}_j} \frac{d_*(\mathbf{x}_i, \mathbf{x}_j)}{m_k} \quad \forall i = 1, \dots, M \qquad (8)$$

$$d(\mathbf{x}_i, C_j) = \frac{\sum_{\mathbf{x}_k \in C_j; \mathbf{x}_i \notin C_j} d_*(\mathbf{x}_i, \mathbf{x}_k)}{m_j} \qquad (9)$$

$$b_i = \min_{C_j} d(\mathbf{x}_i, C_j) \quad \forall i = 1, \dots, M \qquad (10)$$

$$s_i = \frac{b(i) - a(i)}{\max(a(i), b(i))} \quad \forall i = 1, \dots, M \qquad (11)$$

$$Silhouette = \frac{1}{M} \sum_{i=1}^{M} s_i \qquad (12)$$

The entire description above can be summarized as follows: Help speeding up computation parallelization is shown in Fig. 2 where the top layer of parallelization (SOM) is something which the authors described in a previous paper [15].

The results of the SOM algorithm are collected in the process with rank 0, which creates a cluster of input data and assigns the individual processes. Each process (0 to m) creates a custom GNG network that is isolated and only works
with assigned inputs. Subsequently, these neural networks were gathered in the
process with rank 0, which performs an epoch over all input data.

Precipitated, obtained parallelization compared to using the GNG algorithm
without hierarchy depends on the division of the input data into clusters. In
the extreme case where all input data are only in one cluster, the hierarchical
solution is less efficient than just the GNG algorithm because it still needs to
count the extra time required for the SOM algorithm.

<figure><img src="image_3.png" /><figcaption>Fig. 2. Parallel Algorithm</figcaption></figure>

3 Experiments

We will describe different datasets and we will provide experiments with datasets
in this section.

3.1 Experimental Datasets and Hardware

Two datasets were used in the experiments. The first dataset was commonly
used in Information Retrieval – *Medlars*. The second one was the test data for
the elementary benchmark for clustering algorithms [13].

**Medlars Dataset** The Medlars dataset consisted of 1,033 English abstracts from medical science<fnref n="3" />. The 8,707 distinct terms were extracted from the Medlars

<footnote n="3">³ The collection can be downloaded from ftp://ftp.cs.cornell.edu/pub/smart. The total size of the dataset is approximately 1.03 MB.</footnote>
dataset. Each term represents a potential dimension in the input vector space. The term's level of significance (weight) in a particular document represents a value of the component of the input vector. Finally, the input vector space has a dimension of 8,707, and 1,033 input vectors were extracted from the dataset.

**Clustering dataset** Three training data collections called TwoDiamonds, Lsun and Hepta from the Fundamental Clustering Problems Suite (FCPS) were used. A short description of the selected dataset used in our experiments is given in Table 2.

<table><caption>**Table 2.** Fundamental Clustering Problems Suite – selected datasets</caption><thead><tr><td>Name</td><td>Cases</td><td>#Vars</td><td>#Clusters</td><td>Main Clustering Problem</td></tr></thead><tbody><tr><td>Target</td><td>770</td><td>2</td><td>6</td><td>outlying clusters</td></tr><tr><td>Lsun</td><td>400</td><td>2</td><td>3</td><td>different variances in clusters</td></tr><tr><td>TwoDiamonds</td><td>800</td><td>2</td><td>2</td><td>touching clusters</td></tr><tr><td>Hepta</td><td>212</td><td>3</td><td>7</td><td>clearly separated clusters</td></tr></tbody></table>

**Experimental Hardware** All the experiments were performed on a Windows HPC server 2008 with 6 computing nodes, where each node had 8 processors with 12 GB of memory. The processors in the nodes were Intel Xeon 2.27GHz. The topology with the connection between the head node and computing nodes can be found on the web<fnref n="4" /> (topology number four). The Enterprise and Private Networks link speed was 1Gbps, the Application link speed was 20Gbps.

## 3.2 First Part of the Experiment

The first part of the experiments was oriented towards the comparison of algorithms under which is the calculated distance. The used datasets were *Medlars* and *Hepta*. All the experiments were carried out for 20 epochs; the random initial values of neuron weights in the first epoch were always set to the same values. The tests were performed for SOM with rectangular shape 10 × 10 neurons. The metrics used for determining the quality of clustering is Euclidean distance (in all the algorithms). The achieved quality of clustering is presented in Table 4.

## 3.3 Second Part of the Experiment

The second part of the experiments was oriented towards a comparison of the standard GNG algorithm and the parallel approach to this GNG learning algorithm with pre-processing by SOM. The *Medlars* dataset was used for the

<footnote n="4">⁴ http://technet.microsoft.com/en-us/library/cc719008(v=ws.10).aspx</footnote>
experiment. A parallel version of the learning algorithm was run using 9, 16, 25 and 36 MPI processes. The records with asterisk (*) represents the results for only one process i.e. this is the original serial learning algorithm and there is no network communication and no SOM algorithm.

The GNG parameters are the same for all experiments and are as follows $\gamma = 200$, $e_w = 0.05$, $e_n = 0.006$, $\alpha = 0.5$, $\beta = 0.0005$, $a_{max} = 30$, M = 500, $\delta = 200$. The achieved computing time is presented in the Table 3.

<table><caption>**Table 3.** Computing Time with Respect to Number of Cores, Standard GNG Algorithm, Dataset Medlars</caption><thead><tr><th rowspan="2">Cores</th><th rowspan="2">SOM Dimension</th><th rowspan="2">Max # of vectors<br>in one cluster</th><th colspan="2">Computing Time [hh:mm:ss]</th></tr><tr><th>SOM</th><th>GNG</th></tr></thead><tbody><tr><td>1*</td><td>-</td><td>1033</td><td>-</td><td>01:13:41</td></tr><tr><td>9</td><td>3 × 3</td><td>798</td><td>00:00:09</td><td>00:45:40</td></tr><tr><td>16</td><td>4 × 4</td><td>646</td><td>00:00:21</td><td>00:29:05</td></tr><tr><td>25</td><td>5 × 5</td><td>229</td><td>00:00:25</td><td>00:05:55</td></tr><tr><td>36</td><td>6 × 6</td><td>291</td><td>00:00:30</td><td>00:08:12</td></tr></tbody></table>

As we can see from Table 3, the computing time depends on the number of used core as well. In the latter case the experiment is to see that the time increased even though the reduction was expected. It is caused by the SOM algorithm, which has generated bigger cluster of input vectors for GNG.

## 3.4 Third Part of the Experiment

The third part of the experiments was oriented towards comparing the results obtained in the parallel (with preprocessing by SOM) and standard GNG algorithm. The Clustering dataset was used for the experiment. The parallel version of the learning algorithm was run using 16 MPI processes. The GNG parameters are the same as in the previous experiment.

The first row in the Table 5 shows a layout view of the input data, which are used for training GNG. The outputs of GNG algorithms (without using SOM) are in the second row, which are similar to the parallel version in the last row.

# 4 Conclusion

In this paper, the parallel implementation of the GNG neural network algorithm is presented. The achieved speed-up was very good and the results from the standard and parallel version of GNG are similar. Thus we can state that operation of the parallel version is optimal. However, the effectiveness of a parallel solution is dependent on the division by SOM. Any improper division may cause a reduction in the quality of the final solution.
In future work we intend to focus on sparse date, and use combinations of
neural networks for improved results and improved acceleration.

<figure><img src="image_4.png" /><figcaption>**Table 4.** Quality of Clustering</figcaption></figure>

Acknowledgment

This work was supported by the European Regional Development Fund in the
IT4Innovations Centre of Excellence project (CZ.1.05/1.1.00/02.0070) and the
<table><caption>**Table 5.** Graphical representations of data set layout and corresponding GNGs</caption><thead><tr><th></th><th colspan="3">Data Collection</th></tr><tr><th></th><th>Target</th><th>Lsun</th><th>TwoDiamonds</th></tr></thead><tbody><tr><th>Input data</th><td></td><td></td><td></td></tr><tr><th>Standard GNG</th><td></td><td></td><td></td></tr><tr><th>Parallel GNG using 16 cores</th><td></td><td></td><td></td></tr></tbody></table>
national budget of the Czech Republic via the Research and Development for Innovations Operational Programme, and supported by the project New creative teams in priorities of scientific research, reg. no. CZ.1.07/2.3.00/30.0055, supported by Operational Programme Education for Competitiveness and co-financed by the European Social Fund and the state budget of the Czech Republic, and co-financed by SGS, VSB - Technical University of Ostrava, Czech Republic, under the grant No. SP2014/154 'Complex network analysis and prediction of network object behavior.

## References

1. Beyer, K., Goldstein, J., Ramakrishnan, R., Shaft, U.: When is "nearest neighbor" meaningful? In: Database Theory '99. vol. 1540, pp. 217-235 (1999)

2. Davies, D.L., Bouldin, D.W.: A cluster separation measure. Pattern Analysis and Machine Intelligence, IEEE Transactions on PAMI-1(2), 224-227 (April 1979)

3. Dunn, J.C.: A fuzzy relative of the isodata process and its use in detecting compact well-separated clusters. Journal of Cybernetics 3(3), 32-57 (1973), http://dx.doi.org/10.1080/01969727308546046

4. Fritzke, B.: A growing neural gas network learns topologies. In: Advances in Neural Information Processing Systems 7. pp. 625-632. MIT Press (1995)

5. Holmström, J.: Growing Neural Gas Experiments with GNG, GNG with Utility and Supervised GNG. Master's thesis, Uppsala University (2002-08-30)

6. Kohonen, T.: Self-Organization and Associative Memory, Springer Series in Information Sciences, vol. 8. Springer, Berlin, Heidelberg (1984), 3rd ed. 1989.

7. Kohonen, T.: Self Organizing Maps. Springer-Verlag, 3rd edn. (2001)

8. Martinetz, T.: Competitive hebbian learning rule forms perfectly topology preserving maps. In: Gielen, S., Kappen, B. (eds.) ICANN '93, pp. 427-434. Springer London (1993), http://dx.doi.org/10.1007/978-1-4471-2063-6_104

9. Martinetz, T., Schulten, K.: A "neural-gas" network learns topologies. Artificial Neural Networks 1, 397-402 (1991), http://web.cs.swarthmore.edu/mieden/DevelopmentalRobotics/fritzke95.pdf

10. Prudent, Y., Ennaji, A.: An incremental growing neural gas learns topologies. In: Neural Networks, 2005. IJCNN '05. Proceedings. 2005 IEEE International Joint Conference on. vol. 2, pp. 1211-1216 vol. 2 (july-4 aug 2005)

11. Rousseeuw, P.J.: Silhouettes: A graphical aid to the interpretation and validation of cluster analysis. Journal of Computational and Applied Mathematics 20(0), 53-65 (1987), http://www.sciencedirect.com/science/article/pii/0377042787901257

12. Sledge, I., Keller, J.: Growing neural gas for temporal clustering. In: Pattern Recognition, 2008. ICPR 2008. 19th International Conference on. pp. 1-4 (2008)

13. Ultsch, A.: Clustering with SOM: U*C, Proc. Workshop on Self-Organizing Maps, Paris, France, pp. 75-82 (2005)

14. Vojáček, L., Dvorský, J.: Growing neural gas - a parallel approach. Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) 8104 LNCS, 408-419 (2013)

15. Vojáček, L., Martinovič, J., Dvorský, J., Slaninová, K., Vondrák, I.: Parallel hybrid som learning on high dimensional sparse data. In: IEEE Proceedings of International Conference on Computer Information Systems and Industrial Management Applications CISIM 2011 (2011)