<!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>Platform for Rapid Prototyping of AI Architectures</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Peter Hroššo</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jan Knopp</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jaroslav Vítk ˚u</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Dušan Fedorcˇák</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>GoodAI</string-name>
        </contrib>
      </contrib-group>
      <pub-date>
        <year>2015</year>
      </pub-date>
      <fpage>127</fpage>
      <lpage>134</lpage>
      <abstract>
        <p>Researching artificial intelligence (AI) is a big endeavour. It calls for agile collaboration among research teams, fast sharing of work between developers, and the easy testing of new hypotheses. Our primary contribution is a novel simulation platform for the prototyping of new algorithms with a variety of tools for visualization and debugging. The advantages of this platform are presented within the scope of three AI research problems: (1) motion execution in a complex 3D world; (2) learning how to play a computer game based on reward and punishment; and (3) learning hierarchies of goals. Although there are no theoretical novelties in (1,2,3), our goal is to show with these experiments that the proposed platform is not just another ANN simulator. This framework instead aims to provide the ability to test proactive and heterogeneous modular systems in a closed-loop with the environment. Furthermore, it enables the rapid prototyping, testing, and sharing of new AI architectures, or their parts.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>The recent boom in the field of artificial intelligence (AI)
was brought on by advances in so-called narrow AI,
represented by highly specialized and optimized algorithms
designed for solving specific tasks. Such programs can
even sometimes surpass human performance when
solving the single problem for which they were created. But
these narrow AI programs lack one feature which has been
so far widely omitted, partly due to its overwhelming
difficulty: generality.</p>
      <p>
        In order to compensate for this deficiency, the field of
artificial general intelligence (AGI) is bringing the focus
back to broadening the range of solvable tasks. The
ultimate goal of AGI is therefore the creation of an agent
which can perform well (at human level or better) at any
task solvable by a human. For a more detailed description
of AI/AGI, see e.g. [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ].
      </p>
      <p>Pursuing such a goal is a hard task. According to the
scientific method – the only guideline we have – we need
to come up with new theories, design experiments for
testing them, and evaluate their results. Such a cycle needs
to be repeated often, because it can be expected to reach
more dead ends than breakthroughs. We don’t know how
to increase the rate of coming up with new ideas, but what
can be improved is the efficiency of research. What we
need is better tools which will simplify the
implementation of new theories, speed up experiments, and help us
understand the results better by visualizing obtained data.</p>
      <p>In this article, we would like to present our attempt to
create such a tool. We here introduce a platform which
allows:
• Easy prototyping of new models and fast sharing of
existing ones (Sec. 4.1)
• Control of an agent in an environment on top of
classic data processing (Sec. 3.3)
• Modular approach – seamless connecting of models
inside a greater architecture (Sec. 2.1)
• Various tools for the visualization of data (Fig. 2)
• Simplified debugging (Sec. 2.2)
• User Friendly GPU programming (Sec. 2.1)
• Scalable due to GPU parallel computation
• Support of several scenarios such as an agent in an
environment, classification, tic-tac-toeetc.</p>
      <p>Our platform also includes a variety of visualization
tools and enables easy access to diverse data sets not only
for tasks such as image classification or recognition, but
also scenarios where an agent interacts with its
environment. Last but not least, it is open source and freely
available under a non-commercial license1. The primary goal
of this tool is easy collaboration among both specialists
and laymen for developing novel algorithms, especially in
the field of AI.</p>
      <p>
        There are tools, languages, and libraries that are good
in particular areas. In the research community, widely
1The platform is available as Brain Simulator at http://www.
goodai.com/brainsimulator
used are Matlab [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] and Python [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] for prototyping by
code, platforms that aim at high level graphical
modeling (Simulink [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ], Software Architect [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]), data
analysis (Azure [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], Rapid Miner [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]), advanced visualization
(ParaView [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]), rich graphical user interface (Blender [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ],
Maya [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]), modular computation (ROS [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]), or specific
libraries for sharing [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] and parallel computation [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Each
of these instruments is important in their specific domain,
but there is none which would cover under one roof the
most prominent features of all of those mentioned. Our
platform is an attempt to fill this niche, and offers both
high-level graphical coding and possibly, but not
necessarily, also low-level (i.e. CUDA [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]) programming.
      </p>
      <p>
        There are several tools for simulating neural networks
(NN). Nengo [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] or OpenNN [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] focus on
experimenting with all possible modifications of NN. Unfortunately,
they either lack in visualization or focus on over-specific
design approaches. Moreover, usage of these tools often
requires extensive programing knowledge and installation
of extension packages [
        <xref ref-type="bibr" rid="ref13 ref4">4, 13</xref>
        ]. In contrast, other tools that
provide rich visualization focus purely on the functions of
our brain. For example, PSICS [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] uses 3D synapse
visualization to show data flow in parts of the brain,
DigiCortex [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] nicely visualizes spike activations of the whole
brain in time, and Cx3D [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] simulates growth of the
cortex in 3D. Extensive comparison of various neural network
simulators, including our platform (Brain Simulator), can
be found in [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
      </p>
      <p>It is worth noting that the proposed platform is not
limited to the design of neural networks only. Any algorithm
useful for AI, machine learning, or control can be
incorporated (various mathematical transformations, filters, PID
controller, image segmentation, hashing functions,
dictionary, etc., are already included). The heterogeneous
character of the platform is its main advantage.</p>
      <p>Throughout this work, we describe our platform in the
following Sec. 2. In Sec. 3, tasks where we show
advantages of the platform are introduced. In Sec. 4, we discuss
the experience with our tool and its advantages and
weakness in the testing scenarios. The paper is concluded in
Sec. 5.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Simulation Platform</title>
      <p>Our modus operandi reflects our goals - we are aiming for
a modular cognitive architecture, so we needed an
environment which would efficiently support the whole life-cycle
of experiments, starting with the testing of already existing
algorithms, going through the design of a new algorithm,
and ending with a results evaluation. We developed a
platform where various algorithms from machine learning and
narrow AI are available. It is easy to pick some, connect
them, and start experimenting effortlessly. Agile
development requires frequent testing of new hypotheses, which
is facilitated by an easy way of prototyping new modules
for the platform as well as their fast training and
evaluation (accelerated on GPU) on data. After the experiment is
(a)
(b)
(c)
(d)
running, it often happens that its outcome is not what was
expected. Such a simulation platform could not be
imagined without a tool for runtime analysis of algorithms.
For this purpose various data observers can be displayed so
the experimenter can visualize the computed data,
evaluate performance of the model, and change its parameters
during runtime if needed.</p>
      <p>Our platform is tailored to suit two different points of
view of the architecture development process:
• A user who desires quick architecture modeling and
needs fast access to already existing state-of-the-art
modules (such as PCA, NN, image pre-processing
etc.) to experiment with. This perspective requires
no coding and it’s done through graphical modeling.
Furthermore, it is often crucial to have good insight
into the running model, and thus a large set of
visualization tools is available (Fig. 2).
• On the other hand, a researcher/developer often
requires the creation of a new module or the import of
an already existing library. Our API provides an easy
way for such a module to be created and added to
the inner shared repository. Moreover, the API offers
an opportunity to hook the code to the GUI and bring
needed interactivity. Finally, the API defines a rigid
interface, ensuring that the new module will be
compatible with other modules.</p>
      <p>The platform was designed to meet both needs. It is
important to distinguish between them as a user can be a
person interested in machine learning, but less experienced in
programming. Our platform can be a good starting point,
and the learning curve should therefore be smooth enough
to bring the person in effortlessly.</p>
      <p>From the experienced researcher/developer point of
view, the platform should provide a convenient set of tools
that can help with the development of novel algorithms
and/or be able to envelope existing work into module that
can be easily shared among a team.</p>
      <p>Finally, the community-driven approach renders itself
very powerful and we believe that it can speed up the
research vastly. For this reason, we are planning to in-build
a “module market” to allow for the sharing of
state-ofthe-art research results between many co-working teams.
2.1</p>
      <sec id="sec-2-1">
        <title>Platform Meta Model</title>
        <p>There are three basic concepts defined in the meta model:
a node, a task and a memory block. The node encapsulates
a functional block or algorithm that can “live” on its own
(e.g. matrix operations, data transformations, various
machine learning models, etc.). A node needs a memory for
its function. The memory is organized into a set of
memory blocks that are aggregated inside the node. Some of
these memory blocks can be designated as output blocks
and others as input blocks. The connection between input
and output memory blocks is provided by the user.</p>
        <p>From the functional point of view, the node behaviour
can usually be divided into a set of tasks where each
task is a part of the realized algorithm. Both nodes and
tasks can define a set of parameters. Usually, node
parameters describe structural properties (i.e. size of
memory blocks) whereas task parameters affect behavior. At
present, the memory model is constant during the
simulation, and therefore structural properties are editable only in
design time. On the other hand, it is useful to change task
parameters during simulation and observe changes in
behavior of the algorithm/node.</p>
        <p>Memory blocks are located at GPU (device memory)
and every task can be seen as a collection of kernel calls
(methods executed on GPU). If two nodes are connected
in the GUI, it means that they have a pointer to the same
memory block (input in one node, output in the other).</p>
        <p>If one requires dynamically allocated memory, the user
can either define a memory block that is large enough, or
implement the node only for the CPU (which is more
flexible than GPU) using all data structures supported by C#.
The only mandatory requirement is usage of input/output
memory blocks.</p>
        <p>All concepts described above can be easily implemented
through rich API that is provided. The actual
implementation relies heavily on annotated code describing various
aspects of the model (UI interactivity, constraints,
persistence, etc.). It allows the user to be extremely efficient in
creating model prototypes. Sometimes, this can lead to
unreadable, over-annotated code which is hard to maintain
but this can be eliminated by applying standard software
design patterns like MVC when needed.
2.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>Computation</title>
        <p>As described above, the prototyped model forms an
oriented graph with nodes and data connection edges. As the
connections between nodes can be any of M → N and
recurrent connections are also possible, the resulting graph
can be very complex. Moreover, the usual model is
connected to the world node from which “perception” inputs
are taken, and control outputs are passed, forming the main
loop of the simulation.</p>
        <p>
          Before running the simulation, the order of nodes
execution needs to be evaluated. There are other aspects that
level the problem up (e.g. inner cycles, clustering and
balancing of the model in HPC environment) but it usually
boils down to various forms of dependency ordering,
cycle detection, or the job shop problem [
          <xref ref-type="bibr" rid="ref34">34</xref>
          ]. Solving these
tasks is automated and user/developer assistance is usually
discouraged, but there are use cases where user aid is
necessary or can simplify the problem substantially.
        </p>
        <p>There is also another view of the problem of execution
order when faced in the area of machine learning. It turns
out that many of ML methods are surprisingly noise
resistant (i.e.neural nets). Therefore, if approached with
caution, one can run the model asynchronously and let inner
parts of the model deal with sometimes temporally
inconsistent data. We made some experiments and the
preliminary results show that relatively complex models can be
run completely without synchronization.</p>
        <p>Another aspect of the model execution is GPU enhanced
computation which can speed up the simulation
substantially. The main purpose of our simulation platform is fast
prototyping and testing of hypotheses. With increasing
generality the efficiency usually decreases, so one should
not expect top execution speed from our simulation
platform. The devised practice is to design, test, and analyze
new architectures, and once the final model is tested and
working, it can be replaced by a specialized, highly
optimized implementation still within the platform
environment. Finally, it can be argued that the overall time
necessary to get from an idea to the final product is much shorter
compared to the classic approach of writing a specific
program from scratch for each new experiment.</p>
        <p>An important part of the development process is the
easy visualization of what is happening at each part of the
designed system. This is especially important for
debugging as the most frequent problem is due to the difference
between what the programmer thinks the program should
do and what it does in reality. In addition to the variety
of observers that have already been discussed (Fig. 2), the
platform contains its own debugger, where one can walk
through the execution of all components used in the model.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Testing Scenarios</title>
      <p>
        Whether the ultimate goal of AGI (a general autonomous
machine) is achievable or not [
        <xref ref-type="bibr" rid="ref35">35</xref>
        ], researchers focus on
its sub-goals such as learning how to play games [
        <xref ref-type="bibr" rid="ref37">37</xref>
        ],
etc. One of the prominent building blocks for these
subgoals are neural networks in the form of deep learning
and CNN, and which have recently made big progress
in speech recognition [
        <xref ref-type="bibr" rid="ref40">40</xref>
        ], computer vision [
        <xref ref-type="bibr" rid="ref33">33</xref>
        ],
medical analyses [
        <xref ref-type="bibr" rid="ref43">43</xref>
        ], or language translation [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ]. Le and
colleagues [
        <xref ref-type="bibr" rid="ref36">36</xref>
        ] used a deep network to learn in
unsupervised manner what an ordinary “cat” looks like only by
watching youtube videos. While NN can also learn how to
play simple games [
        <xref ref-type="bibr" rid="ref32 ref37">32, 37</xref>
        ], they usually fail in structured
problems which demand learning hierarchies or chains of
goals. From this perspective, it seems promising to
focus on machines which can control another machine, such
as NN that learn how to control a Turing Machine [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ].
They designed a neural network which learns a procedure
to control a Turing Machine to sort numbers.
      </p>
      <p>As the goal of this paper is to provide a tool that
shortcuts the research path to an autonomous machine, we
will show how it performs on three selected AI tasks
solved by our team: learning motion control, game
playing of the Atari game Breakout, and learning hierarchies
of goals. Our solutions are highly inspired by current
machine learning literature with a stress on the usage of
neural networks, which are one of the basic building blocks
for bigger architectures.</p>
      <p>The first experiment (Sec. 3.1) will demonstrate how
our platform can be connected to an external source of
input data and how various modules of narrow AI can be
combined together to form a functioning system which can
drive a robot in a virtual world with simulated physics.</p>
      <p>
        The second experiment (Sec. 3.2) will be situated in
much simpler simulation environment – an Atari [
        <xref ref-type="bibr" rid="ref38">38</xref>
        ]
game called Breakout. In this experiment a more advanced
adaptive system will be showcased. The system works
directly on raw image input. It takes advantage of the
semantic pointer architecture [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ] for representing its
perceptions and for converting them into a long term
memories such as goals. This knowledge is then used for
learning necessary actions for playing the game.
      </p>
      <p>
        In the third experiment (Sec. 3.3), we move a bit higher
in the level of abstraction. The presented problem
consists of an agent in a simple 2D environment which needs
to satisfy a chain of preconditions before reaching a
reward, such as if the agent wants to turn on a light, it needs
to press a switch, but to get to the switch he also needs
to overcome an obstacle (a door controlled by another
switch). The task is solved by hierarchical reinforcement
learning [
        <xref ref-type="bibr" rid="ref30">30</xref>
        ].
      </p>
      <p>To clarify why we selected these experiments, one could
imagine the three systems as parts of a future higher-order
cognitive architecture where they will work together. The
system from the first experiment could be thought of as
a basic motoric and sensory system driven by reflexes and
higher-level commands. These would come from the
system used in the second experiment, which would allow the
agent to learn how to reach a specific goal. And finally, the
third system should discover the hierarchy of goals and
preconditions, and thus could resemble a simplified
version of the agent’s central executive. Such connection of
the systems remains for our future work.
3.1</p>
      <sec id="sec-3-1">
        <title>SE Robot</title>
        <p>
          We took advantage of a sandbox game called Space
Engineers [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ], which provides a physically realistic 3D
environment where various structures can be built. We built
a six-legged robot within the game and connected it
bidirectionally with our simulation platform. In one
direction the game sends visual data from the robot’s view and
a description of the state of the robot’s body. In the other
direction motoric commands from our control module
inside the simulation platform are sent to the robot, which
executes them in the game.
        </p>
        <sec id="sec-3-1-1">
          <title>The control mod</title>
          <p>ule was trained to
associate visual
input with motor
commands in a
supervised way.</p>
          <p>
            The associative
memory was
implemented with a
Self-Organizing
Figure 3: Overall architec- Map [
            <xref ref-type="bibr" rid="ref31">31</xref>
            ], which
ture. Raw visual signals are found the most
simprocessed into symbols, which ilar representative of
are then added to the working the received input in
memory. States corresponding the visual memory
to reward and punishment are and returned the
accumulated and later used as associated high-level
teaching signals for training the motoric command
action selection network. (turn left/right, move
forward/backward). These high-level commands were
then unrolled into sequences of body states consisting of
joint angles of all of the robot’s limbs using a recurrent
neural network (RNN) [
            <xref ref-type="bibr" rid="ref39">39</xref>
            ]. These body states were
afterwards used as waypoints for a control RNN which
was trained to act as an inverse dynamics model of the
robot’s body. In order to reach a specified waypoint, the
control network generated full motoric inputs to the robot
- the desired angular velocities of joints.
          </p>
          <p>The training
phase consisted
of a mentor
leading the
robot from
various
starting locations
towards a goal
location in the
environment, which was identified by an easily
distinguishable 3D symbol located on that position. The mentor
was implemented by a hard-coded navigation system. In
this way the hexapod was trained to look for the goal
symbol and when it appeared in the robot’s field of view,
to navigate successfully towards the destination through
the environment.
3.2</p>
        </sec>
      </sec>
      <sec id="sec-3-2">
        <title>Atari Game</title>
        <p>The Breakout game was chosen as our second testing
scenario. The game consists of a ball, a paddle, and
segmentation
attention
score</p>
        <p>CNN features
input image</p>
        <p>graph
optimization</p>
        <p>patch
extraction
working
memory
bricks. The ball bounces from walls, can destroy bricks,
and can fall to the ground, for which the player is
penalized by losing a life. After losing 4 lives, the game
is over. When all bricks are destroyed, the player
successfully finishes the level and
enters the next one consisting of
a different arrangement of bricks.</p>
        <p>The player has three actions
available which accelerate the paddle to
the right, to the left, or decelerate.</p>
        <p>
          Even though our modular approach
uses pure unstructured data input
(raw image as in [
          <xref ref-type="bibr" rid="ref37">37</xref>
          ]), it later extracts the structure, so
we can understand the inner workings of the model as
opposed to the cited work. The architecture of the system
consists of four main parts: image processing, working
memory, accumulators of reward and penalty, and an
action selection network (Fig. 3).
        </p>
        <p>Relevant information about the objects is extracted from
the raw bitmap in the Vision System (Fig. 4).</p>
        <p>Working memory (WM) is the agent’s internal
representation of the environment. It contains all of the objects
detected by vision. WM is kept up to date by adding new
objects which haven’t been seen yet, and by updating those
already seen. The identity of objects is detected through
a comparison of visual features. Contents of the
working memory are transformed into a symbolic
representation and passed to the goals memory and action selection
network.</p>
        <p>The goals memory is trained by accumulating states
associated with reward and punishment in their respective
semantic pointers, goal+ and goal-. These are then used
for evaluating the quality of game-states, which is
necessary for training the action selection network.
(a) The goal
(b) Legend</p>
        <p>Details of the vision system and semantic point
architecture are described in Appendix II.
3.3</p>
      </sec>
      <sec id="sec-3-3">
        <title>2D World with Hierarchical Goals</title>
        <p>In previous testing scenarios we wanted to test if our
system was able to coordinate complex motoric commands
in a 3D environment, learn simple goals, and act towards
maximizing the received reward. Our goal for the third
scenario is to increase the generality of the designed
system to enable identification and satisfaction of chained
preconditions before the final goal can be reached.</p>
        <p>We present a task, consisting of a simple 2D world,
where a single source of reward is located – a light bulb,
which starts in the “off” position and should be turned on
by the agent. This can be achieved by pressing a switch,
but the switch is hidden behind a locked door. The door
can be unlocked through a switch, but this switch is
hidden behind another locked door. It would be possible to
chain the preconditions further in this manner, but without
the loss of generality we use only two locked doors with
two matching switches. The setup can be seen in Fig. 5.</p>
        <p>
          We approached this problem by employing HARM
(Hierarchical Action Reinforcement Motivation system) [
          <xref ref-type="bibr" rid="ref30">30</xref>
          ].
It is an approach based on a combination of a hierarchical
Q-learning algorithm [
          <xref ref-type="bibr" rid="ref42">42</xref>
          ] and a motivation model. The
system is able to learn and compose different strategies in
order to create a more complex goal.
        </p>
        <p>Q-learning is able to “spread information about the
reward” received in a specific state (e.g. the agent reaching
a position on the map) to the surrounding space, so the
brain can take proper action by climbing the steepest
gradient of the Q function later. However, if the goal state is
far away from the current state, it might take a long time
to build a strategy that will lead to that goal state. Also,
a high number of variables in the environment can lead to
extremely long routes through the state space, rendering
the problem almost unsolvable.</p>
        <p>There are several ideas that can improve the overall
performance of the algorithm. First, this agent rewards itself
for any successful change to the environment. The
motivation value can be assigned to each variable change so the
agent is constantly motivated to change its surroundings.</p>
        <p>Second, for each variable that the agent is able to
change, it creates a Q-learning module assigned to the
variable (e.g. changing the state of a door). Therefore, it
can learn an underlying strategy defining how this change
can be made again. In such a system, a whole network
of Q-learning modules can be created, where each module
learns a different strategy.</p>
        <p>Third, in order to lower the complexity of each
subproblem (strategy), the brain can analyze its “experience
buffer” from the past and eventually drop variables that
are not affected by its actions or are not necessary for the
current goal (i.e. strategy to fulfill the goal).</p>
        <p>A mixture of these improvements creates a hierarchical
decision model that is built online (first, the agent is left to
(semi-)randomly explore the environment). After a
sufficient amount of knowledge is gathered, we can “order” the
agent to fulfill a goal by manually raising the motivation
that corresponds to a variable that we want to change. The
agent then will execute the learned abstract action
(strategy) by traversing the network of Q-learning modules and
unrolling it into a chain of primitive actions that lie at the
bottom.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Discussion</title>
      <p>Throughout the work on the testing scenarios (Sec. 3) we
have observed several advantages and weakness of the
platform. In this section, our experience with the usage
of the platform is discussed. The discussion is focused
especially on the end-user experience, i.e. experience of a
person that did not develop the platform but wants to use
it for solving her problem.</p>
      <p>First, a list of identified features is presented, and then
further experience is described.</p>
      <p>+ Fast and easy online observation and interaction with
the simulation.</p>
      <p>+ Created modules can be easily understood and shared
with collaborators due to the same interface. Moreover,
the persistence capabilities allow easy sharing of whole
models (projects) and merging of them together.</p>
      <p>+ It is easy to replace an existing module with its
improved version, as the architecture is separated from the
implementation. As the backward compatibility becomes
crucial at this point, the inner versioning system was
implemented.</p>
      <p>+ Provided interface drives users to follow design
patterns when developing low-level optimized modules.</p>
      <p>- Current version runs on MS Windows only, but a port
to MacOS and Linux is planned for the future.</p>
      <p>
        - The user has an option to either develop optimized
modules in code (CUDA [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] or C#) or use the graphical
interface for connecting existing modules into bigger
architectures. There is no middle layer which would support
scripting.
4.1
      </p>
      <sec id="sec-4-1">
        <title>Experience of Newcomers</title>
        <p>The expertise of people that have started to use our
platform varies from C++ experts to Matlab users only. We
found that users with a very short training can connect
existing modules into simple architectures (like neural
network MNIST image recognizer) as the graphical
modeling is somehow natural and easy to understand. The linear
learning curve of newcomers is supported by a video
tutorial as well as several examples of how to implement
simple and more advanced tasks2.</p>
        <p>For development of new modules, it is necessary to
understand a programming language (C#, C++, CUDA) at
the basic level at least. Once the definitions of inputs,
outputs, tasks, and kernels (four lines of code each) are
understood, developers soon start creating their own nodes.
Their learning curve then equals learning how to use a new
library.
4.2</p>
      </sec>
      <sec id="sec-4-2">
        <title>Our Observations on the Testing Scenarios</title>
        <p>
          In the first scenario (Sec. 3.1), we have shown that our
platform successfully connects with the open source game
Space Engineers [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ]. Modules created in the platform
controlled the hexapod in the world of the game. It was
the understanding of the game’s communication module
that took the most time in this case. Otherwise the
development of the controller did not raise any challenges for
the platform.
        </p>
        <p>The second scenario (Sec. 3.2) consisted of several
modules that were developed independently. We found
it extremely useful that each module communicates with
others using only the pre-defined interface (memory
blocks) that correspond to a sketched diagram (i.e. Fig. 4).
Modules were merged into one big architecture right
before the deadline without any complications. As the
final model was quite large and performance-demanding,
available</p>
        <p>at http://docs.goodai.com/</p>
        <sec id="sec-4-2-1">
          <title>2Documentation</title>
          <p>brainsimulator/
we were forced to profile, find bottlenecks, and optimize
in the process. It was extremely useful to visualize data
flowing between (and inside) the modules.</p>
          <p>In the third scenario (Sec. 3.3), HARM constituted a
single module with complex insides. Therefore this
scenario presented an ideal example for designing a
number of task-specific visualization tools (for example, the
agent’s knowledge in Fig. 6).
5</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Conclusion</title>
      <p>We have presented a platform for prototyping AI
architectures. The platform is tailored both for users with no
mathematical/programming background but with a high desire
to experiment with AI modules, and for
researchers/developers who want to improve and experiment with their
existing state-of-the-art techniques.</p>
      <p>To show the usage of our platform we have presented
three development scenarios: linkage with a 3D game
world and controlling an agent there; playing an Atari
game using the raw bitmap input processed by computer
vision techniques, attention model, and semantic pointer
architecture; and learning a complex hierarchy of goals.</p>
      <p>The proposed platform opens up possibilities to share
ideas not only within the community but also with
nonexperts who can boost the research via rapid testing, or
utilize fresh, out-of-the-box solutions. There is also the
prospect of support from the open source community - if
not directly in the development, then at least in assessing
missing features, so we can incorporate them and thus
provide a tool that can be used at many levels of expertise.</p>
      <p>We believe that by providing an open platform for AI
and ML experiments along with a smooth learning curve,
we can bring together many enthusiasts across different
fields of interest, potentially leading to unexpected
advancements in research.</p>
      <p>Acknowledgement. This material is based upon work
supported by GoodAI and Keen Software House.</p>
      <sec id="sec-5-1">
        <title>Appendix I: Details of Image Processing</title>
        <p>
          Unlike the major stream of Computer Vision, our approach
has to be unsupervised without any training data. Thus, we
have no prior knowledge and the system has to learn
everything on-the-fly. Our system is a pipeline visualized and
implemented in Fig. 4. It consists of the following parts:
The input image is first
segmented into a set
of super-pixels [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ]
(SP). Then, each SP
is connected to its
vicinity constituting a
graph where nodes are
SPs and edges connect Figure 7: Performance of SLIC
neighboring SPs. SPs (blue) and SLIC+graph
optimizawith similar color are tion (red) w.r.t the number of
segmerged into connected ments.
components. Note that
while more SP speeds up the segmentation, it slows down
the graph optimization algorithm, see Fig. 7. Once we
have object proposals, we estimate an attention score (sA)
for each object, sA(oi) = ψtime(oi) + ψmove(oi), where
ψtime(oi) is time since we have focused on the object oi,
ψmove(oi) is the object’s movement. The object with the
highest sA is selected3 and its position together with its
size define an image patch. The image patch is processed
into a CNN features [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ], and this feature representation
3Once the object is selected, its ψt ime is decreased and then it won’t
be selected in the next time step.
is then clustered into a “Working Memory” (WM). The
WM stores feature id together with the object position for
the last 10 seen objects.
        </p>
        <p>
          For CNN features, we used two convolutions layers of
8 and 5 neurons and patch sizes 5 × 5 followed by a
fullyconnected layer of 16 neurons. Learning converged in
6K iterations. We observed no performance improvement
with bigger networks. WM was implemented as a simple
K-means [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ].
        </p>
      </sec>
      <sec id="sec-5-2">
        <title>Appendix II: Semantic Pointer Architecture</title>
        <p>As was already mentioned in section 1, one of the main
features of our method is the semantic pointer architecture
(SPA), which merges the symbolic and connectionist
approach. Artificial neural networks are very powerful
adaptive tools, but their usage usually comes at the expense of
losing detailed insight into how exactly the task is solved.
Such a drawback can be mitigated by using the SPA and
its variable binding. It introduces composite symbols of
the form X bind x, where X is the name of the variable
and x is its value. It is then possible to train a network to
perform complicated transforms such as:</p>
        <p>V ⊗ (X ⊗ x + Y ⊗ y) → C ⊗ (Y ⊗ x)
(1)
which could be interpreted as an action selection rule for
the pong game:</p>
        <p>Visual ⊗ (Ball ⊗ x1 + Paddle ⊗ x2) →</p>
        <p>→ Move ⊗ (Paddle ⊗ x1) (2)</p>
        <p>If ball is seen at position x1 and paddle at x2, execute
command ’move paddle to position x1’. Without SPA it
would be much harder to maintain understanding of the
transformed symbols, if not entirely impossible.
Goals Memory. The accumulated states g+ and g− are
used for calculation of quality q of the state x, using dot
product ’·’, q = g+ · x − g− · x, see Fig. 8 left.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <article-title>[1] Autodesk maya</article-title>
          . Available at http://www.autodesk. com/products/maya/overview.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Blender</surname>
          </string-name>
          . Available at https://www.blender.org/.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>[3] CUDA. Available at https://developer.nvidia.com/ cuda-zone.</mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <article-title>[4] CVX: Software for Disciplined Convex Programming</article-title>
          . Available at http://cvxr.com/.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <issue>Cx3D</issue>
          :
          <article-title>Cortex simulation in 3D</article-title>
          . Available at http://www. ini.uzh.ch/~amw/seco/cx3d/.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6] DigiCortex:
          <article-title>Biological neural network simulator</article-title>
          . Available at http://www.dimkovic.com/node/1.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>[7] GitHub. Available at https://github.com/.</mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>IBM</given-names>
            <surname>Rational Software Architect</surname>
          </string-name>
          . Available at http://www.ibm.com/developerworks/downloads/ r/architect/index.html.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>MATLAB:</surname>
          </string-name>
          <article-title>The language of technical computing</article-title>
          . Available at http://www.mathworks.com/products/matlab/.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>Microsoft</given-names>
            <surname>Azure</surname>
          </string-name>
          . Available at http://azure. microsoft.com/en-us/.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <article-title>The nengo neural simulator</article-title>
          . Available at http://nengo. ca/.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <article-title>Neural networks simulators</article-title>
          . Available at https://goo. gl/hRf4KA.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <article-title>OpenCV: Open source computer vision</article-title>
          . Available at http://opencv.org/.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <article-title>OpenNN: Open neural networks library</article-title>
          . Available at http://www.intelnics.com/opennn/.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>ParaView</surname>
          </string-name>
          . Available at http://www.paraview.org/.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <article-title>PSICS: The parallel stochastic ion channel simulator</article-title>
          . Available at http://www.psics.org/.
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Python</surname>
          </string-name>
          . Available at https://www.python.org/.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <article-title>Rapid miner</article-title>
          . Available at https://rapidminer.com/.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>ROS</surname>
          </string-name>
          . Available at http://www.ros.org/.
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <surname>Simulink</surname>
          </string-name>
          :
          <article-title>Simulation and model-based design</article-title>
          . Available at http://www.mathworks.com/products/simulink/.
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <surname>Space</surname>
            <given-names>Engineers</given-names>
          </string-name>
          , open source code. Available at https:// github.com/KeenSoftwareHouse/SpaceEngineers.
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <surname>Achanta</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shaji</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Smith</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lucchi</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fua</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Susstrunk</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Slic superpixels compared to state-of-theart superpixel methods</article-title>
          .
          <source>PAMI</source>
          (
          <year>2012</year>
          ),
          <fpage>2274</fpage>
          -
          <lpage>2282</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <surname>Ben</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          :
          <article-title>Artificial general intelligence: concept, state of the art, and future prospects</article-title>
          .
          <source>Journal of Artificial General Intelligence</source>
          <volume>5</volume>
          (
          <year>2014</year>
          ),
          <fpage>1</fpage>
          -
          <lpage>48</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <surname>Bishop</surname>
            ,
            <given-names>C. M.</given-names>
          </string-name>
          :
          <article-title>Pattern recognition and machine learning</article-title>
          . Springer,
          <year>2006</year>
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <surname>Eliasmith</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>How to build a brain: a neural architecture for biological cognition (</article-title>
          <source>Oxford Series on Cognitive Models and Architectures)</source>
          . Oxford University Press,
          <year>2013</year>
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <surname>Fritzke</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>A growing neural gas network learns topologies</article-title>
          .
          <source>In: NIPS</source>
          ,
          <year>1995</year>
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <surname>Graves</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wayne</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Danihelka</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          :
          <article-title>Neural turing machines</article-title>
          .
          <source>CoRR</source>
          ,
          <year>2014</year>
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <surname>He</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gao</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Deng</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Deep learning for natural language processing and related applications (tutorial at ICASSP)</article-title>
          .
          <source>ICASSP</source>
          ,
          <year>2014</year>
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <surname>Huang</surname>
            ,
            <given-names>F. J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Boureau</surname>
            ,
            <given-names>Y. L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lecun</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>Unsupervised learning of invariant feature hierarchies with applications to object recognition</article-title>
          .
          <source>In: CVPR</source>
          ,
          <year>2007</year>
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <surname>Kadlecek</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nahodil</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Adopting animal concepts in hierarchical reinforcement learning and control of intelligent agents</article-title>
          .
          <source>In: Proc. 2nd IEEE RAS &amp; EMBS BioRob</source>
          ,
          <year>2008</year>
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <surname>Kohonen</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schroeder</surname>
            ,
            <given-names>M. R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Huang</surname>
            ,
            <given-names>T. S.:</given-names>
          </string-name>
          <article-title>Selforganizing maps</article-title>
          .
          <source>3rd edition</source>
          ,
          <year>2001</year>
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <surname>Koutník</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cuccu</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schmidhuber</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gomez</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Evolving large-scale neural networks for vision-based reinforcement learning</article-title>
          .
          <source>In: GECCO</source>
          ,
          <year>2013</year>
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <string-name>
            <surname>Krizhevsky</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sutskever</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hinton</surname>
          </string-name>
          , G. E.:
          <article-title>Imagenet classification with deep convolutional neural networks</article-title>
          .
          <source>In: NIPS</source>
          ,
          <string-name>
            <surname>Curran</surname>
            <given-names>Associates</given-names>
          </string-name>
          , Inc.,
          <year>2012</year>
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [34]
          <string-name>
            <surname>Tsaia</surname>
            ,
            <given-names>M. -J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chang</surname>
          </string-name>
          , H.-Y.,
          <string-name>
            <surname>Huang</surname>
          </string-name>
          , K. -C.,
          <string-name>
            <surname>Huanga</surname>
          </string-name>
          , T -C.,
          <string-name>
            <surname>Tung</surname>
          </string-name>
          , Y. -H.:
          <article-title>Moldable job scheduling for hpc as a service with application speedup model and execution time information</article-title>
          .
          <source>Journal of Convergence</source>
          ,
          <year>2013</year>
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          [35]
          <string-name>
            <surname>Kurzweil</surname>
            ,
            <given-names>R.:</given-names>
          </string-name>
          <article-title>The singularity is near: when humans transcend biology, 2006</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref36">
        <mixed-citation>
          [36]
          <string-name>
            <surname>Le</surname>
            ,
            <given-names>Q.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ranzato</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          '
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Monga</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            ,
            <surname>Devin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            ,
            <surname>Corrado</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            ,
            <surname>Dean</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            ,
            <surname>Ng</surname>
          </string-name>
          ,
          <string-name>
            <surname>A.</surname>
          </string-name>
          :
          <article-title>Building high-level features using large scale unsupervised learning</article-title>
          .
          <source>In: ICML</source>
          ,
          <year>2012</year>
        </mixed-citation>
      </ref>
      <ref id="ref37">
        <mixed-citation>
          [37]
          <string-name>
            <surname>Volodymyr</surname>
          </string-name>
          et al.
          <article-title>Mnih: Human-level control through deep reinforcement learning</article-title>
          .
          <source>Nature</source>
          <volume>518</volume>
          (
          <year>2015</year>
          ),
          <fpage>529</fpage>
          -
          <lpage>533</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref38">
        <mixed-citation>
          [38]
          <string-name>
            <surname>Naddaf</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>Game-independent AI agents for playing Atari 2600 console games</article-title>
          . Masters, University of Alberta,
          <year>2010</year>
        </mixed-citation>
      </ref>
      <ref id="ref39">
        <mixed-citation>
          [39]
          <string-name>
            <surname>Rojas</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          :
          <source>Neural networks: a systematic introduction</source>
          . Springer-Verlag New York, Inc., New York, NY, USA,
          <year>1996</year>
        </mixed-citation>
      </ref>
      <ref id="ref40">
        <mixed-citation>
          [40]
          <string-name>
            <surname>Sak</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vinyals</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Heigold</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Senior</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McDermott</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Monga</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mao</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Sequence discriminative distributed training of long short-term memory recurrent neural networks</article-title>
          .
          <source>In: Interspeech</source>
          ,
          <year>2014</year>
        </mixed-citation>
      </ref>
      <ref id="ref41">
        <mixed-citation>
          [41]
          <string-name>
            <surname>Sivic</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zisserman</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Video Google: A text retrieval approach to object matching in videos</article-title>
          .
          <source>In: ICCV 2</source>
          (
          <year>2003</year>
          ),
          <fpage>1470</fpage>
          -
          <lpage>1477</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref42">
        <mixed-citation>
          [42]
          <string-name>
            <surname>Sutton</surname>
            ,
            <given-names>R. S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Barto</surname>
            ,
            <given-names>A. G.</given-names>
          </string-name>
          :
          <article-title>Introduction to reinforcement learning</article-title>
          . MIT Press, Cambridge, MA, USA, 1st edition,
          <year>1998</year>
        </mixed-citation>
      </ref>
      <ref id="ref43">
        <mixed-citation>
          [43]
          <string-name>
            <surname>Xu</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mo</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Feng</surname>
            ,
            <given-names>Q.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zhong</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lai</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chang</surname>
            ,
            <given-names>E. I. -C.</given-names>
          </string-name>
          :
          <article-title>Deep learning of feature representation with multiple instance learning for medical image analysis</article-title>
          .
          <source>ICASSP</source>
          ,
          <year>2014</year>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>