<!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>Tutor4RL: Guiding Reinforcement Learning with External Knowledge</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Mauricio Fadel Argerich</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jonathan Fu¨ rst</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Heidelberg</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Germany</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>mauricio.fadel@neclab.eu</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>jonathan.fuerst@neclab.eu</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>bin.cheng@neclab.eug</string-name>
        </contrib>
      </contrib-group>
      <pub-date>
        <year>2020</year>
      </pub-date>
      <fpage>23</fpage>
      <lpage>25</lpage>
      <abstract>
        <p>We introduce Tutor4RL, a method to improve reinforcement learning (RL) performance during training, using external knowledge to guide the agents' decisions and experience. Current approaches of RL need extensive experience to deliver good performance, something that is not acceptable in many real systems when no simulation environment or considerable previous data are available. In Tutor4RL, external knowledge- such as expert or domain knowledge- is expressed as programmable functions that are fed to the RL agent. During its first steps, the agent uses these knowledge functions to decide the best action, guiding its exploration and providing better performance from the start. As the agent gathers experience, it increasingly exploits its learned policy, eventually leaving its tutor behind. We demonstrate Tutor4RL with a DQN agent. In our tests, Tutor4RL achieves more than 3 times higher reward in the beginning of its training than an agent with no external knowledge.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Reinforcement Learning (RL) has achieved great success
in fields such as robotics
        <xref ref-type="bibr" rid="ref5">(Kober, Bagnell, and Peters
2013)</xref>
        , recommender systems
        <xref ref-type="bibr" rid="ref12">(Theocharous, Thomas, and
Ghavamzadeh 2015)</xref>
        and video games, in which RL has even
surpassed human performance
        <xref ref-type="bibr" rid="ref6">(Mnih et al. 2015)</xref>
        . However,
before achieving this, RL often poor performance for an
extended time—possibly for millions of iterations—until it has
gathered enough experience. In practice, this problem is
approached mainly with two RL techniques: (1) training via
simulation and (2) learning from historical data.
      </p>
      <p>
        Recently, researchers have applied RL to computer
systems tasks, such as database management system
configuration
        <xref ref-type="bibr" rid="ref10">(Schaarschmidt et al. 2018)</xref>
        or container
orchestration for Big Data systems
        <xref ref-type="bibr" rid="ref3">(Fadel Argerich, Cheng, and Fu¨rst
2019)</xref>
        . Here, experience data for the specific task might not
be available (e.g., the complexity of a data analytic task
depends on the processed dataset, not known before) and the
context of the agent changes drastically with each
deployment (e.g., the execution environment is different). Because
of this, data or simulation training are not feasible. Thus, the
agent needs to gather its experience online, from the
performance of a live system where each action the agent explores
has a real cost that impacts the system. To apply RL in such
scenarios, an agent needs to provide “good-enough”
performance from the start and act safely throughout the
learning
        <xref ref-type="bibr" rid="ref2">(Dulac-Arnold, Mankowitz, and Hester 2019)</xref>
        —a
fundamental problem that must be solved to make RL applicable
to real world use cases.
      </p>
      <p>However, in our application of RL for container
orchestration in Big Data systems, we have experienced that some
knowledge of the environment is usually available before the
deployment of the agent. This knowledge includes common
heuristics or notions, well known to domain experts (e.g.,
DevOps engineers). In our work, we aim to make this
knowledge accessible to the RL agent. Our intuition is that just as
a person prepares for a task beforehand by gathering
knowledge from sources such as other human-beings, manuals,
etc., we can provide external knowledge that the RL agent
can use when not enough experience has been gathered.</p>
      <p>
        To realize this concept, we introduce Tutor4RL, a method
that guides RL via external knowledge. In Tutor4RL,
external knowledge– such as expert or domain knowledge –
is expressed as programmable functions that the agent will
use during its training phase, and especially its initial steps
to guide its behavior and learning. Thanks to Tutor4RL,
the agent can perform in a reliable way from the start and
achieve higher performance in a shorter training time. As
the RL agent gathers more experience, it learns its policy
and leaves the tutor behind, improving on its results thanks
to its empirical knowledge. We take some inspiration from
the recently proposed Data Programming concept for
supervised learning, in which functions developed by experts,
are used to encode weakly supervision sources
        <xref ref-type="bibr" rid="ref9">(Ratner et al.
2017)</xref>
        .
      </p>
      <p>We test our approach with a DQN Agent in the Atari game
Breakout and compare it to a plain DQN Agent. In our tests,
Tutor4RL achieves more than a 3 times higher reward than
the plain agent in the beginning of its training, and keeps up
with its performance even after leaving the tutor behind, i.e.
only using its learned policy.</p>
    </sec>
    <sec id="sec-2">
      <title>Background and Motivation</title>
      <p>
        As illustrated in Figure 1
        <xref ref-type="bibr" rid="ref11">(Sutton, Barto, and others 1998)</xref>
        ,
in Reinforcement Learning (RL), an agent learns to control
an unknown environment to achieve a certain goal while
interacting with the environment. The agent interacts with the
environment in discrete time steps t = 0; 1; :::. In each step,
the agent receives a representation st 2 S of the state of
environment and a numerical signal rt called reward, and
performs an action at 2 A that leads to the state st+1 and
reward rt+1, perceived by the agent in the next time step. S
and A represent the sets of states and actions respectively.
      </p>
      <p>State
"</p>
      <p>Reward
"</p>
      <sec id="sec-2-1">
        <title>Agent</title>
      </sec>
      <sec id="sec-2-2">
        <title>Environment</title>
        <p>Action
"</p>
        <p>The agents’ behaviour is defined by its policy , which
provides a mapping from states S to actions A. The value
function q (s; a) represents the expected future reward
received when taking action a at state s with a policy . The
goal of the agent is to find a policy that maximizes
cumulative reward in the long run.</p>
        <p>
          To do this, the agent learns from its experience for each
performed action at, and then uses the collected
observations (st+1; rt+1) to optimize its policy based on different
models of the value function, such as a Tabular model
          <xref ref-type="bibr" rid="ref11">(Sutton, Barto, and others 1998)</xref>
          or a deep neural network
model
          <xref ref-type="bibr" rid="ref6">(Mnih et al. 2015)</xref>
          . Existing studies show that RL can
lead to a reasonable model for determining which action to
take in each state after learning from a large number of
experience data. However, the biggest problem is how the RL
agent can learn fast and efficiently from experience data.
        </p>
        <p>
          There have been different approaches of addressing this
problem in the state of the art. A simple approach is to
explore the state space randomly, but this approach is usually
time-consuming and costly when the state/action space is
large. The drawback of this approach has been reported by
our previous study
          <xref ref-type="bibr" rid="ref3">(Fadel Argerich, Cheng, and Fu¨rst 2019)</xref>
          in the case of leveraging RL to automatically decide the
configuration and deployment actions of a data processing
pipeline in a cloud and edge environment.
        </p>
        <p>Another approach is to gain experience via simulation.
With enough computational resources, we can easily
produce lots of experience data in a short time, but it is difficult
to ensure that the simulated experiences are realistic enough
to reflect the actual situations in the observed system.</p>
        <p>
          Recently, a new trend to leverage external knowledge
to improve the exploration efficiency of RL agents has
emerged. For example, in
          <xref ref-type="bibr" rid="ref7">(Moreno et al. 2004)</xref>
          and
(Hester et al. 2018), prior knowledge like pre-trained models and
policies are used to bootstrap the exploration phase of a RL
agent. However, this type of prior knowledge still originates
in previous training and is limited by the availability of such
data.
        </p>
        <p>Instead of relying on any pre-trained model, we explore
how to utilize a set of programmable knowledge functions to
guide the exploration of a RL agent so that we can quickly
make effective decisions, even just after a few exploration
steps. We call our method Tutor4RL. Unlike existing
approaches, Tutor4RL requires no previous training and is
therefore, a more practical approach for the use of RL in
real systems. To the best of our knowledge, Tutor4RL is the
first to apply programmable knowledge functions into RL
for improving training performance and sample efficiency.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Tutor4RL</title>
      <p>Figure 2 shows our overall design of Tutor4RL. As
compared to traditional RL, we add a new component called
Tutor to guide the agent to make informed decisions during
training. The reason why the tutor is able to guide the agent
is because it can directly leverage a set of knowledge
functions defined by domain experts. In this way, Tutor4RL can
help the agent avoid any blind decisions at the beginning.
The tutor possesses external knowledge and interacts with
the agent during training. The tutor takes as input the state of
the environment, and outputs the action to take; in a similar
way to the agent’s policy. However, the tutor is implemented
as programmable functions, in which external knowledge is
used to decide the mapping between states and actions, e.g.,
for Atari Breakout, the tutor takes the frame from the video
game as input, and outputs in what direction the bar should
be moved. For every time step, the tutor interacts with the
agent and gives advise to the agent for making better
decisions, based on all provided knowledge functions.</p>
      <p>One issue for the agent to consider is when and how often
it should ask for advise from the tutor. In a similar fashion
to Epsilon greedy exploration, we define as the threshold
parameter for the agent to control when it will take the
suggested actions from the tutor instead of its own decisions.
is a parameter of our model and the best value to initialize
it depends on the use case; thus its initial value is left to be
decided during implementation.</p>
      <p>State
"</p>
      <p>Domain
experts
Reward
"
knowledge
functions</p>
      <p>Tutor</p>
      <p>Agent
Environment</p>
      <p>Action
"</p>
      <p>Knowledge functions must be programmed by domain
experts and allow them to easily bring different types of
domain knowledge into the tutor component. Currently,
Tutor4RL considers the following two types of knowledge
functions: Constrain Functions and Guide Functions.</p>
      <p>Constrain Functions are programmable functions that
constrain the behavior of the agent. At each time step t, a
constrain function takes the state of the environment as
input, and returns a vector to indicate whether an action in the
action space could be taken or not using the value 1 or 0; 1
represents the action is enabled while 0 represents the action
is disabled and cannot be performed for this state. Therefore,
constrain functions provide a mask to avoid unnecessary
actions for certain states.</p>
      <p>Guide Functions are programmable functions that
express domain heuristics that the agent will use to guide its
decisions, especially in moments of high uncertainty, e.g. the
start of the learning process. Each guide function takes the
current RL state and reward as input, and outputs a vector
to represent the weight of each preferred action according to
the encoded domain knowledge.</p>
      <p>The benefit of Tutor4RL is twofold:
1. During training, the tutor enables a reasonable
performance, opposed to the unreliable performance from an
inexperienced agent, while generating experience for
training. Furthermore, the experience generated by the tutor is
important because it provides examples of good behavior.
2. The knowledge of the tutor does not need to be
perfect or extensive. The tutor might have partial knowledge
about the environment, i.e. know what to do in certain
cases only, or might not have a perfectly accurate
knowledge. The tutor provides some ”rules of thumb” that the
agent can follow during training, and based on experience,
the agent can improve upon these decisions, achieving a
higher reward than the tutor.</p>
    </sec>
    <sec id="sec-4">
      <title>Evaluation</title>
      <p>
        We implement Tutor4RL by modifying the DQN
        <xref ref-type="bibr" rid="ref6">(Mnih et
al. 2015)</xref>
        agent, using the library Keras-RL
        <xref ref-type="bibr" rid="ref8">(Plappert 2016)</xref>
        along with Tensorflow. In order to make our evaluation
reproducible, we choose a well-known workload for RL:
playing Atari games. In particular, we select the Atari game
Breakout, using the environment BreakoutDeterministic-v4
from OpenAI Gym
        <xref ref-type="bibr" rid="ref1">(Brockman et al. 2016)</xref>
        . We compare
our approach to a standard DQN agent as implemented by
Keras-RL and we use the same set of parameters for both,
the DQN agent with Tutor4RL and the one without. The
parameters used for the agents are detailed in Table 1.
      </p>
      <p>In the BreakoutDeterministic-v4 environment, the
observation is a RGB image of the screen, which is an array of
shape (210; 160; 3) and four actions are available: no
operation, fire (starts the game by ”throwing the ball”), right and
left. Each action is repeatedly performed for a duration of
k = 4 frames. In order to simplify the state space of our
agent, we pre-process each frame converting it to greyscale
and reducing its resolution to (105; 105; 1).</p>
      <p>We implement a simple guide function that takes the
preprocessed frame, locates the the ball and the bar in the X
Epsilon
Gamma
Warmup steps
Optimizer
Tau
axis, and returns ”fire” if no ball is found, or to move in the
direction of the ball (left or right) if the ball is not above
the bar. The simplified code for this function can be seen in
Listing 1. In addition, we also include the simplified code the
agent uses in each step of its training in Listing 2, choosing
between the tutor decision and the policy decision.
def guide_function(obs):
# Find bar and ball in frame.
bar_x_left, bar_x_right = \</p>
      <p>find_bar_edges_x(obs)
ball_x = find_ball(observation)
if ball_x != None:
# Where to move bar.
if bar_x_left &gt; ball_x:</p>
      <p>return [0, 0, 0, 1] # left
elif bar_x_right &lt; ball_x &gt; 0:</p>
      <p>return [0, 0, 1, 0] # right
return [0, 1, 0, 0] # fire
Listing 1: Our implementation of a guide function for
Breakout. We check the position of the ball and the bar in
the current frame and move the bar towards the ball.
def select_action(obs, tau, guide_function):
if numpy.random.uniform() &lt; tau:
# Use tutor.
tf_output = guide_function(obs)
action = numpy.argmax(tf_output)
else:
# Use policy normally.</p>
      <p>action = policy.select_action()
return action
Listing 2: Selection of action when training the agent.</p>
      <p>Figure 3 depicts the mean reward per episode of the plain
DQN agent and DQN agent with Tutor4RL during
training. During the beginning of the training and until step
500; 000, the plain DQN Agent shows an expected low
reward (&lt; 15 points) because it starts with no knowledge,
while the DQN Agent with Tutor4RL—thanks to the use
of its tutor knowledge—manages to achieve a mean reward
between 15 and 35 points, ca. double the maximum of the
plain DQN Agent. From step 500; 000 we see how the plain
DQN agent starts to improve, but its not until step 1:1M
that the plain DQN agent shows equally good results as the
tutored one. From there we see a similar reward for both
agents,, with DQN Agent + Tutor4RL achieving a slightly
higher mean reward in most cases. Because is decreased
uniformly throughout training, the tutor is used less as
training progresses. Finally, in step 1:5M, = 0 and the tutor is
no longer used. It is important to note that from this point on,
the reward does not decrease but it keeps improving with the
agent’s learning. Moreover, we test both agents after 1:75M
steps: the plain DQN agent achieves an average reward of
40.75 points while Tutor4RL achieves a reward of 43. Note
that this reward comes only from the learned policy of the
agents and keeping = 0:05, i.e. no tutor knowledge is used.</p>
    </sec>
    <sec id="sec-5">
      <title>Discussion and Future Work</title>
      <p>Tutor4RL is ongoing research and as such we plan to
develop several improvements. First, the decision about when
to use the tutor is an important aspect to our approach.
Currently, we are using as a parameter that decreases as the
agent gathers more experience in each step. However, this
can be improved to take into account the actual learning of
the agent, i.e. how ”good” are the actions selected by the
policy, or how certain the policy is about the action to be
taken in the given state. Second, as discussed before, we
plan to evaluate constrain functions to limit the behavior of
the agent. This can help in situations in which an action does
not make sense, e.g. in Breakout, moving the bar to the left
when it’s already in its most left position. Last, the
accuracy of guide functions can vary and thus, the decisions of
the Tutor can be improved by weighting the decisions of the
functions according to their accuracy.</p>
    </sec>
    <sec id="sec-6">
      <title>Conclusion</title>
      <p>We have demonstrated Tutor4RL, a method that uses
external knowledge functions to improve the initial performance
of reinforcement learning agents. Tutor4RL targets
deployment scenarios where historical data for training is not
available and building a simulator is impractical. Our results
show that Tutor4RL achieves 3 times higher reward than an
agent without using external knowledge in its initial stage.</p>
    </sec>
    <sec id="sec-7">
      <title>Acknowledgments</title>
      <p>The research leading to these results has
received funding from the European
Community’s Horizon 2020 research and innovation
programme under grant agreement no 779747.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <surname>Brockman</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Cheung</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Pettersson</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Schneider</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Schulman</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Tang</surname>
          </string-name>
          , J.; and
          <string-name>
            <surname>Zaremba</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          <year>2016</year>
          .
          <article-title>Openai gym</article-title>
          .
          <source>arXiv preprint arXiv:1606</source>
          .
          <fpage>01540</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <string-name>
            <surname>Dulac-Arnold</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Mankowitz</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ; and Hester,
          <string-name>
            <surname>T.</surname>
          </string-name>
          <year>2019</year>
          .
          <article-title>Challenges of real-world reinforcement learning</article-title>
          .
          <source>arXiv preprint arXiv:1904</source>
          .12901.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <given-names>Fadel</given-names>
            <surname>Argerich</surname>
          </string-name>
          , M.; Cheng, B.; and Fu¨rst,
          <string-name>
            <surname>J.</surname>
          </string-name>
          <year>2019</year>
          .
          <article-title>Reinforcement learning based orchestration for elastic services</article-title>
          . arXiv preprint arXiv:
          <year>1904</year>
          .12676.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          2018.
          <article-title>Deep q-learning from demonstrations</article-title>
          .
          <source>In Thirty-Second AAAI Conference on Artificial Intelligence.</source>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <string-name>
            <surname>Kober</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Bagnell</surname>
            ,
            <given-names>J. A.</given-names>
          </string-name>
          ; and
          <string-name>
            <surname>Peters</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <year>2013</year>
          .
          <article-title>Reinforcement learning in robotics: A survey</article-title>
          .
          <source>The International Journal of Robotics Research</source>
          <volume>32</volume>
          (
          <issue>11</issue>
          ):
          <fpage>1238</fpage>
          -
          <lpage>1274</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <string-name>
            <surname>Mnih</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Kavukcuoglu</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Silver</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Rusu</surname>
            ,
            <given-names>A. A.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Veness</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ; Bellemare,
          <string-name>
            <given-names>M. G.</given-names>
            ;
            <surname>Graves</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ;
            <surname>Riedmiller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ;
            <surname>Fidjeland</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. K.</given-names>
            ;
            <surname>Ostrovski</surname>
          </string-name>
          ,
          <string-name>
            <surname>G.</surname>
          </string-name>
          ; et al.
          <year>2015</year>
          .
          <article-title>Human-level control through deep reinforcement learning</article-title>
          .
          <source>Nature</source>
          <volume>518</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <string-name>
            <surname>Moreno</surname>
            ,
            <given-names>D. L.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Regueiro</surname>
            ,
            <given-names>C. V.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Iglesias</surname>
          </string-name>
          , R.; and
          <string-name>
            <surname>Barro</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <string-name>
            <surname>Plappert</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <year>2016</year>
          .
          <article-title>keras-rl</article-title>
          . https://github.com/keras-rl/kerasrl.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <string-name>
            <surname>Ratner</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Bach</surname>
            ,
            <given-names>S. H.</given-names>
          </string-name>
          ; Ehrenberg,
          <string-name>
            <given-names>H.</given-names>
            ;
            <surname>Fries</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            ;
            <surname>Wu</surname>
          </string-name>
          ,
          <string-name>
            <surname>S.</surname>
          </string-name>
          ; and Re´,
          <string-name>
            <surname>C.</surname>
          </string-name>
          <year>2017</year>
          .
          <article-title>Snorkel: Rapid training data creation with weak supervision</article-title>
          .
          <source>Proceedings of the VLDB Endowment</source>
          <volume>11</volume>
          (
          <issue>3</issue>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          <string-name>
            <surname>Schaarschmidt</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Kuhnle</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Ellis</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Fricke</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Gessert</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ; and
          <string-name>
            <surname>Yoneki</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          <year>2018</year>
          .
          <article-title>Lift: Reinforcement learning in computer systems by learning from demonstrations</article-title>
          . arXiv preprint arXiv:
          <year>1808</year>
          .07903.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          <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>
          ; et al.
          <year>1998</year>
          .
          <article-title>Introduction to reinforcement learning</article-title>
          , volume
          <volume>2</volume>
          . MIT press Cambridge.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          <string-name>
            <surname>Theocharous</surname>
            , G.; Thomas,
            <given-names>P. S.</given-names>
          </string-name>
          ; and Ghavamzadeh,
          <string-name>
            <surname>M.</surname>
          </string-name>
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>