<!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>Realisation of Smart Home applications with Lego Mindstorms and neural networks</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Kerstin Strecker</string-name>
          <email>kerstin.strecker@informatik.uni-goettingen.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Göttingen</institution>
          ,
          <addr-line>Goldschmidtstr. 7, 37077 Göttingen</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>In this article, we present a teaching sequence to introduce the topic area of neural networks with the help of Lego robots. Using the Lego system, we implement applications in the area of home automation in a large doll's house. With the help of neural networks, the home control system “learns” the behaviours of its residents and makes it individually configurable for each resident. The learning scenario enables differentiating tasks, which can be selected by the students themselves and thus allow all students to be successful. The lesson introduces the functionality of perceptrons and small multilayer neural networks on the basis of logical expressions.</p>
      </abstract>
      <kwd-group>
        <kwd>Neural Networks</kwd>
        <kwd>Lego Mindstorms</kwd>
        <kwd>Smart Home</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        This enables internal differentiation as well as a range of complexity with regard to
Smart Home solutions [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>
        The target group with which this teaching scenario has been tested repeatedly
[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ][
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] comprises pupils in secondary level 1, who have little previous experience with
the creation of their own programs. The learning scenario is thus also a good
introduction to algorithms [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
      </p>
      <p>
        In this article, we want to expand the example of home control with physical
computing systems (here: Lego Mindstorms [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]) to include neural networks. As such, the
home control should become individually configurable. To illustrate: In the traditional
Lego Smart Home, the algorithm: when it gets light, the window is opened
automatically, may have been implemented. In combination with the neural networks, the
Smart Home system “learns” that the resident always opens the window when it is
light outside, and carries out this action autonomously after some time. In this way, it
corresponds with the above-described algorithm. However, the resident may also
open the window every time it gets dark. This would lead to another configuration of
the neural network, according to which the window is always opened when it is dark
outside. In the traditional Smart Home application, this would require the
implementation of a new algorithm.
      </p>
      <p>
        For our Smart Home application with neural networks, we use the Lego-NXT
Robot [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], Lego bricks and the Enchanting software [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] as a physical computing system.
In the following, we will intentionally use very simple, non-complex networks, whose
training phase can be easily understood manually. In this way, we are providing an
introduction to the topic area of neural networks, which can be consolidated at a later
date. We shall not consider complex networks and are also consciously reducing the
implementation into a programming language didactically. With this reduction
however, the learning scenario is also suitable for secondary level 1, a point in time at
which some programming skills are likely to already exist.
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>Our example scenario</title>
      <p>Our Smart Home application is an automatic window control system. This example
should be viewed as representative for many other Smart Home applications. The
window is to be opened and closed by means of a motor. On the one hand, this should
be possible manually by using a touch sensor. The state of the window can be
adjusted with the touch sensor. If the window is open, it can be closed by using the touch
sensor. If the window is closed, it can be opened using the touch sensor.</p>
      <p>Our neural network should be able to open and close the window automatically
depending on the preference of the resident. To do this, it processes the input values of
two sensors: a sound sensor and a light sensor. For simplicity’s sake, there are only
two different input values for each sensor. The sound sensor can measure loud or
quiet. The light sensor can measure light or dark. Both sensors are attached to the
outside wall of the house.</p>
      <p>In order to motivate the integration of a neural network, we consider the following
example scenario.</p>
      <p>Take the house of the Smith family: It has several bedrooms, in which the same
new intelligent window closing system is to be installed. However, the residents of
our house all have very different preferences.</p>
      <p>Uncle Peter always sleeps with the window open, regardless of how noisy or quiet
it is outside. But he always keeps the window closed during the day, because he is at
work and a closed window seems more secure to him. Above all, he doesn’t want any
insects to fly into his room during the day.</p>
      <p>Mum Kate also sleeps with the window open, regardless of how noisy or quiet it is
outside. During the day however, she opens the window even if it is loud outside,
because that’s when the children play in the garden and Mum Kate wants to be able to
hear them. The windows are only kept shut during the day when it is quiet outside.</p>
      <p>Grandma Emmy has her very own peculiarities. She opens the window during the
day when it’s noisy so she can hear her grandchildren playing and the birds singing.
On quiet days, the window is kept closed. She likes her peace and quiet during the
night. As such, she only opens the window at night when it is quiet outside. If it is
noisy outside, however, she closes the window at night because she cannot sleep
otherwise.</p>
      <p>Dad Eric always works night shifts. For this reason, he keeps the window closed at
night because he’s not at home. Dad Eric sleeps during the day. But he only opens the
window during the day when it’s quiet outside. If not, the window is kept closed so he
can sleep in peace.
3</p>
    </sec>
    <sec id="sec-3">
      <title>The integration of a neural network</title>
      <sec id="sec-3-1">
        <title>We represent an artificial neuron as follows (see Fig. 1):</title>
        <p>
          We want to implement a small neural network, with which simple logical
operations can be realised. The network should have only binary inputs and outputs, but
have multiple layers, for example to also realise an XOR operation [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. In order to
approach the multi-layer neural network, an initial implementation can include only
single neurons/perceptrons, then the necessity of multi-layer networks can be
motivated in a task, and finally small multi-layer networks can be used (cf. [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]).
        </p>
        <p>We only choose binary inputs and outputs so that the pupils can manually retrace
the adjustment of weights in our small neural networks. In our learning scenario, we
use the sound sensor and the light sensor. All sensors should yield binary values, the
pupils can decide the thresholds themselves so that the sensors yield the values -1 or
1.</p>
        <p>
          The following coding should apply:
• sound sensor S: S corresponds to S = 1 (loud), S̅ corresponds to S = -1 (quiet)
• light sensor L: L corresponds to L = 1 (light), L̅ corresponds to L = -1 (dark)
In this way, we can represent all logical AND operations that can be formed from
L and S (in the following referred to as minterms) as perceptrons [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]:
        </p>
        <p>
          If the sum of inputs multiplied by the corresponding weights in a neuron is larger
than or equal to the threshold of the neuron, then the neuron yields the output 1, in all
other cases -1. For the output neuron of the final layer we define:
• Output (action) = 1 =&gt; Window open
• Output (action) = -1 =&gt; Window closed
A perceptron with two input points, which is connected to the two sensors S and L,
can be implemented and also trained. We will not go into any more detail at this
point, as the implementation results directly from a reduction of the implementation
of a multi-layer network which we will describe in detail later, or which can be
looked up in [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. For the opening of his window, Dad Eric wants the configuration
L ∧ S̅. Here, we would only require one perceptron that we would need to train
accordingly. If, however, we tried to find the suitable weights to implement Grandma
Emmy’s wishes, we would fail. Grandma Emmy’s wishes are namely coded as
follows:
1 (window open)
−1 (window closed)
 ( ∧  ) ∨ ( ̅∧ ̅)

(2)
        </p>
        <p>From this, we can derive the necessity of using multi-layer networks, as Grandma
Emmy’s configuration corresponds to the logical term NOT-XOR.</p>
        <p>
          Our small neural network should be able to realise simple logical operations. We
continue to use two input variables and a total of three neurons, which we want to
connect as follows (see Fig. 2):
A few words on the use and legitimation of this type of network (cf. multiple adaptive
linear neuron [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]). In our example, we are using two sensors with binary values. Our
network should be able to model all possible functions from these two variables, that
is 16 possible functions. The final layer in our network simulates an OR operation.
Let us consider the 16 possibilities in more detail:
• Our function consists of two minterms linked to OR =&gt; in accordance with the
table 1, the two minterms can be modelled with the two neurons and are linked
to OR in the second layer (example: Grandma Emmy and Uncle Peter)
• Our function consists of a minterm =&gt; weight3 and weight4 are set to 0, weight1
and weight2 according to the minterm as per table1 (example: Dad Eric)
• Our function consists of three minterms linked to OR =&gt; of these, at least two
terms can be summarised to S, L, S̅ or L̅. This can be modelled in one of the
neurons in the intermediate layer. The remaining third term can be modelled
with the other neuron (example: Mum Kate)
• Our function is always -1 =&gt; set all weights to 0
• Our function is always 1 =&gt; set weight3 and weight4 to 0, set weight1 to the
value 2 and weight2 to the value -2.
        </p>
        <p>
          The network in Figure 2 is thus sufficient for any “desired window opening” of our
residents. In didactic terms, however, we also have the advantage that the weights in
the final layer remain constant, and that during the learning phase, we only have to
consider changes to the weights in the first layer. Processes such as backpropagation
[
          <xref ref-type="bibr" rid="ref12">12</xref>
          ][
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] etc. therefore do not have to be considered; the pupils can decide themselves
how the weights have to be adjusted during the learning phase, but more on this later.
A further advantage is that the network learns very quickly. Later on, our learning rate
will be 0.5, and thus the network usually “learns” with only a few training runs. This
is also important from a didactic point of view, as a neural network can lose its
meaningfulness to pupils if they later have to manually adjust the window too often.
        </p>
        <p>First, we translate the requirements of our residents into neural networks (whereby
there can be several options). This is also a possible initial practice task for pupils,
which can enable a reflective consideration of the training of our neural networks later
on.</p>
      </sec>
      <sec id="sec-3-2">
        <title>Mum Kate</title>
      </sec>
      <sec id="sec-3-3">
        <title>Grandma Emmy</title>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>The implementation of our Smart Home system with neural networks</title>
      <p>For the implementation, we separate our problem into three stages. First, we look
at the mechanics. To do so, we equip a window with a motor and open and close it by
using a touch sensor, which we test.</p>
      <p>In the second stage, we implement the neural network, but set the weights by hand
in the source code. In this way, we can realise and test the control for Grandma Emmy
or Mum Kate or Uncle Peter.</p>
      <p>In the third stage, the weights should adjust automatically and our Smart Home
solution should be equally suitable for all residents. For this, the neural network should
control the window motor. If, however, a resident is unsatisfied and subsequently
adjusts the window manually using the touch sensor, the weights should change; thus,
the neural network should “learn” the behaviour of our residents.</p>
      <p>The “learning” of our neural network is comprised quite deliberately only of the
change to the weights at the edges. The threshold should remain as unchanged as the
number of neurons or the existence of links. For the pupils however, a systemisation
stage of the topic should make clear that this represents a didactic reduction, and that
a neural network can, in principle, be changed in other ways during the running time.</p>
      <p>The code that implements all three stages is described in the following.
4.1</p>
      <p>Explanation of the implementation
First, we will explain the use of variable names in the following figure (Fig. 3):</p>
      <p>The sound sensor yields the value S = 1 if it is loud outside, and S = -1 if it is quiet
outside. This is encapsulated in the block: “get value sound sensor”</p>
      <p>The light sensor yields the value L = 1 if it is light outside, and L = -1 if it is dark
outside. This functionality is also encapsulated in the block: “get value light
sensor”</p>
      <p>The weights on the incoming edges of the upper neuron of the first layer are named
ws1 and wl1. The neuron yields the result -1 or 1, which is stored in the variable ir1.
(ir1 stands for “interim result 1”). The following applies: If the sum of inputs
multiplied by the associated edge weights is larger than or equal to the threshold, then the
output is 1 (the neuron fires), in all other cases it is -1.</p>
      <p>In this case, mathematically stated:
ir1 = {</p>
      <p>1, if (S ∗ ws1 + L ∗ wl1) ≥ 2
−1, else
ir2 = {</p>
      <p>1, if (S ∗ ws2 + L ∗ wl2) ≥ 2
−1, else
outputNeuron = {</p>
      <p>1, if (ir1 ∗ 1 + ir2 ∗ 1) ≥ 0
−1, else</p>
      <sec id="sec-4-1">
        <title>The corresponding code is (see Fig. 4):</title>
        <p>(3)
(4)
(5)</p>
        <p>At the start of the program, all weights are set to zero and the light source of the
light sensor is “switched off”.</p>
        <p>As we want to be able to open and close our window manually using the touch
sensor on the one hand, and automatically on the other hand, a further variable state is
introduced. If state=0, this means that the window is currently closed. Variable
state=1 means that the window is currently open. At the start of the program, the
variable state is set to zero. The code for the automatic window control is shown in
Figure 5.</p>
        <p>Let us now consider the manual control. The window can be opened and closed
manually with the touch sensor. If the touch sensor is activated and the window is
open, it will be closed. If the touch sensor is activated and the window is closed, then
it is opened. For this, we use our variable state. However, if the window needs to be
opened or closed manually, this means that our neural network is not configured
according to the requirements of the residents. The weights thus need to be adjusted.</p>
        <p>If the window is closed and then opened manually, the weights have to be
increased so that it would actually have been opened automatically.</p>
        <p>If the window is open and then closed manually, the weights have to be decreased,
because it should actually have closed automatically (Figure 6).</p>
        <p>We carry out several runs with the same settings of input variables until the
weights are set for this one case. This also decreases the number of training runs.</p>
        <p>Finally, let us consider the blocks “lift the weight” and “reduce the weight” (see
Fig. 7). The learning rate was set to 0.5 at the start of the program, and is stored in the
variable “learning rate”.</p>
        <p>If the window is open and is closed manually, then the weights have to be
decreased. Remember: The window is open if the value of outputNeuron=1. It should
have been -1, otherwise the window would not now have to be manually closed. If the
value of outputNeuron=1, there are three possibilities:
• ir1=1 and ir2=-1
• ir1=-1 and ir2=1
• ir1=1 and ir2=1</p>
        <p>In the first two cases, the “faulty” neuron is identified in the intermediate layer (the
one yielding the value of 1) and either of the weight pairs ws1/wl1 or ws2/wl2 have to
be decreased in accordance with the input value S or L (if S or L is negative, the
weights have to be increased, which occurs implicitly through the multiplication of S
or L with the learning rate). In the third case, it is not clear which is the “faulty”
neuron, which is why one of the two neurons are selected at random and the weights of
the first layer of this neuron are changed.</p>
        <p>The process for increasing the weights is similar.</p>
        <p>If the window is closed and is opened manually, then the weights have to be
increased. Remember: The window is closed if the value of outputNeuron = -1. It
should have been 1, otherwise the window would not now have to be manually
opened.</p>
        <p>However, the value of outputNeuron can only be -1 if both neurons in the
intermediate layer yield the value -1, that is, ir1 = ir2 = -1. The “faulty” neuron cannot be
identified. Thus, one of the two neurons is selected at random. The weights of the first
layer are increased for this neuron. (If S or L is negative, the weights have to be
decreased, which occurs implicitly through the multiplication of S or L with the learning
rate).</p>
        <p>
          Our learning scenario describes an introduction to the functionality of artificial
neural networks. Our neural networks implement simple logical functions, in
accordance with [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ][
          <xref ref-type="bibr" rid="ref11">11</xref>
          ].
        </p>
        <p>Using a motivating example scenario with everyday relevance and the opportunity
for a haptic, enactive experience with technical systems, the pupils learn the
following:
• The pupils can describe and implement the functionality of a perceptron
• The pupils can name the limitations of a perceptron
• The pupils can describe and implement the functionality of a small, multi-layer
network
• They recognise that the implementation of neural networks represents a
deterministic algorithm, which they are familiar with
• The pupils can understand and reflects on the adjustment of weights of a neural
network through manual feedback
• They recognise that due to a training phase, particular parameters of the
algorithm during the runtime are adjusted, and the algorithm can thus be configured
differently
• They recognise that the parameter adjustment (depending on feedback) can be
different, and therefore future results of the algorithm are in accordance with the
parameter settings
• They can identify a previously unfamiliar problem-solving strategy, which is
that one and the same algorithm is used for different applications, in that it is
trained by the adjusting of parameters and thus configured
• The pupils recognise that the algorithm does not achieve a level of
consciousness or similar, such as might be assumed for “artificial intelligence”.
In this article, there is no survey of learning groups before and after the lesson to
confirm the learning aims. This is due to the current Corona crisis and will be carried out
as soon as possible.
6</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Didactic categorisation, conclusion and outlook</title>
      <p>Our learning scenario is intended to offer an introduction to the basic concepts of
neural networks. As such, it aims to show that the “learning” of neural networks is
equivalent, among other things, to the adjustment of particular parameters (here: the
weights) during the runtime on the basis of feedback.</p>
      <p>
        The author views the benefits of physical computing to include an enactive dealing
with informatics and the creation of operable, impressive products, even if these are
not particularly complex in informatics terms. In this way, even less able pupils can
be successful. At the same time, the Smart Home offers a learning environment that is
motivating and relatable to the lives of the pupils. With many small functions
(automatic window opening, automatic ventilation control, …) that can be integrated into a
Smart Home, pupils can choose their own tasks, which increases their pride in the
later product [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. The pupils experience themselves as self-efficient and constructive.
In addition, the Smart Home offers many different implementation options (as
described in Chapter 1), which can also be creatively implemented without neural
networks. Within a framework of internal differentiation, even weaker pupils can achieve
results that can be carried out and presented. Even if neural networks are integrated, a
simpler implementation can include only the application of perceptrons [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. This
also leads to operable, functioning products (Smart Homes), but is not quite as
comprehensive and complex as multi-layer neural networks in terms of programming.
This aspect also contributes to internal differentiation. For heterogeneous learning
groups, there are the following complexity levels that all deliver impressive products:
At the first three levels, the functionality is implemented directly:
• A pure activation of motors (open window) without consideration of sensors
• The activation of motors dependent on sensor values (if it gets hot, the window
opens)
• The activation of motors dependent on links between sensor values (if it is hot
and quiet, the window opens)
At the next levels, the system “learns” from the behaviour of the user:
• The implementation of a perceptron with a change of weights if the user
controls it manually (training the perceptron so that the window opens when it is
dark and quiet)
• The implementation of a multi-layer network with a change of weights if the
user controls it manually (training the network so that the window opens if it is
dark and quiet or light and noisy)
In this article, the focus is on neural networks that are very small, but nonetheless
meaningful to pupils. On the basis of these small networks, the basic functionality can
be taught.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Strecker</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          (
          <year>2009</year>
          ):
          <article-title>Informatik für Alle - wie viel Programmierung braucht der Mensch</article-title>
          . Dissertation. University of Göttingen.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Modrow</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          &amp;
          <string-name>
            <surname>Strecker</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          (
          <year>2011</year>
          )
          <article-title>: PuMa II.</article-title>
          LOG IN: Vol.
          <volume>31</volume>
          , No. 1. LOG IN Verlag.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Przybylla</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          &amp;
          <string-name>
            <surname>Romeike</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          (
          <year>2013</year>
          )
          <article-title>: Physical Computing im Informatikunterricht</article-title>
          . In: Breier,
          <string-name>
            <given-names>N.</given-names>
            ,
            <surname>Stechert</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            &amp;
            <surname>Wilke</surname>
          </string-name>
          ,
          <string-name>
            <surname>T.</surname>
          </string-name>
          (Hrsg.), INFOS 2013:
          <article-title>Informatik erweitert Horizonte - 15. GI-Fachtagung Informatik und Schule. Bonn: Gesellschaft für Informatik e</article-title>
          .V.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Gramm</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , (
          <year>2014</year>
          ).
          <article-title>Portfolioarbeit im Informatikunterricht</article-title>
          . LOG IN: Vol.
          <volume>34</volume>
          , No. 1. LOG IN Verlag
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Modrow</surname>
            <given-names>E.</given-names>
          </string-name>
          &amp;
          <string-name>
            <surname>Strecker</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          (
          <year>2016</year>
          ):
          <article-title>Didaktik der Informatik</article-title>
          . DeGruyter-Oldenbourg Verlag
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>LEGO</given-names>
            <surname>Homepage</surname>
          </string-name>
          , https://www.lego.com/de-de/categories/robots-for-kids,
          <source>last accessed</source>
          <year>2020</year>
          /09/07.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>Enchanting</given-names>
            <surname>Homepage</surname>
          </string-name>
          , https://enchanting.robotclub.ab.ca/tiki-index.php,
          <source>last accessed</source>
          <year>2020</year>
          /09/07.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Rashid</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          (
          <year>2017</year>
          )
          <article-title>: Neuronale Netze selbst programmieren</article-title>
          .
          <source>Ein verständlicher Einstieg mit Python. O'Reilly</source>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Strecker</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          (
          <year>2020</year>
          ).
          <article-title>Robby lernt - aber nicht alles! Eine Einführung in die Funktionsweise von Perzeptren</article-title>
          . LOG IN: Vol.
          <volume>40</volume>
          , No. 1. Berlin: LOG IN Verlag
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Minsky</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          &amp;
          <string-name>
            <surname>Papert</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          (
          <year>1969</year>
          ):
          <article-title>Perceptrons: An Introduction to Computational Geometry</article-title>
          . MIT Press.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Mehrotra</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mohan</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          &amp;
          <string-name>
            <surname>Ranka</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          (
          <year>1996</year>
          )
          <article-title>: Elements of Artificial Neural Networks</article-title>
          . MIT Press.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Rojas</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          (
          <year>1996</year>
          )
          <article-title>: Neural Networks - A Systematic Introduction</article-title>
          . Springer-Verlag
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Goodfellow</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bengio</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          &amp;
          <string-name>
            <surname>Courville</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          (
          <year>2016</year>
          )
          <article-title>: Deep Learning</article-title>
          . MIT Press
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>