The Art of Reinforcement Learning: Fundamentals, Mathematics, and Implementations with Python 1st Edition Michael Hu instant download
The Art of Reinforcement Learning: Fundamentals, Mathematics, and Implementations with Python 1st Edition Michael Hu instant download
https://ebookmass.com/product/the-art-of-reinforcement-
learning-fundamentals-mathematics-and-implementations-with-
python-1st-edition-michael-hu/
https://ebookmass.com/product/the-art-of-reinforcement-learning-
michael-hu/
https://ebookmass.com/product/learning-scientific-programming-with-
python-hill/
https://ebookmass.com/product/model-based-reinforcement-learning-
milad-farsi/
https://ebookmass.com/product/learning-scientific-programming-with-
python-2nd-edition-christian-hill-2/
https://ebookmass.com/product/learning-scientific-programming-with-
python-2nd-edition-christian-hill/
https://ebookmass.com/product/python-fundamentals-for-finance-a-
survey-of-algorithmic-options-trading-with-python-van-der-post/
https://ebookmass.com/product/mathematics-fundamentals-dr-des-hill/
The Art of
Reinforcement
Learning
Fundamentals, Mathematics,
and Implementations with Python
—
Michael Hu
The Art of Reinforcement Learning
Michael Hu
Distributed to the book trade worldwide by Springer Science+Business Media New York, 1 New York Plaza, Suite 4600,
New York, NY 10004-1562, USA. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail orders-ny@springer-sbm.com, or
visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science +
Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation.
For information on translations, please e-mail booktranslations@springernature.com; for reprint, paperback, or audio rights,
please e-mail bookpermissions@springernature.com.
Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also
available for most titles. For more information, reference our Print and eBook Bulk Sales web page at http://www.apress.com/
bulk-sales.
Any source code or other supplementary material referenced by the author in this book is available to readers on GitHub (https://
github.com/Apress). For more detailed information, please visit https://www.apress.com/gp/services/source-code.
Part I Foundation
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1 AI Breakthrough in Games . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 What Is Reinforcement Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 Agent-Environment in Reinforcement Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4 Examples of Reinforcement Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.5 Common Terms in Reinforcement Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.6 Why Study Reinforcement Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.7 The Challenges in Reinforcement Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.8 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2 Markov Decision Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.1 Overview of MDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2 Model Reinforcement Learning Problem Using MDP . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3 Markov Process or Markov Chain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4 Markov Reward Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.5 Markov Decision Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.6 Alternative Bellman Equations for Value Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.7 Optimal Policy and Optimal Value Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.8 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3 Dynamic Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.1 Use DP to Solve MRP Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.2 Policy Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.3 Policy Improvement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.4 Policy Iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.5 General Policy Iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.6 Value Iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.7 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4 Monte Carlo Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.1 Monte Carlo Policy Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.2 Incremental Update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.3 Exploration vs. Exploitation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.4 Monte Carlo Control (Policy Improvement) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
vii
viii Contents
4.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5 Temporal Difference Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.1 Temporal Difference Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2 Temporal Difference Policy Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.3 Simplified -Greedy Policy for Exploration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.4 TD Control—SARSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.5 On-Policy vs. Off-Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.6 Q-Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.7 Double Q-Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
5.8 N-Step Bootstrapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
5.9 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
About the Author
xi
About the Technical Reviewer
xiii
Preface
Reinforcement learning (RL) is a highly promising yet challenging subfield of artificial intelligence
(AI) that plays a crucial role in shaping the future of intelligent systems. From robotics and
autonomous agents to recommendation systems and strategic decision-making, RL enables machines
to learn and adapt through interactions with their environment. Its remarkable success stories include
RL agents achieving human-level performance in video games and even surpassing world champions
in strategic board games like Go. These achievements highlight the immense potential of RL in solving
complex problems and pushing the boundaries of AI.
What sets RL apart from other AI subfields is its fundamental approach: agents learn by interacting
with the environment, mirroring how humans acquire knowledge. However, RL poses challenges that
distinguish it from other AI disciplines. Unlike methods that rely on precollected training data, RL
agents generate their own training samples. These agents are not explicitly instructed on how to
achieve a goal; instead, they receive state representations of the environment and a reward signal,
forcing them to explore and discover optimal strategies on their own. Moreover, RL involves complex
mathematics that underpin the formulation and solution of RL problems.
While numerous books on RL exist, they typically fall into two categories. The first category
emphasizes the fundamentals and mathematics of RL, serving as reference material for researchers
and university students. However, these books often lack implementation details. The second
category focuses on practical hands-on coding of RL algorithms, neglecting the underlying theory
and mathematics. This apparent gap between theory and implementation prompted us to create
this book, aiming to strike a balance by equally emphasizing fundamentals, mathematics, and the
implementation of successful RL algorithms.
This book is designed to be accessible and informative for a diverse audience. It is targeted toward
researchers, university students, and practitioners seeking a comprehensive understanding of RL. By
following a structured approach, the book equips readers with the necessary knowledge and tools to
apply RL techniques effectively in various domains.
The book is divided into four parts, each building upon the previous one. Part I focuses on the
fundamentals and mathematics of RL, which form the foundation for almost all discussed algorithms.
We begin by solving simple RL problems using tabular methods. Chapter 2, the cornerstone of this
part, explores Markov decision processes (MDPs) and the associated value functions, which are
recurring concepts throughout the book. Chapters 3 to 5 delve deeper into these fundamental concepts
by discussing how to use dynamic programming (DP), Monte Carlo methods, and temporal difference
(TD) learning methods to solve small MDPs.
Part II tackles the challenge of solving large-scale RL problems that render tabular methods
infeasible due to their complexity (e.g., large or infinite state spaces). Here, we shift our focus to value
function approximation, with particular emphasis on leveraging (deep) neural networks. Chapter 6
provides a brief introduction to linear value function approximation, while Chap. 7 delves into the
xv
xvi Preface
renowned Deep Q-Network (DQN) algorithm. In Chap. 8, we discuss enhancements to the DQN
algorithm.
Part III explores policy-based methods as an alternative approach to solving RL problems.
While Parts I and II primarily focus on value-based methods (learning the value function), Part III
concentrates on learning the policy directly. We delve into the theory behind policy gradient methods
and the REINFORCE algorithm in Chap. 9. Additionally, we explore Actor-Critic algorithms,
which combine policy-based and value-based approaches, in Chap. 10. Furthermore, Chap. 11 covers
advanced policy-based algorithms, including surrogate objective functions and the renowned Proximal
Policy Optimization (PPO) algorithm.
The final part of the book addresses advanced RL topics. Chapter 12 discusses how distributed
RL can enhance agent performance, while Chap. 13 explores the challenges of hard-to-explore RL
problems and presents curiosity-driven exploration as a potential solution. In the concluding chapter,
Chap. 14, we delve into model-based RL by providing a comprehensive examination of the famous
AlphaZero algorithm.
Unlike a typical hands-on coding handbook, this book does not primarily focus on coding exercises.
Instead, we dedicate our resources and time to explaining the fundamentals and core ideas behind
each algorithm. Nevertheless, we provide complete source code for all examples and algorithms
discussed in the book. Our code implementations are done from scratch, without relying on third-
party RL libraries, except for essential tools like Python, OpenAI Gym, Numpy, and the PyTorch
deep learning framework. While third-party RL libraries expedite the implementation process in real-
world scenarios, we believe coding each algorithm independently is the best approach for learning RL
fundamentals and mastering the various RL algorithms.
Throughout the book, we employ mathematical notations and equations, which some readers
may perceive as heavy. However, we prioritize intuition over rigorous proofs, making the material
accessible to a broader audience. A foundational understanding of calculus at a basic college level,
minimal familiarity with linear algebra, and elementary knowledge of probability and statistics
are sufficient to embark on this journey. We strive to ensure that interested readers from diverse
backgrounds can benefit from the book’s content.
We assume that readers have programming experience in Python since all the source code is
written in this language. While we briefly cover the basics of deep learning in Chap. 7, including
neural networks and their workings, we recommend some prior familiarity with machine learning,
specifically deep learning concepts such as training a deep neural network. However, beyond
the introductory coverage, readers can explore additional resources and materials to expand their
knowledge of deep learning.
This book draws inspiration from Reinforcement Learning: An Introduction by Richard S. Sutton
and Andrew G. Barto, a renowned RL publication. Additionally, it is influenced by prestigious
university RL courses, particularly the mathematical style and notation derived from Professor Emma
Brunskill’s RL course at Stanford University. Although our approach may differ slightly from Sutton
and Barto’s work, we strive to provide simpler explanations. Additionally, we have derived some
examples from Professor David Silver’s RL course at University College London, which offers a
comprehensive resource for understanding the fundamentals presented in Part I. We would like to
express our gratitude to Professor Dimitri P. Bertsekas for his invaluable guidance and inspiration
in the field of optimal control and reinforcement learning. Furthermore, the content of this book
incorporates valuable insights from research papers published by various organizations and individual
researchers.
In conclusion, this book aims to bridge the gap between the fundamental concepts, mathematics,
and practical implementation of RL algorithms. By striking a balance between theory and implementa-
tion, we provide readers with a comprehensive understanding of RL, empowering them to apply these
Preface xvii
techniques in various domains. We present the necessary mathematics and offer complete source
code for implementation to help readers gain a deep understanding of RL principles. We hope this
book serves as a valuable resource for readers seeking to explore the fundamentals, mathematics, and
practical aspects of RL algorithms. We must acknowledge that despite careful editing from our editors
and multiple round of reviews, we cannot guarantee the book’s content is error free. Your feedback and
corrections are invaluable to us. Please do not hesitate to contact us with any concerns or suggestions
for improvement.
Source Code
You can download the source code used in this book from github.com/apress/art-of-reinforcement-lear
ning.
Michael Hu
Part I
Foundation
Introduction
1
Artificial intelligence has made impressive progress in recent years, with breakthroughs achieved
in areas such as image recognition, natural language processing, and playing games. In particular,
reinforcement learning, a type of machine learning that focuses on learning by interacting with an
environment, has led to remarkable achievements in the field.
In this book, we focus on the combination of reinforcement learning and deep neural networks,
which have become central to the success of agents that can master complex games such as board
game Go and Atari video games.
This first chapter provides an overview of reinforcement learning, including key concepts such as
states, rewards, policies, and the common terms used in reinforcement learning, like the difference
between episodic and continuing reinforcement learning problems, model-free vs. model-based
methods.
Despite the impressive progress in the field, reinforcement learning still faces significant chal-
lenges. For example, it can be difficult to learn from sparse rewards, and the methods can suffer from
instability. Additionally, scaling to large state and action spaces can be a challenge.
Throughout this book, we will explore these concepts in greater detail and discuss state-of-the-art
techniques used to address these challenges. By the end of this book, you will have a comprehensive
understanding of the principles of reinforcement learning and how they can be applied to real-world
problems.
We hope this introduction has sparked your curiosity about the potential of reinforcement learning,
and we invite you to join us on this journey of discovery.
The Atari 2600 is a home video game console developed by Atari Interactive, Inc. in the 1970s. It
features a collection of iconic video games. These games, such as Pong, Breakout, Space Invaders,
and Pac-Man, have become classic examples of early video gaming culture. In this platform, players
can interact with these classic games using a joystick controller.
© The Author(s), under exclusive license to APress Media, LLC, part of Springer Nature 2023 3
M. Hu, The Art of Reinforcement Learning,
https://doi.org/10.1007/978-1-4842-9606-6_1
4 1 Introduction
Fig. 1.1 A DQN agent learning to play Atari’s Breakout. The goal of the game is to use a paddle to bounce a ball
up and break through a wall of bricks. The agent only takes in the raw pixels from the screen, and it has to figure out
what’s the right action to take in order to maximize the score. Idea adapted from Mnih et al. [1]. Game owned by Atari
Interactive, Inc.
The breakthrough in Atari games came in 2015 when Mnih et al. [1] from DeepMind developed
an AI agent called DQN to play a list of Atari video games, some even better than humans.
What makes the DQN agent so influential is how it was trained to play the game. Similar to a
human player, the agent was only given the raw pixel image of the screen as inputs, as illustrated in
Fig. 1.1, and it has to figure out the rules of the game all by itself and decide what to do during the
game to maximize the score. No human expert knowledge, such as predefined rules or sample games
of human play, was given to the agent.
The DQN agent is a type of reinforcement learning agent that learns by interacting with an
environment and receiving a reward signal. In the case of Atari games, the DQN agent receives a
score for each action it takes.
Mnih et al. [1] trained and tested their DQN agents on 57 Atari video games. They trained one
DQN agent for one Atari game, with each agent playing only the game it was trained on; the training
was over millions of frames. The DQN agent can play half of the games (30 of 57 games) at or better
than a human player, as shown by Mnih et al. [1]. This means that the agent was able to learn and
develop strategies that were better than what a human player could come up with.
Since then, various organizations and researchers have made improvements to the DQN agent,
incorporating several new techniques. The Atari video games have become one of the most used test
beds for evaluating the performance of reinforcement learning agents and algorithms. The Arcade
Learning Environment (ALE) [2], which provides an interface to hundreds of Atari 2600 game
environments, is commonly used by researchers for training and testing reinforcement learning agents.
In summary, the Atari video games have become a classic example of early video gaming
culture, and the Atari 2600 platform provides a rich environment for training agents in the field of
reinforcement learning. The breakthrough of DeepMind’s DQN agent, trained and tested on 57 Atari
video games, demonstrated the capability of an AI agent to learn and make decisions through trial-
and-error interactions with classic games. This breakthrough has spurred many improvements and
advancements in the field of reinforcement learning, and the Atari games have become a popular test
bed for evaluating the performance of reinforcement learning algorithms.
Go
Go is an ancient Chinese strategy board game played by two players, who take turns laying pieces of
stones on a 19x19 board with the goal of surrounding more territory than the opponent. Each player
1.1 AI Breakthrough in Games 5
Fig. 1.2 Yoda Norimoto (black) vs. Kiyonari Tetsuya (white), Go game from the 66th NHK Cup, 2018. White won by
0.5 points. Game record from CWI [4]
has a set of black or white stones, and the game begins with an empty board. Players alternate placing
stones on the board, with the black player going first.
The stones are placed on the intersections of the lines on the board, rather than in the squares.
Once a stone is placed on the board, it cannot be moved, but it can be captured by the opponent if it
is completely surrounded by their stones. Stones that are surrounded and captured are removed from
the board.
The game continues until both players pass, at which point the territory on the board is counted. A
player’s territory is the set of empty intersections that are completely surrounded by their stones, plus
any captured stones. The player with the larger territory wins the game. In the case of the final board
position shown in Fig. 1.2, the white won by 0.5 points.
Although the rules of the game are relatively simple, the game is extremely complex. For instance,
the number of legal board positions in Go is enormously large compared to Chess. According to
research by Tromp and Farnebäck [3], the number of legal board positions in Go is approximately
.2.1 × 10
170 , which is vastly greater than the number of atoms in the universe.
This complexity presents a significant challenge for artificial intelligence (AI) agents that attempt
to play Go. In March 2016, an AI agent called AlphaGo developed by Silver et al. [5] from DeepMind
made history by beating the legendary Korean player Lee Sedol with a score of 4-1 in Go. Lee Sedol
is a winner of 18 world titles and is considered one of the greatest Go player of the past decade.
6 1 Introduction
AlphaGo’s victory was remarkable because it used a combination of deep neural networks and tree
search algorithms, as well as the technique of reinforcement learning.
AlphaGo was trained using a combination of supervised learning from human expert games and
reinforcement learning from games of self-play. This training enabled the agent to develop creative
and innovative moves that surprised both Lee Sedol and the Go community.
The success of AlphaGo has sparked renewed interest in the field of reinforcement learning and
has demonstrated the potential for AI to solve complex problems that were once thought to be the
exclusive domain of human intelligence. One year later, Silver et al. [6] from DeepMind introduced a
new and more powerful agent, AlphaGo Zero. AlphaGo Zero was trained using pure self-play, without
any human expert moves in its training, achieving a higher level of play than the previous AlphaGo
agent. They also made other improvements like simplifying the training processes.
To evaluate the performance of the new agent, they set it to play games against the exact same
AlphaGo agent that beat the world champion Lee Sedol in 2016, and this time the new AlphaGo Zero
beats AlphaGo with score 100-0.
In the following year, Schrittwieser et al. [7] from DeepMind generalized the AlphaGo Zero agent
to play not only Go but also other board games like Chess and Shogi (Japanese chess), and they called
this generalized agent AlphaZero. AlphaZero is a more general reinforcement learning algorithm that
can be applied to a variety of board games, not just Go, Chess, and Shogi.
Reinforcement learning is a type of machine learning in which an agent learns to make decisions
based on the feedback it receives from its environment. Both DQN and AlphaGo (and its successor)
agents use this technique, and their achievements are very impressive. Although these agents are
designed to play games, this does not mean that reinforcement learning is only capable of playing
games. In fact, there are many more challenging problems in the real world, such as navigating a robot,
driving an autonomous car, and automating web advertising. Games are relatively easy to simulate and
implement compared to these other real-world problems, but reinforcement learning has the potential
to be applied to a wide range of complex challenges beyond game playing.
In computer science, reinforcement learning is a subfield of machine learning that focuses on learning
how to act in a world or an environment. The goal of reinforcement learning is for an agent to
learn from interacting with the environment in order to make a sequence of decisions that maximize
accumulated reward in the long run. This process is known as goal-directed learning.
Unlike other machine learning approaches like supervised learning, reinforcement learning does
not rely on labeled data to learn from. Instead, the agent must learn through trial and error, without
being directly told the rules of the environment or what action to take at any given moment. This
makes reinforcement learning a powerful tool for modeling and solving real-world problems where
the rules and optimal actions may not be known or easily determined.
Reinforcement learning is not limited to computer science, however. Similar ideas are studied in
other fields under different names, such as operations research and optimal control in engineering.
While the specific methods and details may vary, the underlying principles of goal-directed learning
and decision-making are the same.
Examples of reinforcement learning in the real world are all around us. Human beings, for example,
are naturally good at learning from interacting with the world around us. From learning to walk as a
baby to learning to speak our native language to learning to drive a car, we learn through trial and error
and by receiving feedback from the environment. Similarly, animals can also be trained to perform a
variety of tasks through a process similar to reinforcement learning. For instance, service dogs can be
1.3 Agent-Environment in Reinforcement Learning 7
trained to assist individuals in wheelchairs, while police dogs can be trained to help search for missing
people.
One vivid example that illustrates the idea of reinforcement learning is a video of a dog with a big
stick in its mouth trying to cross a narrow bridge.1 The video shows the dog attempting to pass the
bridge, but failing multiple times. However, after some trial and error, the dog eventually discovers
that by tilting its head, it can pass the bridge with its favorite stick. This simple example demonstrates
the power of reinforcement learning in solving complex problems by learning from the environment
through trial and error.
Reinforcement learning is a type of machine learning that focuses on how an agent can learn to
make optimal decisions by interacting with an environment. The agent-environment loop is the core
of reinforcement learning, as shown in Fig. 1.3. In this loop, the agent observes the state of the
environment and a reward signal, takes an action, and receives a new state and reward signal from the
environment. This process continues iteratively, with the agent learning from the rewards it receives
and adjusting its actions to maximize future rewards.
Environment
The environment is the world in which the agent operates. It can be a physical system, such as a
robot navigating a maze, or a virtual environment, such as a game or a simulation. The environment
Fig. 1.3 Top: Agent-environment in reinforcement learning in a loop. Bottom: The loop unrolled by time
provides the agent with two pieces of information: the state of the environment and a reward signal.
The state describes the relevant information about the environment that the agent needs to make a
decision, such as the position of the robot or the cards in a poker game. The reward signal is a scalar
value that indicates how well the agent is doing in its task. The agent’s objective is to maximize its
cumulative reward over time.
The environment has its own set of rules, which determine how the state and reward signal change
based on the agent’s actions. These rules are often called the dynamics of the environment. In many
cases, the agent does not have access to the underlying dynamics of the environment and must learn
them through trial and error. This is similar to how we humans interact with the physical world every
day, normally we have a pretty good sense of what’s going on around us, but it’s difficult to fully
understand the dynamics of the universe.
Game environments are a popular choice for reinforcement learning because they provide a clear
objective and well-defined rules. For example, a reinforcement learning agent could learn to play the
game of Pong by observing the screen and receiving a reward signal based on whether it wins or loses
the game.
In a robotic environment, the agent is a robot that must learn to navigate a physical space or perform
a task. For example, a reinforcement learning agent could learn to navigate a maze by using sensors
to detect its surroundings and receiving a reward signal based on how quickly it reaches the end of the
maze.
State
In reinforcement learning, an environment state or simply state is the statistical data provided by the
environment to represent the current state of the environment. The state can be discrete or continuous.
For instance, when driving a stick shift car, the speed of the car is a continuous variable, while the
current gear is a discrete variable.
Ideally, the environment state should contain all relevant information that’s necessary for the agent
to make decisions. For example, in a single-player video game like Breakout, the pixels of frames
of the game contain all the information necessary for the agent to make a decision. Similarly, in an
autonomous driving scenario, the sensor data from the car’s cameras, lidar, and other sensors provide
relevant information about the surrounding environment.
However, in practice, the available information may depend on the task and domain. In a two-player
board game like Go, for instance, although we have perfect information about the board position, we
don’t have perfect knowledge about the opponent player, such as what they are thinking in their
head or what their next move will be. This makes the state representation more challenging in such
scenarios.
Furthermore, the environment state might also include noisy data. For example, a reinforcement
learning agent driving an autonomous car might use multiple cameras at different angles to capture
images of the surrounding area. Suppose the car is driving near a park on a windy day. In that case,
the onboard cameras could also capture images of some trees in the park that are swaying in the
wind. Since the movement of these trees should not affect the agent’s ability to drive, because the
trees are inside the park and not on the road or near the road, we can consider these movements of
the trees as noise to the self-driving agent. However, it can be challenging to ignore them from the
captured images. To tackle this problem, researchers might use various techniques such as filtering
and smoothing to eliminate the noisy data and obtain a cleaner representation of the environment
state.
1.3 Agent-Environment in Reinforcement Learning 9
Reward
In reinforcement learning, the reward signal is a numerical value that the environment provides to the
agent after the agent takes some action. The reward can be any numerical value, positive, negative, or
zero. However, in practice, the reward function often varies from task to task, and we need to carefully
design a reward function that is specific to our reinforcement learning problem.
Designing an appropriate reward function is crucial for the success of the agent. The reward
function should be designed to encourage the agent to take actions that will ultimately lead to
achieving our desired goal. For example, in the game of Go, the reward is 0 at every step before the
game is over, and +1 or .−1 if the agent wins or loses the game, respectively. This design incentivizes
the agent to win the game, without explicitly telling it how to win.
Similarly, in the game of Breakout, the reward can be a positive number if the agent destroys some
bricks negative number if the agent failed to catch the ball, and zero reward otherwise. This design
incentivizes the agent to destroy as many bricks as possible while avoiding losing the ball, without
explicitly telling it how to achieve a high score.
The reward function plays a crucial role in the reinforcement learning process. The goal of the
agent is to maximize the accumulated rewards over time. By optimizing the reward function, we can
guide the agent to learn a policy that will achieve our desired goal. Without the reward signal, the
agent would not know what the goal is and would not be able to learn effectively.
In summary, the reward signal is a key component of reinforcement learning that incentivizes the
agent to take actions that ultimately lead to achieving the desired goal. By carefully designing the
reward function, we can guide the agent to learn an optimal policy.
Agent
In reinforcement learning, an agent is an entity that interacts with an environment by making decisions
based on the received state and reward signal from the environment. The agent’s goal is to maximize
its cumulative reward in the long run. The agent must learn to make the best decisions by trial and
error, which involves exploring different actions and observing the resulting rewards.
In addition to the external interactions with the environment, the agent may also has its internal
state represents its knowledge about the world. This internal state can include things like memory of
past experiences and learned strategies.
It’s important to distinguish the agent’s internal state from the environment state. The environment
state represents the current state of the world that the agent is trying to influence through its actions.
The agent, however, has no direct control over the environment state. It can only affect the environment
state by taking actions and observing the resulting changes in the environment. For example, if the
agent is playing a game, the environment state might include the current positions of game pieces,
while the agent’s internal state might include the memory of past moves and the strategies it has
learned.
In this book, we will typically use the term “state" to refer to the environment state. However,
it’s important to keep in mind the distinction between the agent’s internal state and the environment
state. By understanding the role of the agent and its interactions with the environment, we can
better understand the principles behind reinforcement learning algorithms. It is worth noting that the
terms “agent” and “algorithm” are frequently used interchangeably in this book, particularly in later
chapters.
10 1 Introduction
Action
In reinforcement learning, the agent interacts with an environment by selecting actions that affect the
state of the environment. Actions are chosen from a predefined set of possibilities, which are specific
to each problem. For example, in the game of Breakout, the agent can choose to move the paddle to
the left or right or take no action. It cannot perform actions like jumping or rolling over. In contrast,
in the game of Pong, the agent can choose to move the paddle up or down but not left or right.
The chosen action affects the future state of the environment. The agent’s current action may have
long-term consequences, meaning that it will affect the environment’s states and rewards for many
future time steps, not just the next immediate stage of the process.
Actions can be either discrete or continuous. In problems with discrete actions, the set of possible
actions is finite and well defined. Examples of such problems include Atari and Go board games.
In contrast, problems with continuous actions have an infinite set of possible actions, often within
a continuous range of values. An example of a problem with continuous actions is robotic control,
where the degree of angle movement of a robot arm is often a continuous action.
Reinforcement learning problems with discrete actions are generally easier to solve than those with
continuous actions. Therefore, this book will focus on solving reinforcement learning problems with
discrete actions. However, many of the concepts and techniques discussed in this book can be applied
to problems with continuous actions as well.
Policy
A policy is a key concept in reinforcement learning that defines the behavior of an agent. In particular,
it maps each possible state in the environment to the probabilities of chose different actions. By
specifying how the agent should behave, a policy guides the agent to interact with its environment and
maximize its cumulative reward. We will delve into the details of policies and how they interact with
the MDP framework in Chap. 2.
For example, suppose an agent is navigating a grid-world environment. A simple policy might
dictate that the agent should always move to the right until it reaches the goal location. Alternatively,
a more sophisticated policy could specify that the agent should choose its actions based on its current
position and the probabilities of moving to different neighboring states.
Model
In reinforcement learning, a model refers to a mathematical description of the dynamics function and
reward function of the environment. The dynamics function describes how the environment evolves
from one state to another, while the reward function specifies the reward that the agent receives for
taking certain actions in certain states.
In many cases, the agent does not have access to a perfect model of the environment. This makes
learning a good policy challenging, since the agent must learn from experience how to interact with
the environment to maximize its reward. However, there are some cases where a perfect model is
available. For example, if the agent is playing a game with fixed rules and known outcomes, the agent
can use this knowledge to select its actions strategically. We will explore this scenario in detail in
Chap. 2.
In reinforcement learning, the agent-environment boundary can be ambiguous. Despite a house
cleaning robot appearing to be a single agent, the agent’s direct control typically defines its boundary,
1.4 Examples of Reinforcement Learning 11
while the remaining components comprise the environment. In this case, the robot’s wheels and other
hardwares are considered to be part of the environment since they aren’t directly controlled by the
agent. We can think of the robot as a complex system composed of several parts, such as hardware,
software, and the reinforcement learning agent, which can control the robot’s movement by signaling
the software interface, which then communicates with microchips to manage the wheel movement.
Reinforcement learning is a versatile technique that can be applied to a variety of real-world problems.
While its success in playing games is well known, there are many other areas where it can be used as
an effective solution. In this section, we explore a few examples of how reinforcement learning can
be applied to real-world problems.
Autonomous Driving
Reinforcement learning can be used to train autonomous vehicles to navigate complex and unpre-
dictable environments. The goal for the agent is to safely and efficiently drive the vehicle to a desired
location while adhering to traffic rules and regulations. The reward signal could be a positive number
for successful arrival at the destination within a specified time frame and a negative number for any
accidents or violations of traffic rules. The environment state could contain information about the
vehicle’s location, velocity, and orientation, as well as sensory data such as camera feeds and radar
readings. Additionally, the state could include the current traffic conditions and weather, which would
help the agent to make better decisions while driving.
One practical application of reinforcement learning is to train robots to navigate a factory floor. The
goal for the agent is to safely and efficiently transport goods from one point to another without
disrupting the work of human employees or other robots. In this case, the reward signal could be
a positive number for successful delivery within a specified time frame and a negative number for
any accidents or damages caused. The environment state could contain information about the robot’s
location, the weight and size of the goods being transported, the location of other robots, and sensory
data such as camera feeds and battery level. Additionally, the state could include information about
the production schedule, which would help the agent to prioritize its tasks.
Another application of reinforcement learning is to automate web advertising. The goal for the agent is
to select the most effective type of ad to display to a user, based on their browsing history and profile.
The reward signal could be a positive number for when the user clicks on the ad, and zero otherwise.
The environment state could contain information such as the user’s search history, demographics, and
current trends on the Internet. Additionally, the state could include information about the context of
the web page, which would help the agent to choose the most relevant ad.
12 1 Introduction
Video Compression
Reinforcement learning can also be used to improve video compression. DeepMind’s MuZero agent
has been adapted to optimize video compression for some YouTube videos. In this case, the goal for
the agent is to compress the video as much as possible without compromising the quality. The reward
signal could be a positive number for high-quality compression and a negative number for low-quality
compression. The environment state could contain information such as the video’s resolution, bit rate,
frame rate, and the complexity of the scenes. Additionally, the state could include information about
the viewing device, which would help the agent to optimize the compression for the specific device.
Overall, reinforcement learning has enormous potential for solving real-world problems in various
industries. The key to successful implementation is to carefully design the reward signal and the
environment state to reflect the specific goals and constraints of the problem. Additionally, it is
important to continually monitor and evaluate the performance of the agent to ensure that it is making
the best decisions.
Machine learning is a vast and rapidly evolving field, with many different approaches and techniques.
As such, it can be challenging for practitioners to know which type of machine learning to use for a
given problem. By discussing the strengths and limitations of different branches of machine learning,
we can better understand which approach might be best suited to a particular task. This can help us
make more informed decisions when developing machine learning solutions and ultimately lead to
more effective and efficient systems.
There are three branches of machine learning. One of the most popular and widely adopted in the
real world is supervised learning, which is used in domains like image recognition, speech recognition,
and text classification. The idea of supervised learning is very simple: given a set of training data
and the corresponding labels, the objective is for the system to generalize and predict the label for
data that’s not present in the training dataset. These training labels are typically provided by some
supervisors (e.g., humans). Hence, we’ve got the name supervised learning.
Another branch of machine learning is unsupervised learning. In unsupervised learning, the
objective is to discover the hidden structures or features of the training data without being provided
1.6 Why Study Reinforcement Learning 15
with any labels. This can be useful in domains such as image clustering, where we want the system
to group similar images together without knowing ahead of time which images belong to which
group. Another application of unsupervised learning is in dimensionality reduction, where we want to
represent high-dimensional data in a lower-dimensional space while preserving as much information
as possible.
Reinforcement learning is a type of machine learning in which an agent learns to take actions in an
environment in order to maximize a reward signal. It’s particularly useful in domains where there is
no clear notion of “correct” output, such as in robotics or game playing. Reinforcement learning has
potential applications in areas like robotics, healthcare, and finance.
Supervised learning has already been widely used in computer vision and natural language
processing. For example, the ImageNet classification challenge is an annual computer vision
competition where deep convolutional neural networks (CNNs) dominate. The challenge provides
a training dataset with labels for 1.2 million images across 1000 categories, and the goal is to predict
the labels for a separate evaluation dataset of about 100,000 images. In 2012, Krizhevsky et al. [8]
developed AlexNet, the first deep CNN system used in this challenge. AlexNet achieved an 18%
improvement in accuracy compared to previous state-of-the-art methods, which marked a major
breakthrough in computer vision.
Since the advent of AlexNet, almost all leading solutions to the ImageNet challenge have been
based on deep CNNs. Another breakthrough came in 2015 when researchers He et al. [9] from
Microsoft developed ResNet, a new architecture designed to improve the training of very deep CNNs
with hundreds of layers. Training deep CNNs is challenging due to vanishing gradients, which makes
it difficult to propagate the gradients backward through the network during backpropagation. ResNet
addressed this challenge by introducing skip connections, which allowed the network to bypass one or
more layers during forward propagation, thereby reducing the depth of the network that the gradients
have to propagate through.
While supervised learning is capable of discovering hidden patterns and features from data, it
is limited in that it merely mimics what it is told to do during training and cannot interact with
the world and learn from its own experience. One limitation of supervised learning is the need to
label every possible stage of the process. For example, if we want to use supervised learning to train
an agent to play Go, then we would need to collect the labels for every possible board position,
which is impossible due to the enormous number of possible combinations. Similarly, in Atari video
games, a single pixel change would require relabeling, making supervised learning inapplicable in
these cases. However, supervised learning has been successful in many other applications, such as
language translation and image classification.
Unsupervised learning tries to discover hidden patterns or features without labels, but its objective
is completely different from that of RL, which is to maximize accumulated reward signals. Humans
and animals learn by interacting with their environment, and this is where reinforcement learning (RL)
comes in. In RL, the agent is not told which action is good or bad, but rather it must discover that for
itself through trial and error. This trial-and-error search process is unique to RL. However, there are
other challenges that are unique to RL, such as dealing with delayed consequences and balancing
exploration and exploitation.
While RL is a distinct branch of machine learning, it shares some commonalities with other
branches, such as supervised and unsupervised learning. For example, improvements in supervised
learning and deep convolutional neural networks (CNNs) have been adapted to DeepMind’s DQN,
AlphaGo, and other RL agents. Similarly, unsupervised learning can be used to pretrain the weights
of RL agents to improve their performance. Furthermore, many of the mathematical concepts used
in RL, such as optimization and how to train a neural network, are shared with other branches of
16 1 Introduction
machine learning. Therefore, while RL has unique challenges and applications, it also benefits from
and contributes to the development of other branches of machine learning.
Reinforcement learning (RL) is a type of machine learning in which an agent learns to interact with an
environment to maximize some notion of cumulative reward. While RL has shown great promise in a
variety of applications, it also comes with several common challenges, as discussed in the following
sections:
In reinforcement learning (RL), the credit assignment problem refers to the challenge of determining
which actions an agent took that led to a particular reward. This is a fundamental problem in RL
because the agent must learn from its own experiences in order to improve its performance.
To illustrate this challenge, let’s consider the game of Tic-Tac-Toe, where two players take turns
placing Xs and Os on a 3.×3 grid until one player gets three in a row. Suppose the agent is trying to
learn to play Tic-Tac-Toe using RL, and the reward is +1 for a win, .−1 for a loss, and 0 for a draw.
The agent’s goal is to learn a policy that maximizes its cumulative reward.
1.7 The Challenges in Reinforcement Learning 17
Now, suppose the agent wins a game of Tic-Tac-Toe. How can the agent assign credit to the actions
that led to the win? This can be a difficult problem to solve, especially if the agent is playing against
another RL agent that is also learning and adapting its strategies.
To tackle the credit assignment problem in RL, there are various techniques that can be used, such
as Monte Carlo methods or temporal difference learning. These methods use statistical analysis to
estimate the value of each action taken by the agent, based on the rewards received and the states
visited. By using these methods, the agent can gradually learn to assign credit to the actions that
contribute to its success and adjust its policy accordingly.
In summary, credit assignment is a key challenge in reinforcement learning, and it is essential to
develop effective techniques for solving this problem in order to achieve optimal performance.
The reward engineering problem refers to the process of designing a good reward function that
encourages the desired behavior in a reinforcement learning (RL) agent. The reward function
determines what the agent is trying to optimize, so it is crucial to make sure it reflects the desired
goal we want the the agent to achieve.
An example of good reward engineering is in the game of Atari Breakout, where the goal of the
agent is to clear all the bricks at the top of the screen by bouncing a ball off a paddle. One way to
design a reward function for this game is to give the agent a positive reward for each brick it clears
and a negative reward for each time the ball passes the paddle and goes out of bounds. However, this
reward function alone may not lead to optimal behavior, as the agent may learn to exploit a loophole
by simply bouncing the ball back and forth on the same side of the screen without actually clearing
any bricks.
To address this challenge, the reward function can be designed to encourage more desirable
behavior. For example, the reward function can be modified to give the agent a larger positive reward
for clearing multiple bricks in a row or for clearing the bricks on the edges of the screen first. This can
encourage the agent to take more strategic shots and aim for areas of the screen that will clear more
bricks at once.
An example of bad reward engineering is the CoastRunners video game in Atari; it’s a very simple
boat racing game. The goal of the game is to finish the boat race as quickly as possible. But there’s
one small issue with the game, the player can earn higher scores by hitting some targets laid out along
the route. There’s a video that shows that a reinforcement learning agent plays the game by repeatedly
hitting the targets instead of finishing the race.2 This example should not be viewed as the failure
of the reinforcement learning agent, but rather humans failed to design and use the correct reward
function.
Overall, reward engineering is a crucial part of designing an effective RL agent. A well-designed
reward function can encourage the desired behavior and lead to optimal performance, while a
poorly designed reward function can lead to suboptimal behavior and may even encourage undesired
behavior.
Generalization Problem
In reinforcement learning (RL), the generalization problem refers to the ability of an agent to apply
what it has learned to new and previously unseen situations. To understand this concept, consider the
example of a self-driving car. Suppose the agent is trying to learn to navigate a particular intersection,
with a traffic light and crosswalk. The agent receives rewards for reaching its destination quickly and
safely, but it must also follow traffic laws and avoid collisions with other vehicles and pedestrians.
During training, the agent is exposed to a variety of situations at the intersection, such as different
traffic patterns and weather conditions. It learns to associate certain actions with higher rewards, such
as slowing down at the yellow light and stopping at the red light. Over time, the agent becomes more
adept at navigating the intersection and earns higher cumulative rewards.
However, when the agent is faced with a new intersection, with different traffic patterns and weather
conditions, it may struggle to apply what it has learned. This is where generalization comes in. If the
agent has successfully generalized its knowledge, it will be able to navigate the new intersection based
on its past experiences, even though it has not seen this exact intersection before. For example, it may
slow down at a yellow light, even if the timing is slightly different than what it has seen before, or it
may recognize a pedestrian crossing and come to a stop, even if the appearance of the crosswalk is
slightly different.
If the agent has not successfully generalized its knowledge, it may struggle to navigate the new
intersection and may make mistakes that lead to lower cumulative rewards. For example, it may miss
a red light or fail to recognize a pedestrian crossing, because it has only learned to recognize these
situations in a particular context.
Therefore, generalization is a crucial aspect of RL, as it allows the agent to apply its past
experiences to new and previously unseen situations, which can improve its overall performance and
make it more robust to changes in the environment.
The sample efficiency problem in reinforcement learning refers to the ability of an RL agent to learn
an optimal policy with a limited number of interactions with the environment. This can be challenging,
especially in complex environments where the agent may need to explore a large state space or take a
large number of actions to learn the optimal policy.
To better understand sample efficiency, let’s consider an example of an RL agent playing a game
of Super Mario Bros. In this game, the agent must navigate Mario through a series of levels while
avoiding enemies and obstacles, collecting coins, and reaching the flag at the end of each level.
To learn how to play Super Mario Bros., the agent must interact with the environment, taking
actions such as moving left or right, jumping, and shooting fireballs. Each action leads to a new state
of the environment, and the agent receives a reward based on its actions and the resulting state.
For example, the agent may receive a reward for collecting a coin or reaching the flag and a penalty
for colliding with an enemy or falling into a pit. By learning from these rewards, the agent can update
its policy to choose actions that lead to higher cumulative rewards over time.
However, learning the optimal policy in Super Mario Bros. can be challenging due to the large
state space and the high dimensionality of the input data, which includes the position of Mario, the
enemies, and the obstacles on the screen.
To address the challenge of sample efficiency, the agent may use a variety of techniques to learn
from a limited number of interactions with the environment. For example, the agent may use function
approximation to estimate the value or policy function based on a small set of training examples. The
References 19
agent may also use off-policy learning, which involves learning from data collected by a different
policy than the one being optimized.
Overall, sample efficiency is an important challenge in reinforcement learning, especially in
complex environments. Techniques such as function approximation, off-policy learning, can help
address this challenge and enable RL agents to learn optimal policies with a limited number of
interactions with the environment.
1.8 Summary
In the first chapter of the book, readers were introduced to the concept of reinforcement learning (RL)
and its applications. The chapter began by discussing the breakthroughs in AI in games, showcasing
the success of RL in complex games such as Go. The chapter then provided an overview of the agent-
environment interaction that forms the basis of RL, including key concepts such as environment,
agent, reward, state, action, and policy. Several examples of RL were presented, including Atari video
game playing, board game Go, and robot control tasks.
Additionally, the chapter introduced common terms used in RL, including episodic vs. continuing
tasks, deterministic vs. stochastic tasks, and model-free vs. model-based reinforcement learning. The
importance of studying RL was then discussed, including its potential to solve complex problems
and its relevance to real-world applications. The challenges faced in RL, such as the exploration-
exploitation dilemma, the credit assignment problem, and the generalization problem, were also
explored.
The next chapter of the book will focus on Markov decision processes (MDPs), which is a formal
framework used to model RL problems.
References
[1] Volodymyr Mnih, Koray Kavukcuoglu, David Silver, Andrei A. Rusu, Joel Veness, Marc G. Bellemare, Alex
Graves, Martin Riedmiller, Andreas K. Fidjeland, Georg Ostrovski, Stig Petersen, Charles Beattie, Amir Sadik,
Ioannis Antonoglou, Helen King, Dharshan Kumaran, Daan Wierstra, Shane Legg, and Demis Hassabis. Human-
level control through deep reinforcement learning. Nature, 518(7540):529–533, Feb 2015.
[2] M. G. Bellemare, Y. Naddaf, J. Veness, and M. Bowling. The arcade learning environment: An evaluation platform
for general agents. Journal of Artificial Intelligence Research, 47:253–279, Jun 2013.
[3] John Tromp and Gunnar Farnebäck. Combinatorics of go. In H. Jaap van den Herik, Paolo Ciancarini, and H. H.
L. M. (Jeroen) Donkers, editors, Computers and Games, pages 84–99, Berlin, Heidelberg, 2007. Springer Berlin
Heidelberg.
[4] CWI. 66th NHK Cup. https://homepages.cwi.nl/~aeb/go/games/games/NHK/66/index.html, 2018.
[5] David Silver, Aja Huang, Chris J. Maddison, Arthur Guez, Laurent Sifre, George van den Driessche, Julian
Schrittwieser, Ioannis Antonoglou, Veda Panneershelvam, Marc Lanctot, Sander Dieleman, Dominik Grewe, John
Nham, Nal Kalchbrenner, Ilya Sutskever, Timothy Lillicrap, Madeleine Leach, Koray Kavukcuoglu, Thore Graepel,
and Demis Hassabis. Mastering the game of go with deep neural networks and tree search. Nature, 529(7587):484–
489, Jan 2016.
[6] David Silver, Julian Schrittwieser, Karen Simonyan, Ioannis Antonoglou, Aja Huang, Arthur Guez, Thomas
Hubert, Lucas Baker, Matthew Lai, Adrian Bolton, Yutian Chen, Timothy Lillicrap, Fan Hui, Laurent Sifre, George
van den Driessche, Thore Graepel, and Demis Hassabis. Mastering the game of go without human knowledge.
Nature, 550(7676):354–359, Oct 2017.
[7] David Silver, Thomas Hubert, Julian Schrittwieser, Ioannis Antonoglou, Matthew Lai, Arthur Guez, Marc Lanctot,
Laurent Sifre, Dharshan Kumaran, Thore Graepel, Timothy Lillicrap, Karen Simonyan, and Demis Hassabis.
Mastering chess and shogi by self-play with a general reinforcement learning algorithm, 2017.
[8] Alex Krizhevsky, Ilya Sutskever, and Geoffrey E Hinton. Imagenet classification with deep convolutional neural
networks. In F. Pereira, C.J. Burges, L. Bottou, and K.Q. Weinberger, editors, Advances in Neural Information
Processing Systems, volume 25. Curran Associates, Inc., 2012.
[9] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep residual learning for image recognition, 2015.
Markov Decision Processes
2
Markov decision processes (MDPs) offer a powerful framework for tackling sequential decision-
making problems in reinforcement learning. Their applications span various domains, including
robotics, finance, and optimal control.
In this chapter, we provide an overview of the key components of Markov decision processes
(MDPs) and demonstrate the formulation of a basic reinforcement learning problem using the MDP
framework. We delve into the concepts of policy and value functions, examine the Bellman equations,
and illustrate their utilization in updating values for states or state-action pairs. Our focus lies
exclusively on finite MDPs, wherein the state and action spaces are finite. While we primarily assume
a deterministic problem setting, we also address the mathematical aspects applicable to stochastic
problems.
If we were to choose the single most significant chapter in the entire book, this particular chapter
would undeniably be at the forefront of our list. Its concepts and mathematical equations hold such
importance that they are consistently referenced and utilized throughout the book.
At a high level, a Markov decision process (MDP) is a mathematical framework for modeling
sequential decision-making problems under uncertainty. The main idea is to represent the problem
in terms of states, actions, a transition model, and a reward function and then use this representation
to find an optimal policy that maximizes the expected sum of rewards over time.
To be more specific, an MDP consists of the following components:
• States (.S): The set of all possible configurations or observations of the environment that the agent
can be in. For example, in a game of chess, the state might be the current board configuration, while
in a financial portfolio management problem, the state might be the current prices of various stocks.
Other examples of states include the position and velocity of a robot, the location and orientation
of a vehicle, or the amount of inventory in a supply chain.
• Actions (.A): The set of all possible actions that the agent can take. In a game of chess, this might
include moving a piece, while in a financial portfolio management problem, this might include
buying or selling a particular stock. Other examples of actions include accelerating or decelerating
a robot, turning a vehicle, or restocking inventory in a supply chain.
© The Author(s), under exclusive license to APress Media, LLC, part of Springer Nature 2023 21
M. Hu, The Art of Reinforcement Learning,
https://doi.org/10.1007/978-1-4842-9606-6_2
22 2 Markov Decision Processes
• Transition model or dynamics function (.P): A function that defines the probability of transition-
ing to a new state .s given the current state s and the action taken a. In other words, it models how
the environment responds to the agent’s actions. For example, in a game of chess, the transition
model might be determined by the rules of the game and the player’s move. In a finance problem,
the transition model could be the result of a stock price fluctuation. Other examples of transition
models include the physics of a robot’s motion, the dynamics of a vehicle’s movement, or the
demand and supply dynamics of a supply chain.
• Reward function (.R): A function that specifies the reward or cost associated with taking an action
in a given state. In other words, it models the goal of the agent’s task. For example, in a game of
chess, the reward function might assign a positive value to winning the game and a negative value
to losing, while in a finance problem, the reward function might be based on maximizing profit
or minimizing risk. Other examples of reward functions include the energy efficiency of a robot’s
motion, the fuel efficiency of a vehicle’s movement, or the profit margins of a supply chain.
MDPs provide a powerful framework for modeling decision-making problems because they allow us
to use mathematical concepts to model real-world problems. For example, MDPs can be used to
• Model robot navigation problems, where the robot must decide which actions to take in order to
reach a particular goal while avoiding obstacles. For example, the state might include its current
position and the obstacles in its environment, and the actions might include moving in different
directions. The transition model could be determined by the physics of the robot’s motion, and
the reward function could be based on reaching the goal as quickly as possible while avoiding
collisions with obstacles.
• Optimize portfolio management strategies, where the agent must decide which stocks to buy or
sell in order to maximize profits while minimizing risk. For example, the state might include the
current prices of different stocks and the agent’s portfolio holdings, and the actions might include
buying or selling stocks. The transition model could be the result of stock price fluctuations, and
the reward function could be based on the agent’s profits or risk-adjusted returns.
• Design personalized recommendation systems, where the agent must decide which items to
recommend to a particular user based on their past behavior. For example, the state might
include the user’s past purchases and the agent’s current recommendations, and the actions might
include recommending different items. The transition model could be the user’s response to
the recommendations, and the reward function could be based on how much the user likes the
recommended items or makes a purchase.
• Solve many other decision-making problems in various domains, such as traffic control, resource
allocation, and game playing. In each case, the MDP framework provides a way to model the
problem in terms of states, actions, transition probabilities, and rewards and then solve it by finding
a policy that maximizes the expected sum of rewards over time.
Our goal of modeling a problem using MDP is to eventually solve the MDP problem. To solve
an MDP, we must find a policy .π that maps states to actions in a way that maximizes the expected
sum of rewards over time. In other words, the policy tells the agent what action to take in each state to
achieve its goal. One way to find the optimal policy is to use the value iteration algorithm or the policy
iteration algorithm, which iteratively updates the values of the state (or state-action pair) based on the
Bellman equations, until the optimal policy is found. These fundamental concepts will be explored in
this chapter and the subsequent chapters.
2.2 Model Reinforcement Learning Problem Using MDP 23
In summary, MDPs provide a flexible and powerful way to model decision-making problems in
various domains. By formulating a problem as an MDP, we can use mathematical concepts to analyze
the problem and find an optimal policy that maximizes the expected sum of rewards over time. The
key components of an MDP are the states, actions, dynamics function, and reward function, which
can be customized to fit the specific problem at hand.
A Markov decision process (MDP) models a sequence of states, actions, and rewards in a way that is
useful for studying reinforcement learning. For example, a robot navigating a maze can be modeled as
an MDP, where the states represent the robot’s location in the maze, the actions represent the robot’s
movement choices, and the rewards represent the robot’s progress toward the goal.
In this context, we use a subscript t to index the different stages of the process (or so-called time
step of the sequence), where t could be any discrete value like .t = 0, 1, 2, · · ·. Note that the time step
is not a regular time interval like seconds or minutes but refers to the different stages of the process.
For example, in this book .St , .At , and .Rt often mean the state, action, and reward at the current time
step t (or current stage of the process).
It’s worth noting that the agent may take a considerable amount of time before deciding to take
action .At when it observes the environment state .St . As long as the agent does not violate the rules of
the environment, it has the flexibility to take action at its own pace. Therefore, a regular time interval
is not applicable in this case.
In this book, we adapt the mathematical notation employed by Professor Emma Brunskill in her
remarkable course on reinforcement learning [1]. We generally assume that the reward only depends
on the state .St and the action .At taken by the agent. To keep things simple, we use the same index
t for the reward, which is expressed as .Rt = R(St , At ), while some may prefer to use .Rt+1 =
R(St , At , St+1 ) instead of .Rt to emphasize that a reward also depends on the successor state .St+1 , as
Sutton and Barto discussed in their book.1 However, this alternative expression can sometimes lead
to confusion, particularly in simple cases like the ones we present in this book, where the reward does
not depend on the successor state.
It is important to remember that in practical implementation, the reward is typically received one
time step later, along with the successor state, as illustrated in Fig. 2.1.
We use upper case in .St , At , Rt because these are random variables, and the actual outcome of
these random variables could vary. When we are talking about the specific outcome of these random
variables, we often use the lower case .s, a, r.
Taken together, the state space, action space, transition model, and reward function provide a
complete description of the environment and the agent’s interactions with it. In the following sections,
we’ll explore how these elements interact to form the foundation for solving reinforcement learning
problems.
To better understand the interactions between the agent and the environment, we can unroll the
interaction loop as follows, as shown in Fig. 2.2:
1 Intheir book, Sutton and Barto briefly discussed why they chose to use .Rt+1 instead of .Rt as the immediate reward
(on page 48). However, they also emphasized that both conventions are widely used in the field.
24 2 Markov Decision Processes
Fig. 2.2 Example of the agent-environment iteration loop unrolled by time for episodic problem
• The environment transition into a new state .S1 and also generate a reward signal .R0 , where .R0 is
conditioned on .S0 and .A0 .
• The agent receives reward .R0 along with the successor state .S1 from the environment.
• The agent decides to take action .A1 .
• The interaction continues to the next stage until the process reaches the terminal state .ST . Once it
reaches terminal state, no further action is taken and a new episode can be started from the initial
state .S0 .
The reason why there is no reward when the agent observes the first environment state .S0 is due
to the fact that the agent has not yet interacted with the environment. As mentioned earlier, in this
book, we assume that the reward function .Rt = R(St , At ) is conditioned on the current state of the
environment .St and the action .At taken by the agent. Since no action is taken in state .S0 , there is no
reward signal associated with the initial state. However, in practice, it can sometimes be convenient to
include a “fake” initial reward, such as using 0, to simplify the code.
In summary, the MDP provides a framework for modeling reinforcement learning problems, where
the agent interacts with the environment by taking actions based on the current state and receives
rewards that are conditioned on the current state and action. By understanding the interactions
between the agent and environment, we can develop algorithms that learn to make good decisions
and maximize the cumulative reward over time.
2.3 Markov Process or Markov Chain 25
Markov Property
Not every problem can be modeled using the MDP framework. The Markov property is a crucial
assumption that must hold for the MDP framework to be applicable. This property states that the
future state of the system is independent of the past given the present. More specifically, the successor
state .St+1 depends only on the current state .St and action .At , and not on any previous states or actions.
In other words, the Markov property is a restriction on the environment state, which must contain
sufficient information about the history to predict the future state. Specifically, the current state must
contain enough information to make predictions about the next state, without needing to know the
complete history of past states and actions.
P St+1 St , At = P St+1 St , At , St−1 , At−1 , · · ·, S1 , A1 , S0 , A0
. (2.1)
For example, a robot trying to navigate a room can be modeled using the MDP framework only if it
satisfies the Markov property. If the robot’s movement depends on its entire history, including its past
positions and actions, the Markov property will be violated, and the MDP framework will no longer
be applicable. This is because the robot’s current position would not contain sufficient information to
predict its next position, making it difficult to model the environment and make decisions based on
that model.
In this example, we imagine training a service dog to retrieve an object for its owner. The training is
conducted in a house with three rooms, one of which contains a personal object that the dog must
retrieve and bring to its owner or trainer. The task falls into the episodic reinforcement learning
problem category, as the task is considered finished once the dog retrieves the object. To simplify the
task, we keep placing the object in the same (or almost the same) location and initialize the starting
state randomly. Additionally, one of the rooms leads to the front yard, where the dog can play freely.
This scenario is illustrated in Fig. 2.3.
We will use this service dog example in this book to demonstrate how to model a reinforcement
learning problem as an MDP (Markov decision process), explain the dynamics function of the
environment, and construct a policy. We will then introduce specific algorithms, such as dynamic
programming, Monte Carlo methods, and temporal difference methods, to solve the service dog
reinforcement learning problem.
To start our discussion on Markov decision processes (MDPs), let’s first define what a Markov process
(Markov chain) is. A Markov process is a memoryless random process where the probability of
transitioning to a new state only depends on the current state and not on any past states or actions.
It is the simplest case to study in MDPs, as it involves only a sequence of states without any
rewards or actions. Although it may seem basic, studying Markov chains is important as they provide
fundamental insights into how states in a sequence can influence one another. This understanding can
be beneficial when dealing with more complex MDPs.
26 2 Markov Decision Processes
A Markov chain can be defined as a tuple of .(S, P), where .S is a finite set of states called the state
space, and .P is the dynamics function (or transition model) of the environment, which specifies the
probability of transitioning from a current state s to a successor state .s . Since there are no actions in
a Markov chain, we omit actions in the dynamics function .P. The probability of transitioning from
state s to state .s is denoted by .P (s |s).
For example, we could model a Markov chain with a graph, where each node represents a state,
and each edge represents a possible transition from one state to another, with a transition probability
associated with each edge. This can help us understand how states in a sequence can affect one another.
We’ve modeled our service dog example as a Markov chain, as shown in Fig. 2.4. The open circle
represents a non-terminal state, while the square box represents the terminal state. The straight and
curved lines represent the transitions from the current state s to its successor state .s , with a transition
probability .P (s |s) associated with each possible transition. For example, if the agent is currently in
state Room 1, there is a 0.8 probability that the environment will transition to its successor state Room
2 and a 0.2 probability of staying in the same state Room 1. Note that these probabilities are chosen
randomly to illustrate the idea of the dynamics function of the environment.
The transition matrix .P is a convenient way to represent the dynamics function (or transition model) of
a Markov chain. It lists all the possible state transitions in a single matrix, where each row represents
a current state s, and each column represents a successor state .s . The transition probability for
transitioning from state s to state .s is denoted by .P (s |s). Since we are talking about probability,
2.3 Markov Process or Markov Chain 27
the sum of each row is always equal to 1.0. Here, we list the transition matrix for our service dog
Markov chain:
With access to the dynamics function of the environment, we can sample some state transition
sequences .S0 , S1 , S2 , · · · from the environment. For example:
We now have a basic understanding about the state transition in the environment; let’s move on to
add rewards into the process.
As we’ve said before, the goal of a reinforcement learning agent is to maximize rewards, so the next
natural step is to add rewards to the Markov chain process. The Markov reward process (MRP) is an
extension of the Markov chain, where rewards are added to the process. In a Markov reward process,
the agent not only observes state transitions but also receives a reward signal along the way. Note,
there are still no actions involved in the MRPs. We can define the Markov reward process as a tuple
.(S, P, R), where
As shown in Fig. 2.5, we added a reward signal to each state in our service dog example. As we’ve
talked briefly in Chap. 1, we want the reward signals to align with our desired goal, which is to find
the object, so we decided to use the highest reward signal for the state Found item. For the state
Outside, the reward signal is +1, because being outside playing might be more enjoyable for the agent
compared to wandering between different rooms.
With reward signals, we can compute the total rewards the agent could get for these different
sample sequences, where the total rewards are calculated for the entire sequence:
Return
To quantify the total rewards the agent can get in a sequence of states, we use a different term called
return. The return .Gt is simply the sum of rewards from time step t to the end of the sequence and
is defined by the mathematical equation in Eq. (2.2), where T is the terminal time step for episodic
reinforcement learning problems.2
One issue with Eq. (2.2) is that the return .Gt could become infinite in cases where there
are recursion or loops in the process, such as in our sample sequence episode 4. For continuing
reinforcement learning problems, where there is no natural end to the task, the return .Gt could also
easily become infinite. To resolve this issue, we introduce the discount factor.
The discount factor .γ is a parameter, where .0 ≤ γ ≤ 1, that helps us to solve the infinite return
problem. By discounting rewards received at future time steps, we can avoid the return becoming
infinite. When we add the discount factor to the regular return in Eq. (2.2), the return becomes the
discounted sum of rewards from time step t to a horizon H , which can be the length of the episode or
even infinity for continuing reinforcement learning problems. We’ll be using Eq. (2.3) as the definition
of return for the rest of the book. Notice that we omit the discount .γ for the immediate reward .Rt ,
since .γ 0 = 1.
We want to emphasize that the discount factor .γ not only helps us to solve the infinite return
problem, but it can also influence the behavior of the agent (which will make more sense when we
2 The notation used in Eq. (2.2), as well as Eqs. (2.3) and (2.4), may seem unfamiliar to readers familiar with the work
of Sutton and Barto. In their book, they utilize a different expression denoted as .Gt = Rt+1 + Rt+2 + Rt+3 + · · · + RT
for the nondiscounted case. In their formulation, the immediate reward is denoted as .Rt+1 . However, in our book, we
adopt a simpler reward function and notation, as explained earlier. We represent the immediate reward as .Rt , assuming
it solely depends on the current state .St and the action .At taken in that state. Therefore, in Eq. (2.2), as well as Eqs. (2.3)
and (2.4), we start with .Rt instead of .Rt+1 , and we use .RT −1 instead of .RT for the final reward. It is important to note
that despite this slight time step shift, these equations essentially compute the same result: the sum of (or discounted)
rewards over an episode.
30 2 Markov Decision Processes
later talk about value functions and policy). For example, when .γ = 0, the agent only cares about
the immediate reward, and as .γ gets closer to 1, future rewards become as important as immediate
rewards. Although there are methods that do not use discount, the mathematical complexity of such
methods is beyond the scope of this book.
There is a useful property about the return .Gt in reinforcement learning: the return .Gt is the
sum of the immediate reward .Rt and the discounted return of the next time step .γ Gt+1 . We can
rewrite it recursively as shown in Eq. (2.4). This recursive property is important in MRPs, MDPs and
reinforcement learning because it forms the foundation for a series of essential mathematical equations
and algorithms, which we will introduce later in this chapter and in the next few chapters.
We can compute the return .Gt for the sample sequences of a particular MRP or even MDP. The
following shows the returns for some sample episodes in our service dog example, where we use
discount factor .γ = 0.9:
As long as the discount factor is not 1, we won’t have the infinite return problem even if there’s a
loop in the MRP process. Comparing the return for these different sample sequences, we can see that
episode 4 has the highest return value. However, if the agent gets stuck in a loop staying in the same
state Outside, it has no way to achieve the goal, which is to find the object in Room 3. This does not
necessarily mean that the reward function is flawed. To prove this, we need to use the value function,
which we will explain in detail in the upcoming sections.
In Markov reward processes (MRPs), the return .Gt measures the total future reward from time step
t to the end of the episode. However, comparing returns for different sample sequences alone has its
limits, as it only measures returns starting from a particular time step. This is not very helpful for an
agent in a specific environment state who needs to make a decision. The value function can help us
overcome this problem.
Formally, the state value function .V (s) for MRP measures the expected return starting from state
s and to a horizon H . We call it the expected return because the trajectory starting from state s to
a horizon H is often a random variable. In simple words, .V (s) measures the average return starting
2.4 Markov Reward Process 31
from state s and up to a horizon H . For episodic problems, the horizon is just the terminal time step,
that is, .H = T .
.V (s) = E Gt St = s (2.5)
The state value function .V (s) for MRPs also shares the recursive property as shown in Eq. (2.6).
Equation (2.6) is also called the Bellman expectation equation for .V (s) (for MRPs). We call it the
Bellman expectation equation because it’s written in a recursive manner but still has the expectation
sign .E attached to it.
V (s) = E Gt St = s
.
= E Rt + γ Rt+1 + γ 2 Rt+2 + · · · St = s
= E Rt + γ Rt+1 + γ Rt+2 + · · · St = s
= E Rt + γ Gt+1 St = s
= E Rt + γ V (St+1 ) St = s . (2.6)
Equation (2.7) is called the Bellman equation for .V (s) (for MRPs). We can see how the step from
Eqs. (2.6) to (2.7) removed the expectation sign .E from the equation, by considering the values of all
the possible successor states .s and weighting each by the state transition probability .P (s |s) from the
environment for the MRPs.
Worked Example
As an example, we can use Eq. (2.7) to compute the expected return for a particular state. Let’s say
our initial values for state Room 2 are 5.0 and for state Found item are 10.0, as shown in Fig. 2.6
(these initial values were chosen randomly), and we use no discount .γ = 1.0. Now let’s compute the
expected return for state Room 3. Since we already know the model (dynamics function and reward
function) of the Markov reward process (MRP), we know the immediate reward is .−1 no matter what
successor state .s will be. There’s a 0.8 probability the environment will transition to successor state
Found item, and the value for this successor state is V (Found item).= 10.0. And there’s also a 0.2
probability the environment will transition to successor state Room 2, and the value for this successor
state is V (Room 2).= 5.0. So we can use the Bellman equation to compute our estimated value for
state V (Room 3) as follows:
Of course, this estimated value for state Room 3 is not accurate, since we started with randomly
guessed values, and we didn’t include other states. But if we include all the states in the state space
and repeat the process over a large number of times, in the end, the estimated values would be very
close to the true values.
32 2 Markov Decision Processes
Fig. 2.6 Example of how to compute the value of a state for the service dog MRP, .γ = 1.0; the numbers are chosen
randomly
Figure 2.7 shows the true values of the states for our service dog MRP. The values are computed
using Eq. (2.7) and dynamic programming, which is an iterative method and can be used to solve
MDP. We will introduce dynamic programming methods in the next chapter. For this experiment, we
use a discount factor of .γ = 0.9. We can see that the state Found item has the highest value among all
states.
Why do we want to estimate the state values? Because it can help the agent make better decisions.
If the agent knows which state is better (in terms of expected returns), it can choose actions that may
lead it to those better states. For example, in Fig. 2.7, if the current state is Room 2, then the best
successor state is Room 3 since it has the highest state value of 7.0 among all the possible successor
states for Room 2. By selecting actions that lead to high-value states, the agent can maximize its
long-term expected return.
Now we’re ready to discuss the details of the MDP. Similar to how the MRP extends the Markov
chain, the Markov decision process (MDP) extends the MRP by including actions and policy into
the process. The MDP contains all the necessary components, including states, rewards, actions, and
policy. We can define the MDP as a tuple .(S, A, P, R):
Fig. 2.7 State values for the service dog MRP, .γ = 0.9
• .P is the dynamics function (or transition model) of the environment, where .P (s |s, a) = P
St+1 = s St = s, At = a specify the probability of environment transition into successor state
s when in current state s and take action a.
.
• .R is a reward function of the environment; .R(s, a) = E Rt St = s, At = a is the reward signal
provided by the environment when the agent is in state s and taking action a.
Note that the dynamics function .P and reward function .R are now conditioned on the action .At
chosen by the agent at time step t.
In Fig. 2.8, we have modeled our service dog example using an MDP. Before we move on, we want
to explain the small changes we’ve made to Fig. 2.8. First, we have merged states Found item and End
into a single terminal state Found item. This makes sense because the reward is now conditioned on
.(s, a), and there are no additional meaningful states after the agent has reached the state Found item.
Second, the straight and curly lines in Fig. 2.8 represent valid actions that the agent can choose in a
state, rather than state transition probabilities. Finally, the reward now depends on the action chosen
by the agent, and the reward values are slightly different.
In fact, our service dog example is now modeled as a deterministic (stationary) reinforcement
learning environment. This means that if the agent takes the same action a in the same state s, the
successor state .s and reward r will always be the same, regardless of whether we repeat it 100 times
or 1 million times. The transition to the successor state .s is guaranteed to happen with 1.0 probability.
For example, if the agent is in state Room 2 and chooses to Go outside, the successor state will always
be Outside; there is zero chance that the successor state will be Room 3 or Room 1.
34 2 Markov Decision Processes
We can list all the elements in the set of .S, A, R for our service dog MDP; notice that not all
actions are available (or legal) in each state:
As we have explained before, our service dog MDP is a deterministic (stationary) reinforcement
learning environment. The dynamics function is slightly different compared to our previous example.
For MDPs, the transition from the current state s to its successor state .s depends on the current state
s and the action a chosen by the agent. For a deterministic environment, the transition probability is
always 1.0 for legal actions .a ∈ A(s), and 0 for illegal actions .a ∈
/ A(s), which are actions not allowed
in the environment. Illegal actions should never be chosen by the agent, since most environments have
enforced checks at some level. For example, in the game of Go, if a player makes an illegal move,
they automatically lose the game.
We can still construct a single matrix for the dynamics function for our service dog MDP, but this
time it needs to be a 3D matrix. Since it’s not easy for us to draw a 3D matrix, we chose to use a 2D
plane to explain the concept for a single state. Assume the current state of the environment is Room
2, each row of the plane represents an action, and each column of the plane represents a successor
state .s . For consistency purposes, we set the transition probability to 1.0 for the successor state Room
2, for all illegal actions (Go to room2, Go inside, Search). This just means that these illegal actions
won’t affect the state of the environment.
Other documents randomly have
different content
THE FULL PROJECT GUTENBERG LICENSE
PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK
1.D. The copyright laws of the place where you are located also
govern what you can do with this work. Copyright laws in most
countries are in a constant state of change. If you are outside
the United States, check the laws of your country in addition to
the terms of this agreement before downloading, copying,
displaying, performing, distributing or creating derivative works
based on this work or any other Project Gutenberg™ work. The
Foundation makes no representations concerning the copyright
status of any work in any country other than the United States.
1.E.6. You may convert to and distribute this work in any binary,
compressed, marked up, nonproprietary or proprietary form,
including any word processing or hypertext form. However, if
you provide access to or distribute copies of a Project
Gutenberg™ work in a format other than “Plain Vanilla ASCII” or
other format used in the official version posted on the official
Project Gutenberg™ website (www.gutenberg.org), you must,
at no additional cost, fee or expense to the user, provide a copy,
a means of exporting a copy, or a means of obtaining a copy
upon request, of the work in its original “Plain Vanilla ASCII” or
other form. Any alternate format must include the full Project
Gutenberg™ License as specified in paragraph 1.E.1.
• You pay a royalty fee of 20% of the gross profits you derive
from the use of Project Gutenberg™ works calculated using the
method you already use to calculate your applicable taxes. The
fee is owed to the owner of the Project Gutenberg™ trademark,
but he has agreed to donate royalties under this paragraph to
the Project Gutenberg Literary Archive Foundation. Royalty
payments must be paid within 60 days following each date on
which you prepare (or are legally required to prepare) your
periodic tax returns. Royalty payments should be clearly marked
as such and sent to the Project Gutenberg Literary Archive
Foundation at the address specified in Section 4, “Information
about donations to the Project Gutenberg Literary Archive
Foundation.”
• You comply with all other terms of this agreement for free
distribution of Project Gutenberg™ works.
1.F.
Most people start at our website which has the main PG search
facility: www.gutenberg.org.
ebookmasss.com