<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Real-time Unsupervised Clustering</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Gabriel J. Ferrer</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Mathematics and Computer Science Hendrix College 1600 Washington Ave. Conway</institution>
          ,
          <addr-line>Arkansas 72032</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2016</year>
      </pub-date>
      <fpage>47</fpage>
      <lpage>53</lpage>
      <abstract>
        <p>In our research program, we are developing machine learning algorithms to enable a mobile robot to build a compact representation of its environment. This requires the processing of each new input to terminate in constant time. Existing machine learning algorithms are either incapable of meeting this constraint or deliver problematic results. In this paper, we describe a new algorithm for real-time unsupervised clustering, Bounded Self-Organizing Clustering. It executes in constant time for each input, and it produces clusterings that are significantly better than those created by the Self-Organizing Map, its closest competitor, on sensor data acquired from a physically embodied mobile robot.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Clustering algorithms are unsupervised learning algorithms
that employ a distance metric to organize their training
inputs into clusters. The classification of a previously unseen
input is determined by the cluster to which it is closest,
again based on the distance metric. This enables a large input
space to be compressed into a more compact representation.
A useful application of this technique is to create models of
mobile robot environments based on the robot’s sensor
inputs.</p>
      <p>In both training and classification, the distances between
the input and the representative example of each cluster must
be calculated. By placing a fixed upper bound on the
number of clusters, we limit the total number of calculations
required by each training and classification operation. This, in
turn, enables us to predict the cycle time of the algorithm, a
necessity for the practical deployment of such an algorithm
aboard a mobile robot.</p>
      <p>In this paper, we introduce a novel clustering algorithm,
Bounded Self-Organizing Clusters (BSOC), that is designed
to meet these constraints. In the robotics literature, the
Kohonen Self-Organizing Map (SOM) has been used for this
purpose as well. We argue that the design of the SOM leads
to a relatively poor clustering, and that BSOC represents a
significant improvement. We demonstrate this
experimentally using both sonar and image data captured from a
mobile robot.</p>
      <p>We begin with some background and describe related
work. Next, we describe our physical system hardware, with
an eye towards making clear the technical limitations to
which any solution must conform. We then describe our
learning algorithm, followed by our experiments and results.
We then give our conclusions and speculations on future
work.</p>
    </sec>
    <sec id="sec-2">
      <title>Background</title>
      <p>
        Clustering algorithms have long been an appealing machine
learning technique for robotics applications, due to their
potential for incremental machine learning in combination as
well as their ability to reduce complex continuous sensor
input values to a smaller number of discrete values.
Several examples of this approach employ the Kohonen
SelfOrganizing Map (SOM)
        <xref ref-type="bibr" rid="ref8">(Kohonen 2001)</xref>
        to reduce the
sensor inputs into a finite number of discrete states to facilitate
the Q-learning algorithm.
      </p>
      <p>Each SOM is a neural network consisting of a single
twodimensional layer of nodes arranged in a rectangular grid.
The number of nodes and their arrangement is fixed. Each
node is an object of the same specifications as a network
input, which represents the reference input for that node. A
distance metric is defined for the space of possible inputs.
Typically, this distance metric will be the
sum-of-squareddifferences. The output node whose reference input that is
closest in distance to an input presented to the network is
considered the winning node; its coordinates are the output
of the SOM.</p>
      <p>To train a SOM, a training input is presented to the
network. The winning output node’s reference input, along with
some of its neighbors, is then combined with the input value.
The difference vector between the values is calculated and
multiplied by a learning rate. The resulting value is then
added to the reference input of the learning node. For each
affected SOM node i and input vector element j, the
update equation for the weight vector w of the reference input
(given a learning rate ↵, 0 &lt; ↵ &lt; 1) is:
wij = wij + ↵ ⇤ (inputij
wij )</p>
      <p>
        The ↵ parameter is determined by the neighborhood
scheme of the specific SOM implementation. Many
implementations (e.g.
        <xref ref-type="bibr" rid="ref15">(Smith 2002)</xref>
        ) make multiple passes over
the input, slowly reducing ↵ on each pass.
        <xref ref-type="bibr" rid="ref16">(Touzet 1997)</xref>
        trains the winning node with ↵ = 0.9, and the four cardinal
neighbors are trained with ↵ = 0.5. As ↵ remains constant
throughout, this formulation of the SOM lends itself well to
real-time implementation aboard a robot. Since the number
of nodes and topology are fixed, one can define a SOM
output map that guarantees that the robot’s cycle time will
reliably meet its timing requirements. This will be the variation
of the SOM that will serve as a baseline in our experiments
for assessing our own algorithm.
      </p>
      <p>
        The earliest application of the SOM to robotics was that
of
        <xref ref-type="bibr" rid="ref16">(Touzet 1997)</xref>
        , in which a tiny (6 cm diameter) Khepera
mobile robot equipped with eight infrared sensors for object
detection learned to move forward while avoiding obstacles.
The continuous values from the IR sensors were routed into
a 4x4 SOM. The SOM output node was then employed as a
state index for Q-learning. Touzet later scaled up this work
to a much larger robot
        <xref ref-type="bibr" rid="ref17">(Touzet 2006)</xref>
        employing a ring of
16 sonars. In this later work, Q-learning was abandoned;
instead of using reinforcement rewards, the desired
behavior was specified in terms of an acceptable range of sensor
values.
        <xref ref-type="bibr" rid="ref15">(Smith 2002)</xref>
        did similar work, with two major
differences: a different definition of the SOM learning
neighborhood than that of Touzet, and implementation in
simulation rather than on a physical robot. Instead of using
immediate neighbors, all nodes in the network were affected,
with the learning rate combined with a Gaussian smoothing
function.
        <xref ref-type="bibr" rid="ref1">(Ferrer 2010)</xref>
        implemented both approaches on a
mobile robot and compared the results. He found that both
approaches worked respectably well, but that both were
surpassed by Q-Learning without the use of clustering.
      </p>
      <p>
        <xref ref-type="bibr" rid="ref11 ref17">(Provost, Kuipers, and Miikkulainen 2006)</xref>
        undertook
similar work in simulation, but replaced the SOM with
the closely related Growing Neural Gas (GNG) algorithm
        <xref ref-type="bibr" rid="ref5">(Fritzke 1995)</xref>
        . The GNG is appealing in this context
because of its flexible topology. It starts with two nodes.
Additional nodes are incorporated into the network as needed
to represent inputs that correspond to significant
previouslyunseen aspects of the input space.
      </p>
      <p>
        <xref ref-type="bibr" rid="ref2 ref3">(Ferrer 2014a)</xref>
        also applied the GNG algorithm to robot
learning. A robot built a GNG as it drove through its
environment. A human then examined each GNG node,
specifying an appropriate action based on a visual inspection of
the node’s reference input. This work was reasonably
successful for behavior specification on a physical robot.
However, the manual specification of an action for each node was
found to be laborious.
        <xref ref-type="bibr" rid="ref2 ref3">(Ferrer 2014b)</xref>
        further advanced the
concept of employing a GNG for learning an environment.
A human pilots a robot through an environment, learning a
GNG representation of the environment and associating
actions from the human with the GNG nodes. When running
autonomously, the robot selects its action based on which
GNG node is the winner for the current input image.
      </p>
      <p>Because the GNG adapts the number of clusters based on
the inputs it receives, it is not possible to guarantee that
the robot will complete each round of processing within
a specified target time. While one appealing aspect of the
GNG algorithm is the elimination of underutilized nodes, the
specifics of this elimination process are too unpredictable to
enable us to make guarantees about timing.</p>
      <p>The problem of learning from a real-time input stream
is also of interest outside the robotics community.
(Hapfelmeier et al. 2012) mention application domains such
as real-time scientific data processing, finance, web
applications, and telecommunications.</p>
      <p>
        The most prominent clustering algorithm in the literature
is arguably k-means
        <xref ref-type="bibr" rid="ref4">(Forgey 1965)</xref>
        <xref ref-type="bibr" rid="ref10">(MacQueen 1967)</xref>
        . For
our application domain, we did not consider this approach
at all, as it requires multiple passes through the input data.
As each of these multiple passes requires visiting every input
sample, our target constraint of constant-time execution
cannot be satisfied. Also related to our approach is bottom-up
agglomeration as described, for example, by
        <xref ref-type="bibr" rid="ref17 ref9">(Koivistoinen,
Ruuska, and Elomaa 2006)</xref>
        . We do not seek to perform a full
bottom-up agglomeration; instead, we use agglomeration as
a strategy to help us execute in constant time while retaining
good relationships with the inputs.
      </p>
    </sec>
    <sec id="sec-3">
      <title>Hardware</title>
      <p>Our robot is a Lego Mindstorms EV3 equipped with a
Logitech C270 webcam and three sonar sensors. The EV3 has a
300 MHz ARM9 CPU and 64 MB of RAM. Its OS is a
version of Linux. We implemented our software in Java using
LeJOS 0.9.0. The webcam is connected to the EV3 via its
USB 1.1 port. As the webcam is designed to be used with
a USB 2.0 port or better, it is limited to grabbing 160x120
YUYV images at about 14 frames per second. We
configured the robot as shown in Figure 1.</p>
    </sec>
    <sec id="sec-4">
      <title>Bounded Self-Organizing Clusters</title>
    </sec>
    <sec id="sec-5">
      <title>Basic Version</title>
      <p>
        We introduce a novel clustering algorithm called Bounded
Self-Organizing Clusters (BSOC) (see Figure 2). Each
BSOC is a complete undirected weighted graph. Each node
in the graph contains the reference input for a cluster
(comparable to the nodes in a Self-Organizing Map
        <xref ref-type="bibr" rid="ref8">(Kohonen
2001)</xref>
        ). Each edge weight denotes the distance between the
reference inputs of the clusters.
      </p>
      <p>Each BSOC is given a maximum number of clusters it can
represent. When training, each training input is added to the
set of clusters as a reference input. If adding the training
input causes the number of nodes to exceed the maximum, the
two nodes in the graph with the shortest edge are merged by
computing a weighted average of their numerical
representations.</p>
      <p>The edges are stored in a red-black tree. They are
primarily ordered by their distances, and secondarily ordered by the
indices of their node endpoints. This enables us to quickly
find the smallest edge when needed in the train method.
When two nodes are merged (and removed from the main
graph), their edges are also removed from the red-black tree.
setup(max-nodes)
edges = new red-black-tree
nodes = map of node-indexes to inputs
lookup(input)
for each node</p>
      <p>find distance from input to node
return (node-index, distance) of
closest node
train(input)
insert(input)
if number of nodes exceeds max-nodes
edge = edges.remove(smallest edge)
(n1, n2) = endpoints of edge
Remove n1 and n2 and their edges
insert(merged(n1,n2))
insert(image, count)
add (image, count) to nodes
for each existing node n</p>
      <p>Create and insert a new edge:
- First vertex is image
- Second vertex is n
- Weight = distance from image to n
merged(n1, n2)
img = (n1.image + n2.image) / 2
return img</p>
      <p>Let M be the maximum number of nodes for a BSOC.
Each call to lookup or insert makes no more than M
calls to the distance function. Each call to insert
performs up to M log M2 = 2M log M numerical
comparisons when inserting an edge connecting the input to each
of up to M existing nodes. Each call to train makes up to
two calls to insert, along with a comparison, 2M edge
removals (each requiring 2 log M comparisons in a red-black
tree), and two hash table removals. Consequently, given that
M can be fixed as a constant, we can say that each call to
train or lookup takes constant time.</p>
    </sec>
    <sec id="sec-6">
      <title>Weighted-Input Variation</title>
      <p>A potential drawback of the above algorithm is that clusters
that are the result of repeated averages are given the same
importance in the merging stage as clusters that are the result
of single inputs. We find it intuitive that clusters that are the
result of repeated merges would be closer in distance to a
larger number of inputs from the input space. The following
variation is an attempt to codify this intuition.</p>
      <p>In addition to a reference input, each node in the graph
contains a counter, initially set to one. Each counter denotes
the number of input samples that contributed to the current
node. These counters serve two major roles. First, they will
be used as weights when merging nodes. Second, each edge
weight (i.e., the distance between the reference inputs of the
connected nodes) will be multiplied by the larger of the two
counters for the connected nodes.</p>
      <p>We expect these roles to achieve two things. First, by
employing the larger counter as an edge weight multiplier,
nodes that are derived from larger numbers of input samples
will be less likely to be selected for merging. Second, by
weighting the merge based on the counters, when they are
selected they will preserve more of the broad influence of
the inputs from which they were generated.</p>
      <p>The revised BSOC algorithm is given in Figure 3. Note
that setup and lookup are unchanged (and hence
omitted). The additional arithmetic calculations have no
asymptotic impact on performance.
train(input)
insert(input, 1)
if number of nodes exceeds max-nodes
edge = edges.remove(smallest edge)
(n1, n2) = endpoints of edge
insert(merged(n1,n2),</p>
      <p>n1.count + n2.count)
insert(image, count)
add (image, count) to nodes
for each existing node n
d = distance from image to n
Create and insert a new edge:
- First vertex is image
- Second vertex is n
- Weight is d * max(count(image),
count(n))
merged(n1, n2)
w1 = n1.count / (n1.count + n2.count)
w2 = n2.count / (n1.count + n2.count)
img = w1 * n1.image + w2 * n2.image
return img</p>
    </sec>
    <sec id="sec-7">
      <title>Experiments and Evaluation</title>
    </sec>
    <sec id="sec-8">
      <title>Robot Environment</title>
      <p>We gathered two different types of sensor data from our
robot: triples of distance values from the sonars, and images
from the webcam. To gather the sonar data set and the first
video data set, we navigated the robot through the cluttered
office environment depicted in Figure 4.</p>
      <p>For the second video data set, we navigated the robot
through a different office environment. While the first
environment has a carpeted floor, the second environment has
a tile floor of alternating colors, as we can see in Figure 5.</p>
      <p>Each video sequence is 700 frames. Each frame is a
160x120 image in YUYV format. As YUYV uses 2 bytes
per pixel, the total size of each frame is 38400 bytes. The
sonar data set was created from a sequence of 1304 sonar
triples. The sonars are configured as follows: One points
about 45 degrees to the left of the robot, one points forward,
and one points about 45 degrees to the right. The effective
range of each sonar is from 0 to 2.5 meters. In all cases, the
robot visited many different areas of the office, so as to
ensure that each sequence was reasonably representative of the
environment.</p>
      <p>For both types of data, distance values between samples
are calculated as sum-of-squared differences. For computing
the distance between two triples of sonar distance values, the
differences between the distance values of each
correspond</p>
      <p>BSOC2
ing sonar position are computed. For the YUYV images, the
differences between each corresponding byte are computed.</p>
      <p>When creating clusters, the merging process requires
averaging the inputs. In both cases, the averaging is analogous
to the computation of the distance. For the sonar triples, the
weighted mean values are computed for each sonar position.
For the images, the weighted mean values are computed for
each byte. Since the byte values are 8-bit unsigned integers,
the result of each division is truncated.</p>
    </sec>
    <sec id="sec-9">
      <title>Experiments</title>
      <p>In this section, the basic version of BSOC is denoted
BSOC1, and the BSOC variation weighted by input sample
counts is BSOC2.</p>
      <p>
        We constructed our experiments to test the following
hypotheses:
1. Given the same number of clusters, BSOC1 will provide
closer matches to its source inputs than the SOM as
formulated by
        <xref ref-type="bibr" rid="ref16">(Touzet 1997)</xref>
        , and BSOC2 will provide closer
matches than BSOC1. We define “closer matches” to be
the sum-of-squared-differences (SSD) between each input
and the reference input for the closest matching cluster.
2. Given the same number of clusters, BSOC2 will exhibit
more consistent performance than the SOM or BSOC1
regardless of the ordering of the input data. We measure
“consistent performance” as the ratio of the standard
deviation to the mean. Smaller values indicate more consistent
performance.
      </p>
      <p>We tested each of our input sequences with clustering
algorithms configured with 16, 32, and 64 nodes. For testing
the SOMs, we used 4x4, 4x8, and 8x8 grids. The SSD
values for the sonar experiments are in units of meters squared.
For the video experiments, the units are pixel intensity
values squared. For presentation purposes, all entries have been
rounded to four significant figures.</p>
    </sec>
    <sec id="sec-10">
      <title>Results</title>
      <p>Hypothesis 1 As we can see from Figures 6 through
11, Hypothesis 1 was confirmed, with some qualifications.
BSOC1 consistently outperformed the SOM in the sonar
experiments by multiple orders of magnitude, a compelling
improvement. In the first video experiments, it outperformed
the SOM by factors ranging from slightly over one to
slightly over two, a much less compelling improvement, but
still consistently superior. The second video was more
favorable, performing 3-4 times better.</p>
      <p>BSOC2 outperformed both of the other algorithms very
consistently, with the exception of the 16-node sonar
experiment, in which its performance was very close to BSOC1.
In the other two sonar experiments, it outperformed BSOC1
by about 65%.</p>
      <p>In the video experiments, BSOC2 consistently
outperformed both the SOM and BSOC1. In the first video, it was
about 3-4 times better than the SOM, while with the second
video it was 8-16 times better.</p>
      <p>All of these clustering algorithms show significant
improvement in performance as additional nodes are added.
This demonstrates that those engineering a robotic system
incorporating a clustering algorithm do have a clearly
defined trade-off between cycle time and clustering accuracy.
This improvement was less consistent with the second video
stream, as the 32-node solution was more favorable to BSOC
than the 64-node solution.</p>
      <p>Hypothesis 2 We ran a separate set of experiments to test
Hypothesis 2, as all of the previous experiments trained the
learner by showing the inputs in the order that they were
acquired by the robot. While we consider that to be the
expected deployment situation of these algorithms, the
sensitivity to ordering is also worthwhile to measure. To this end,
we trained the 64-node version of each algorithm on six
different randomly generated permutations of the input
samples. We employ here the same performance metric as our
earlier experiments, namely, the sum-of-squared-differences
between each input and its closest matching cluster. Figure</p>
      <sec id="sec-10-1">
        <title>Video 1 Ratio</title>
      </sec>
      <sec id="sec-10-2">
        <title>BSOC2</title>
        <p>1.199 ⇥ 1018
6.745 ⇥ 1017
2.838 ⇥ 1017
12 shows the mean, standard deviation, and ratio for the
sonar experiments, and Figures 13 and 14 show the same
values for the video experiments.</p>
        <p>In all three cases, BSOC2 had a much tighter standard
deviation than the other algorithms, showing a more
consistent performance regardless of move ordering. In spite of
this clear result, in all cases the performance on the
nonpermuted input is much worse. Figures 15, 16, and 17
highlight this phenomenon. For all of these algorithms,
processing the inputs in the order they were acquired creates a
highly idiosyncratic statistical outlier.</p>
      </sec>
    </sec>
    <sec id="sec-11">
      <title>Potential Applications</title>
      <p>
        We are in the process of developing several different robot
learning systems that would employ BSOC as a
component. Our first goal is to replicate the learning scheme
described by
        <xref ref-type="bibr" rid="ref17">(Touzet 2006)</xref>
        . He employed two different SOMs
to represent the robot’s environment as sensed by a ring of
sonars. One SOM was used to represent the environment
itself, while the second SOM was used for modeling the
result of action selection. The robot’s goals are specified in
terms of sensor values. The robot then attempts to move
itself to a SOM state that is compatible with those values. We
have found that while the underlying concept is compelling,
there is not sufficient detail to represent the role of the
second SOM. We believe that replacing the first SOM with a
BSOC will result in improved modeling accuracy, while
replacing the second SOM with a Markov chain should prove
      </p>
      <sec id="sec-11-1">
        <title>Algorithm SOM BSOC1 BSOC2</title>
        <p>Permuted sonar
x¯</p>
      </sec>
      <sec id="sec-11-2">
        <title>Permuted video 1</title>
        <p>Permuted video 2
x¯
x¯
effective. We plan to employ Dijkstra’s Algorithm to find
paths in the Markov chain through the BSOC states that it
discovers.</p>
        <p>Once the above system proves workable with sonars, we
plan to employ video as the primary input. We believe this
will enable us to do two things. First, we hope to be able to
define robot behaviors in terms of video input, potentially
opening up a wider array of possibilities than those given by
sonar. Second, we would like to investigate the possibility
of using the nodes for small-scale navigation of an
environment.</p>
        <p>
          We are also interested in using BSOC as a component to
a supervised-learning system. In this way, BSOC would
enable a scheme along the lines of k-nearest-neighbor
          <xref ref-type="bibr" rid="ref13 ref17">(Saunders, Nehaniv, and Dautenhahn 2006)</xref>
          to be implemented in
constant time.
        </p>
        <p>We speculate that this algorithm could be useful for
informing human decision-makers in situations requiring
rapid responses where sensors are widely distributed and
submitting information. Examples of such scenarios could
include environmental assessment in the wake of a disaster
or any number of military or law-enforcement scenarios1.</p>
      </sec>
    </sec>
    <sec id="sec-12">
      <title>Conclusion</title>
      <p>For the purpose of modeling a robot environment in constant
time using a sequence of sensor inputs, we have shown that
Bounded Self-Organizing Clusters (BSOC) is a compelling
alternative to the Kohonen Self-Organizing Map, the
existing approach, for both sonar and video inputs. The variation
of BSOC that weights the results based on the input sources
is a particularly clear winner in our experiments; we
consider this to be the definitive variation of the algorithm.</p>
      <p>We believe that improved clustering has great potential to
improve robot learning as a component of several possible
larger systems. We would also be interested in finding
applications for this algorithm in other domains beyond robotics
that would benefit from real-time clustering.</p>
      <p>
        Significant additional work remains in the development of
this algorithm. First, many robot vision systems employ
preprocessed features rather than raw pixel data, with the goal
of improving recognition robustness across many different
robot poses. We plan to investigate using ORB
        <xref ref-type="bibr" rid="ref12">(Rublee et
al. 2011)</xref>
        for this purpose. Second, many practical
learning situations involve supervised learning. We believe that
BSOC could be used as a component of a real-time
supervised learning system designed along the lines of
k-nearestneighbor. Third, a system that utilizes BSOC clusters and
maintains references to those clusters will need to preserve
information as clusters merge. We currently have a
prototype system in place to address this employing the Observer
design pattern, but have not yet conducted an assessment of
its utility.
      </p>
      <p>Anyone who would like to experiment with our code
and data sets is welcome to do so. It is archived
at https://github.com/gjf2a/maics2016. The
code is in the public domain.</p>
      <p>1We would like to thank one of our anonymous reviewers for
suggesting these possibilities.</p>
    </sec>
    <sec id="sec-13">
      <title>Acknowledgements</title>
      <p>We would like to thank the three anonymous reviewers for
many helpful comments on our initial submission. We would
also like to thank Mark Goadrich for proofreading this paper
and giving many helpful suggestions, most specifically the
idea to assess performance based on random permutations
of the inputs.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <surname>Ferrer</surname>
            ,
            <given-names>G. J.</given-names>
          </string-name>
          <year>2010</year>
          .
          <article-title>Encoding robotic sensor states for QLearning using the self-organizing map</article-title>
          .
          <source>Journal of Computing Sciences in Colleges</source>
          <volume>25</volume>
          (
          <issue>5</issue>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <string-name>
            <surname>Ferrer</surname>
            ,
            <given-names>G. J.</given-names>
          </string-name>
          <year>2014a</year>
          .
          <article-title>Creating visual reactive robot behaviors using growing neural gas</article-title>
          .
          <source>In Proceedings of the 25th Modern Artificial Intelligence and Cognitive Science Conference</source>
          ,
          <volume>39</volume>
          -
          <fpage>44</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <surname>Ferrer</surname>
            ,
            <given-names>G. J.</given-names>
          </string-name>
          <year>2014b</year>
          .
          <article-title>Towards human-induced vision-guided robot behavior</article-title>
          .
          <source>In Proceedings of the 2014 AAAI Fall Symposium: Knowledge</source>
          , Skill, and Behavior Transfer in Autonomous Robots.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <surname>Forgey</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          <year>1965</year>
          .
          <article-title>Cluster analysis of multivariate data: Efficiency vs</article-title>
          .
          <source>interpretability of classification. Biometrics</source>
          <volume>21</volume>
          (
          <issue>768</issue>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <string-name>
            <surname>Fritzke</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <year>1995</year>
          .
          <article-title>A growing neural gas network learns topologies</article-title>
          .
          <source>In Advances in Neural Information Processing Systems</source>
          <volume>7</volume>
          ,
          <fpage>625</fpage>
          -
          <lpage>632</lpage>
          . MIT Press.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <string-name>
            <surname>Hapfelmeier</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Mertes</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ; Schmidt1, J.; and
          <string-name>
            <surname>Kramer</surname>
          </string-name>
          , S.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          2012.
          <article-title>Towards real-time machine learning</article-title>
          .
          <source>In Proceedings of the ECML PKDD 2012 Workshop on Instant Interactive Data Mining.</source>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <string-name>
            <surname>Kohonen</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          <year>2001</year>
          .
          <string-name>
            <surname>Self-Organizing Maps</surname>
          </string-name>
          . Springer, 3rd edition.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <string-name>
            <surname>Koivistoinen</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ; Ruuska,
          <string-name>
            <surname>M.</surname>
          </string-name>
          ; and Elomaa,
          <string-name>
            <surname>T.</surname>
          </string-name>
          <year>2006</year>
          .
          <article-title>A Voronoi diagram approach to autonomous clustering</article-title>
          .
          <source>In Proceedings of the 9th International Conference on Discovery Science</source>
          ,
          <volume>149</volume>
          -
          <fpage>160</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          <string-name>
            <surname>MacQueen</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <year>1967</year>
          .
          <article-title>Some methods for classification and analysis of multivariate observations</article-title>
          .
          <source>In Proc. of the Fifth Berkeley Symposium on Math. Stat. and Prob</source>
          .,
          <fpage>281</fpage>
          -
          <lpage>296</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          <string-name>
            <surname>Provost</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Kuipers</surname>
            ,
            <given-names>B. J.;</given-names>
          </string-name>
          and Miikkulainen,
          <string-name>
            <surname>R.</surname>
          </string-name>
          <year>2006</year>
          .
          <article-title>Developing navigation behavior through self-organizing distinctive state abstraction</article-title>
          .
          <source>Connection Science</source>
          <volume>18</volume>
          (
          <issue>2</issue>
          ):
          <fpage>159</fpage>
          -
          <lpage>172</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          <string-name>
            <surname>Rublee</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Rabaud</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Konolige</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ; and Bradski,
          <string-name>
            <surname>G.</surname>
          </string-name>
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          <string-name>
            <surname>Saunders</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ; Nehaniv,
          <string-name>
            <given-names>C. L.</given-names>
            ; and
            <surname>Dautenhahn</surname>
          </string-name>
          ,
          <string-name>
            <surname>K.</surname>
          </string-name>
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          <article-title>Teaching robots by moulding behavior and scaffolding the environment</article-title>
          .
          <source>In Proceedings of the 1st ACM SIGCHI/SIGART Conference on Human-robot Interaction</source>
          , HRI '
          <volume>06</volume>
          ,
          <fpage>118</fpage>
          -
          <lpage>125</lpage>
          . New York, NY, USA: ACM.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          <string-name>
            <surname>Smith</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <year>2002</year>
          .
          <article-title>Applications of the self-organizing map to reinforcement learning</article-title>
          .
          <source>Neural Networks</source>
          <volume>15</volume>
          :
          <fpage>1107</fpage>
          -
          <lpage>1124</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          <string-name>
            <surname>Touzet</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <year>1997</year>
          .
          <article-title>Neural reinforcement learning for behavior synthesis</article-title>
          .
          <source>Robotics and Autonomous Systems</source>
          <volume>22</volume>
          (
          <issue>3</issue>
          -
          <fpage>4</fpage>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          <string-name>
            <surname>Touzet</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <year>2006</year>
          .
          <article-title>Modeling and simulation of elementary robot behaviors using associative memories</article-title>
          .
          <source>International Journal of Advanced Robotic Systems</source>
          <volume>3</volume>
          (
          <issue>2</issue>
          ):
          <fpage>165</fpage>
          -
          <lpage>170</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>