From 608631f951b5b4b2626a2283ee7f18dbe1863821 Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Fri, 7 Jan 2022 21:26:32 +0330 Subject: [PATCH 01/39] Create index.md --- .../index.md | 118 ++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md new file mode 100644 index 00000000..15ed9473 --- /dev/null +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md @@ -0,0 +1,118 @@ +Reinforcement Learning (from Q Value till the end) +=== + +- [Reinforcement Learning (from Q Value till the end)](#reinforcement-learning-from-q-value-till-the-end) +- [Introduction](#introduction) +- [RL Types of Algorithms](#rl-types-of-algorithms) +- [Q-Learning](#q-learning) +- [Active RL](#active-rl) + - [Real life example](#real-life-example) + - [Epsilon greedy strategy](#epsilon-greedy-strategy) + - [Exploration functions](#exploration-functions) +- [Regret](#regret) +- [Approximate Q-Learning](#approximate-q-learning) + - [Feature-based representation](#feature-based-representation) +- [Conclusion](#conclusion) +- [Further Reading](#further-reading) +- [References](#references) + +# Introduction + +You’ve probably seen how a dog trainer gives a trait to the dogs after they complete a task successfully. That trait is a reward to the brain, and says “Well done! You are going in the right direction.” So after that, the brain tries to do that again in order to get more rewards. This way the dogs will learn and train themselves. +This is sort of what happens in Reinforcement Learning(RL). +Reinforcement learning (RL) is an area of machine learning concerned with how intelligent agents should take actions in an environment in order to maximize the reward by taking a series of actions in response to a dynamic environment. It is the science of making optimal decisions using experiences. + +# RL Types of Algorithms + +RL algorithms have 2 main types. **model-based** and **model-free**. A model-free algorithm doesn’t use or estimate the dynamics (transition and reward functions) of the environment for estimating the optimal policy. Whereas, a model-based algorithm uses both for that. +Q-learning is a model-free reinforcement learning algorithm. + +# Q-Learning + +Q-learning is a model-free reinforcement learning algorithm to learn the value of an action in a particular state. It is a **values-based** learning algorithm. Value based algorithms update the value function based on an equation. +Q-learning is an **off-policy** learner, which means it learns the value of the optimal policy independently of the agent’s actions. In other words, it converges to optimal policy eventually even if you are acting sub-optimally. +Q-learning is a **sample-based** q-value iteration method and in it, you Learn $Q(s,a)$ values as you go: + +- Receive a sample. $(s_{t+1}, s_t, a_t, r_t)$ +- Consider your old estimate: $Q(s_t,a_t)$ +- Consider your new sample estimate: + $$sample = R(s,a,s') + \gamma max_a'Q(s',a') = r_t + \gamma max_aQ(s_{t+1},a)$$ +- Incorporate the new estimate into a running average: + $$Q(s,a) \leftarrow (1 - \alpha)Q(s,a) + [\alpha](sample)$$ + $$\rightarrow Q^{new}(s_t,a_t) \leftarrow \underbrace{Q(s_t,a_t)}_\text{old value} + \underbrace{\alpha}_\text{learning rate} . \overbrace{(\underbrace{\underbrace{r_t}_\text{reward} + \underbrace{\gamma}_\text{discount factor} . \underbrace{max_aQ(s_{t+1},a)}_\text{estimate of optimal future value}}_\text{new value (temporal difference target)} - \underbrace{Q(s_t,a_t)}_\text{old value})}^\text{temporal difference}$$ + +Q-values + +# Active RL + +In active RL, an agent needs to decide what to do as there’s no fixed policy that it can act on. Therefore, the goal of an active RL agent is to act and learn an optimal policy. An agent interacts with the environment either by exploring or exploiting. **Exploration** is all about finding more information about an environment, whereas **exploitation** is exploiting already known information to maximize the rewards. + +## Real life example + +Say you go to the same restaurant every day. You are basically exploiting. But on the other hand, if you search for new restaurant every time before going to any one of them, then it’s exploration. Exploration is very important for the search of future rewards which might be higher than the near rewards. + +Exploration vs. Exploitation + +## Epsilon greedy strategy + +The tradeoff between exploration and exploitation is fundamental. the simplest way to force exploration is using **epsilon greedy strategy**. This method does a random action with a small probability of $\epsilon$ (exploration) and with a probability of $(1 - \epsilon)$ does the current policy action (exploitation). +The problem with random actions is that you do eventually explore the space, but keep thrashing around once learning is done. one solution is to start with a higher ϵ rate and as the agent explores the environment, the ϵ rate decreases and the agent starts to exploit the environment. + +## Exploration functions + +Another solution is to use **exploration functions**. For example, this function can take a value estimate u and a visit count n, and return an optimistic utility, e.g. f (u, n) = v + k/n. we are counting how many times we did some random action. if it had yet to reach a fixed amount, we should try it more often and if it doesn't return a good output we should just stop exploring it. +So we’ll use a modified Q-update: +$$Q(s,a) \leftarrow _\alpha R(s,a,s') + \gamma max_a' f(Q(s',a'),N(s',a'))$$ +in above equation k is fixed. Q is the optimistic utility which is given to f as v. and n is the number of times we visited s' after doing action a' starting from s. which means when the n is low we get to try those actions more often. + +# Regret + +Even though most of the RL algorithms we discussed reach optimal policy, they still make mistakes along the way. Regret is a measure of the total mistake cost, the difference between rewards, including and optimal rewards. +Minimizing regret goes beyond learning to be optimal so it requires optimally learning to be optimal! +# Approximate Q-Learning + +Basic Q-learning keeps a table of all Q-values but in real world situations, there are too many states to visit and hold their Q-values. Instead, we can use function approximation, which simply means using any sort of representation for the Q-function other than a lookup table. The representation is viewed as approximate because it might not be the case that the true utility function or Q-function can be represented in the chosen form. + +## Feature-based representation + +One way of using this is to use a feature-based representation in which we describe a state using a vector of features. In this method, we respresent a **linear** combination of these features and try to learn wis so that the Q function is near to the main Q-value. +$$V(s) = \omega_1f_1(s) + \omega_2f_2(s) + ... + \omega_nf_n(s)$$ +$$Q(s,a) = \omega_1f_1(s,a) + \omega_2f_2(s,a) + ... + \omega_nf_n(s,a)$$ +To learn and update wis, we have a method which is similar to the method we had for updating Q-values in basic Q-learning : +$$\omega_m \leftarrow \omega_m + \alpha [r + \gamma max_aQ(s',a') - Q(s,a)] f_m(s,a)$$ + +# Conclusion + +Q-Learning is a basic form of Reinforcement Learning which uses Q-values (action values) to iteratively improve the behavior of the learning agent. + +Q-values are defined for states and actions. $Q(s, a)$ is an estimation of how good is it to take the action a at the state s. This estimation of $Q(s, a)$ will be iteratively computed using the temporal difference update. + +This update rule to estimate the value of Q is applied at every time step of the agents interaction with the environment. + +At every step of transition, the agent from a state takes an action, observes a reward from the environment, and then transits to another state. If at any point of time the agent ends up in one of the terminating states that means there are no further transition possible. This is said to be the completion of an episode. + +$\epsilon$-greedy policy is a very simple policy of choosing actions using the current Q-value estimations. + +Active learning is a special case of machine learning in which a learning algorithm can interactively query a user (or some other information source) to label new data points with the desired outputs. + +Unlike passive learning which just executes the policy and learns from experience, here we are using active reinforcement learning in which the agent learns the optimal policy by taking actions in the world and finding out what is happenning, and then improving the policy iteratively. + +# Further Reading + +To read more about reinforcement learning, Q-learning, active and passive RL and much more, you can visit links below: + +- [An introduction to Reinforcement Learning](https://medium.com/free-code-camp/an-introduction-to-reinforcement-learning-4339519de419) +- [Simple Reinforcement Learning with Tensorflow Part 0: Q-Learning with Tables and Neural Networks](https://medium.com/emergent-future/simple-reinforcement-learning-with-tensorflow-part-0-q-learning-with-tables-and-neural-networks-d195264329d0) +- [Diving deeper into Reinforcement Learning with Q-Learning](https://medium.com/free-code-camp/diving-deeper-into-reinforcement-learning-with-q-learning-c18d0db58efe) +- [Introduction to Regret in Reinforcement Learning](https://towardsdatascience.com/introduction-to-regret-in-reinforcement-learning-f5b4a28953cd) +- [Active Learning](https://en.wikipedia.org/wiki/Active_learning_(machine_learning)) + +# References + +- _Artificial Intelligence, A modern approach_, Russel & Norvig (Third Edition). +- [Reinforcement Learning slides, CE-417, Sharif Uni of Technology.](http://ce.sharif.edu/courses/99-00/1/ce417-2/resources/root/Slides/PDF/Session%2025_26.pdf) +- [Towardsdatascience](http://Towardsdatascience.com) +- [Wikipedia](http://wikipedia.com) +- [freecodecamp](http://Freecodecamp.org) +- [Core-Robotics](http://core-robotics.gatech.edu) +- [GeeksforGeeks](https://www.geeksforgeeks.org) From 0ea3d8c282357274c604f6343c6da0067dc7e922 Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Fri, 7 Jan 2022 21:27:22 +0330 Subject: [PATCH 02/39] Add files via upload --- .../matadata.yml | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 notebooks/22_reinforcement_learning_from_q_value_till_the_end/matadata.yml diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/matadata.yml b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/matadata.yml new file mode 100644 index 00000000..6e7262f5 --- /dev/null +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/matadata.yml @@ -0,0 +1,31 @@ +title: Reinforcement Learning (from Q Value) # shown on browser tab + +header: + title: Reinforcement Learning (from Q Value till the end) # title of your notebook + description: Q-learning, Active RL, Epsilon greedy strategy, Approximate Q-Learning # short description of your notebook + +authors: + label: + position: top + content: + # list of notebook authors + - name: Karaneh Keypour # name of author + role: Author # change this if you want + contact: + - link: https://github.com/karanehk/ + icon: fab fa-github + - name: Fatemeh Asgari # name of author + role: Author # change this if you want + contact: + - link: https://github.com/fatemeh-asgari + icon: fab fa-github + - name: Maryam Sadat Razavi Taheri # name of author + role: Author # change this if you want + contact: + - link: https://github.com/msrazavi + icon: fab fa-github + +comments: + # enable comments for your post + label: false + kind: comments \ No newline at end of file From b5f77e8c7638e2198ac6bd09f6d738529697f662 Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Fri, 7 Jan 2022 21:28:08 +0330 Subject: [PATCH 03/39] Create a.txt --- .../images/a.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 notebooks/22_reinforcement_learning_from_q_value_till_the_end/images/a.txt diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/images/a.txt b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/images/a.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/images/a.txt @@ -0,0 +1 @@ + From 2f46373c1915c94baadc46481e069b52b7eada7a Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Fri, 7 Jan 2022 21:28:36 +0330 Subject: [PATCH 04/39] Add files via upload --- .../images/1.png | Bin 0 -> 30915 bytes .../images/2.png | Bin 0 -> 142156 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 notebooks/22_reinforcement_learning_from_q_value_till_the_end/images/1.png create mode 100644 notebooks/22_reinforcement_learning_from_q_value_till_the_end/images/2.png diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/images/1.png b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/images/1.png new file mode 100644 index 0000000000000000000000000000000000000000..ef8eb74c250114bcee18ef59c6ef33269b0d14ca GIT binary patch literal 30915 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 z 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%0A7b47?dDiUF3d@&+y+0dJYxAUS-qfhJjBV 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 literal 0 HcmV?d00001 From b080a16934a1abff4b8ccaffb6d4e3c9cc0b46da Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Fri, 7 Jan 2022 21:34:56 +0330 Subject: [PATCH 05/39] Update index.yml --- notebooks/index.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/notebooks/index.yml b/notebooks/index.yml index 1b2133c0..1eec3395 100644 --- a/notebooks/index.yml +++ b/notebooks/index.yml @@ -54,4 +54,6 @@ notebooks: kind: S2021, LN, Notebook #- notebook: notebooks/17_markov_decision_processes/ - notebook: notebooks/18_reinforcement_learning/ - kind: S2021, LN, Notebook \ No newline at end of file + kind: S2021, LN, Notebook + - notebook: notebooks/22_reinforcement_learning_from_q_value_till_the_end/ + kind: F2021, LN, Notebook From 31804a28440ea54acf2310fb2ef594f2f047196d Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Fri, 7 Jan 2022 23:34:41 +0330 Subject: [PATCH 06/39] Update index.yml --- notebooks/index.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/notebooks/index.yml b/notebooks/index.yml index 1eec3395..23a2e223 100644 --- a/notebooks/index.yml +++ b/notebooks/index.yml @@ -55,5 +55,7 @@ notebooks: #- notebook: notebooks/17_markov_decision_processes/ - notebook: notebooks/18_reinforcement_learning/ kind: S2021, LN, Notebook - - notebook: notebooks/22_reinforcement_learning_from_q_value_till_the_end/ + - md: notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md kind: F2021, LN, Notebook + metadata: notebooks/22_reinforcement_learning_from_q_value_till_the_end/metadata.yml + text: Reinforcement Learning (from Q-Value till the End) From 3327758fab63350388e593f46779b0149c777066 Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 10:21:28 +0330 Subject: [PATCH 07/39] Update matadata.yml --- .../matadata.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/matadata.yml b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/matadata.yml index 6e7262f5..9fa014a9 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/matadata.yml +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/matadata.yml @@ -7,6 +7,7 @@ header: authors: label: position: top + kind: people content: # list of notebook authors - name: Karaneh Keypour # name of author @@ -28,4 +29,4 @@ authors: comments: # enable comments for your post label: false - kind: comments \ No newline at end of file + kind: comments From 75e270b4cefa3e6b758eddeeb7711abfc11f4593 Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 10:24:16 +0330 Subject: [PATCH 08/39] Update main.yml --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7e8ef31a..70726084 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -24,5 +24,5 @@ jobs: github_token: ${{ secrets.GITHUB_TOKEN }} enable_jekyll: true allow_empty_commit: true - publish_dir: . + publish_dir: './webified/' exclude_assets: '.github' From 7a309ee031f07571fba5c46ca76df71e77eef52b Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 10:29:06 +0330 Subject: [PATCH 09/39] Update index.md --- .../index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md index 15ed9473..1c1a6ee1 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md @@ -60,7 +60,7 @@ The problem with random actions is that you do eventually explore the space, but ## Exploration functions -Another solution is to use **exploration functions**. For example, this function can take a value estimate u and a visit count n, and return an optimistic utility, e.g. f (u, n) = v + k/n. we are counting how many times we did some random action. if it had yet to reach a fixed amount, we should try it more often and if it doesn't return a good output we should just stop exploring it. +Another solution is to use **exploration functions**. For example, this function can take a value estimate u and a visit count n, and return an optimistic utility, e.g. $f(u,n) = v + \frac{k}{n}$ . we are counting how many times we did some random action. if it had yet to reach a fixed amount, we should try it more often and if it doesn't return a good output we should just stop exploring it. So we’ll use a modified Q-update: $$Q(s,a) \leftarrow _\alpha R(s,a,s') + \gamma max_a' f(Q(s',a'),N(s',a'))$$ in above equation k is fixed. Q is the optimistic utility which is given to f as v. and n is the number of times we visited s' after doing action a' starting from s. which means when the n is low we get to try those actions more often. From f53f9ddd1a021208020ebd36192cbf09aecad98d Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 10:54:32 +0330 Subject: [PATCH 10/39] Update index.md --- .../index.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md index 1c1a6ee1..53294d3b 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md @@ -36,10 +36,15 @@ Q-learning is a **sample-based** q-value iteration method and in it, you Learn $ - Receive a sample. $(s_{t+1}, s_t, a_t, r_t)$ - Consider your old estimate: $Q(s_t,a_t)$ - Consider your new sample estimate: + $$sample = R(s,a,s') + \gamma max_a'Q(s',a') = r_t + \gamma max_aQ(s_{t+1},a)$$ + - Incorporate the new estimate into a running average: + $$Q(s,a) \leftarrow (1 - \alpha)Q(s,a) + [\alpha](sample)$$ + $$\rightarrow Q^{new}(s_t,a_t) \leftarrow \underbrace{Q(s_t,a_t)}_\text{old value} + \underbrace{\alpha}_\text{learning rate} . \overbrace{(\underbrace{\underbrace{r_t}_\text{reward} + \underbrace{\gamma}_\text{discount factor} . \underbrace{max_aQ(s_{t+1},a)}_\text{estimate of optimal future value}}_\text{new value (temporal difference target)} - \underbrace{Q(s_t,a_t)}_\text{old value})}^\text{temporal difference}$$ + Q-values @@ -76,11 +81,16 @@ Basic Q-learning keeps a table of all Q-values but in real world situations, the ## Feature-based representation One way of using this is to use a feature-based representation in which we describe a state using a vector of features. In this method, we respresent a **linear** combination of these features and try to learn wis so that the Q function is near to the main Q-value. + $$V(s) = \omega_1f_1(s) + \omega_2f_2(s) + ... + \omega_nf_n(s)$$ + $$Q(s,a) = \omega_1f_1(s,a) + \omega_2f_2(s,a) + ... + \omega_nf_n(s,a)$$ + To learn and update wis, we have a method which is similar to the method we had for updating Q-values in basic Q-learning : + $$\omega_m \leftarrow \omega_m + \alpha [r + \gamma max_aQ(s',a') - Q(s,a)] f_m(s,a)$$ + # Conclusion Q-Learning is a basic form of Reinforcement Learning which uses Q-values (action values) to iteratively improve the behavior of the learning agent. From 631763a8e0d2c439781d24204745d7b319848e2b Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 10:57:02 +0330 Subject: [PATCH 11/39] Update index.md --- .../index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md index 53294d3b..4ec8bb0f 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md @@ -41,7 +41,7 @@ Q-learning is a **sample-based** q-value iteration method and in it, you Learn $ - Incorporate the new estimate into a running average: - $$Q(s,a) \leftarrow (1 - \alpha)Q(s,a) + [\alpha](sample)$$ + $$Q(s,a) \leftarrow (1 - \alpha)Q(s,a) + \alpha(sample)$$ $$\rightarrow Q^{new}(s_t,a_t) \leftarrow \underbrace{Q(s_t,a_t)}_\text{old value} + \underbrace{\alpha}_\text{learning rate} . \overbrace{(\underbrace{\underbrace{r_t}_\text{reward} + \underbrace{\gamma}_\text{discount factor} . \underbrace{max_aQ(s_{t+1},a)}_\text{estimate of optimal future value}}_\text{new value (temporal difference target)} - \underbrace{Q(s_t,a_t)}_\text{old value})}^\text{temporal difference}$$ From d34e0f38d3c58d808cd9ef1eec8557c7a5a8f5cd Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 11:03:29 +0330 Subject: [PATCH 12/39] Update index.md --- .../index.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md index 4ec8bb0f..a823b748 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md @@ -43,7 +43,7 @@ Q-learning is a **sample-based** q-value iteration method and in it, you Learn $ $$Q(s,a) \leftarrow (1 - \alpha)Q(s,a) + \alpha(sample)$$ - $$\rightarrow Q^{new}(s_t,a_t) \leftarrow \underbrace{Q(s_t,a_t)}_\text{old value} + \underbrace{\alpha}_\text{learning rate} . \overbrace{(\underbrace{\underbrace{r_t}_\text{reward} + \underbrace{\gamma}_\text{discount factor} . \underbrace{max_aQ(s_{t+1},a)}_\text{estimate of optimal future value}}_\text{new value (temporal difference target)} - \underbrace{Q(s_t,a_t)}_\text{old value})}^\text{temporal difference}$$ + $$\rightarrow Q^{new}(s_t,a_t) \leftarrow \underbrace{Q(s_t,a_t)}_\text{old value} + \underbrace{\alpha}_\text{learning rate} . \overbrace{(\underbrace{\underbrace{r_t}_\text{reward} + \underbrace{\gamma}_\text{discount factor} \dot \underbrace{max_aQ(s_{t+1},a)}_\text{estimate of optimal future value}}_\text{new value (temporal difference target)} - \underbrace{Q(s_t,a_t)}_\text{old value})}^\text{temporal difference}$$ Q-values @@ -61,13 +61,15 @@ Say you go to the same restaurant every day. You are basically exploiting. But o ## Epsilon greedy strategy The tradeoff between exploration and exploitation is fundamental. the simplest way to force exploration is using **epsilon greedy strategy**. This method does a random action with a small probability of $\epsilon$ (exploration) and with a probability of $(1 - \epsilon)$ does the current policy action (exploitation). -The problem with random actions is that you do eventually explore the space, but keep thrashing around once learning is done. one solution is to start with a higher ϵ rate and as the agent explores the environment, the ϵ rate decreases and the agent starts to exploit the environment. +The problem with random actions is that you do eventually explore the space, but keep thrashing around once learning is done. one solution is to start with a higher $\epsilon$ rate and as the agent explores the environment, the ϵ rate decreases and the agent starts to exploit the environment. ## Exploration functions Another solution is to use **exploration functions**. For example, this function can take a value estimate u and a visit count n, and return an optimistic utility, e.g. $f(u,n) = v + \frac{k}{n}$ . we are counting how many times we did some random action. if it had yet to reach a fixed amount, we should try it more often and if it doesn't return a good output we should just stop exploring it. So we’ll use a modified Q-update: + $$Q(s,a) \leftarrow _\alpha R(s,a,s') + \gamma max_a' f(Q(s',a'),N(s',a'))$$ + in above equation k is fixed. Q is the optimistic utility which is given to f as v. and n is the number of times we visited s' after doing action a' starting from s. which means when the n is low we get to try those actions more often. # Regret From cbc2567053466755cff5ef53982d135fc94d0775 Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 11:16:57 +0330 Subject: [PATCH 13/39] Update index.md --- .../index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md index a823b748..56a4b6dd 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md @@ -37,7 +37,7 @@ Q-learning is a **sample-based** q-value iteration method and in it, you Learn $ - Consider your old estimate: $Q(s_t,a_t)$ - Consider your new sample estimate: - $$sample = R(s,a,s') + \gamma max_a'Q(s',a') = r_t + \gamma max_aQ(s_{t+1},a)$$ + $$sample = R(s,a,s') + \gamma max_{a'}Q(s',a') = r_t + \gamma max_aQ(s_{t+1},a)$$ - Incorporate the new estimate into a running average: @@ -46,7 +46,7 @@ Q-learning is a **sample-based** q-value iteration method and in it, you Learn $ $$\rightarrow Q^{new}(s_t,a_t) \leftarrow \underbrace{Q(s_t,a_t)}_\text{old value} + \underbrace{\alpha}_\text{learning rate} . \overbrace{(\underbrace{\underbrace{r_t}_\text{reward} + \underbrace{\gamma}_\text{discount factor} \dot \underbrace{max_aQ(s_{t+1},a)}_\text{estimate of optimal future value}}_\text{new value (temporal difference target)} - \underbrace{Q(s_t,a_t)}_\text{old value})}^\text{temporal difference}$$ -Q-values +Q-values # Active RL @@ -56,7 +56,7 @@ In active RL, an agent needs to decide what to do as there’s no fixed policy t Say you go to the same restaurant every day. You are basically exploiting. But on the other hand, if you search for new restaurant every time before going to any one of them, then it’s exploration. Exploration is very important for the search of future rewards which might be higher than the near rewards. -Exploration vs. Exploitation +Exploration vs. Exploitation ## Epsilon greedy strategy From 7c17e7547386f45117bd6764b357bd140c2e5b55 Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 11:19:14 +0330 Subject: [PATCH 14/39] Update index.md --- .../index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md index 56a4b6dd..ec577a61 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md @@ -43,7 +43,7 @@ Q-learning is a **sample-based** q-value iteration method and in it, you Learn $ $$Q(s,a) \leftarrow (1 - \alpha)Q(s,a) + \alpha(sample)$$ - $$\rightarrow Q^{new}(s_t,a_t) \leftarrow \underbrace{Q(s_t,a_t)}_\text{old value} + \underbrace{\alpha}_\text{learning rate} . \overbrace{(\underbrace{\underbrace{r_t}_\text{reward} + \underbrace{\gamma}_\text{discount factor} \dot \underbrace{max_aQ(s_{t+1},a)}_\text{estimate of optimal future value}}_\text{new value (temporal difference target)} - \underbrace{Q(s_t,a_t)}_\text{old value})}^\text{temporal difference}$$ + $$\rightarrow Q^{new}(s_t,a_t) \leftarrow \underbrace{Q(s_t,a_t)}_\text{old value} + \underbrace{\alpha}_\text{learning rate} \dot \overbrace{(\underbrace{\underbrace{r_t}_\text{reward} + \underbrace{\gamma}_\text{discount factor} \dot \underbrace{max_aQ(s_{t+1},a)}_\text{estimate of optimal future value}}_\text{new value (temporal difference target)} - \underbrace{Q(s_t,a_t)}_\text{old value})}^\text{temporal difference}$$ Q-values From c4172c31ff81992362cd83f60a33364f6ce1804a Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 11:22:40 +0330 Subject: [PATCH 15/39] Update index.md --- .../index.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md index ec577a61..d86980d1 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md @@ -6,12 +6,12 @@ Reinforcement Learning (from Q Value till the end) - [RL Types of Algorithms](#rl-types-of-algorithms) - [Q-Learning](#q-learning) - [Active RL](#active-rl) - - [Real life example](#real-life-example) - - [Epsilon greedy strategy](#epsilon-greedy-strategy) - - [Exploration functions](#exploration-functions) + - [Real life example](##real-life-example) + - [Epsilon greedy strategy](##epsilon-greedy-strategy) + - [Exploration functions](##exploration-functions) - [Regret](#regret) - [Approximate Q-Learning](#approximate-q-learning) - - [Feature-based representation](#feature-based-representation) + - [Feature-based representation](##feature-based-representation) - [Conclusion](#conclusion) - [Further Reading](#further-reading) - [References](#references) @@ -68,7 +68,7 @@ The problem with random actions is that you do eventually explore the space, but Another solution is to use **exploration functions**. For example, this function can take a value estimate u and a visit count n, and return an optimistic utility, e.g. $f(u,n) = v + \frac{k}{n}$ . we are counting how many times we did some random action. if it had yet to reach a fixed amount, we should try it more often and if it doesn't return a good output we should just stop exploring it. So we’ll use a modified Q-update: -$$Q(s,a) \leftarrow _\alpha R(s,a,s') + \gamma max_a' f(Q(s',a'),N(s',a'))$$ +$$Q(s,a) \leftarrow _\alpha R(s,a,s') + \gamma max_{a'} f(Q(s',a'),N(s',a'))$$ in above equation k is fixed. Q is the optimistic utility which is given to f as v. and n is the number of times we visited s' after doing action a' starting from s. which means when the n is low we get to try those actions more often. From 3c36ab69f2e3248cc7a97bb1d06a9e1d9f73f928 Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 11:23:04 +0330 Subject: [PATCH 16/39] Update index.md --- .../index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md index d86980d1..5f248488 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md @@ -6,12 +6,12 @@ Reinforcement Learning (from Q Value till the end) - [RL Types of Algorithms](#rl-types-of-algorithms) - [Q-Learning](#q-learning) - [Active RL](#active-rl) - - [Real life example](##real-life-example) - - [Epsilon greedy strategy](##epsilon-greedy-strategy) - - [Exploration functions](##exploration-functions) + - [Real life example](#real-life-example) + - [Epsilon greedy strategy](#epsilon-greedy-strategy) + - [Exploration functions](#exploration-functions) - [Regret](#regret) - [Approximate Q-Learning](#approximate-q-learning) - - [Feature-based representation](##feature-based-representation) + - [Feature-based representation](#feature-based-representation) - [Conclusion](#conclusion) - [Further Reading](#further-reading) - [References](#references) From 1b29739ae89df9ce29f59dfd8ceff085fdbbcc0d Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 13:56:24 +0330 Subject: [PATCH 17/39] Update index.md --- .../index.md | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md index 5f248488..5513f72d 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md @@ -1,5 +1,4 @@ -Reinforcement Learning (from Q Value till the end) -=== +

- [Reinforcement Learning (from Q Value till the end)](#reinforcement-learning-from-q-value-till-the-end) - [Introduction](#introduction) @@ -16,18 +15,18 @@ Reinforcement Learning (from Q Value till the end) - [Further Reading](#further-reading) - [References](#references) -# Introduction +

Introduction

You’ve probably seen how a dog trainer gives a trait to the dogs after they complete a task successfully. That trait is a reward to the brain, and says “Well done! You are going in the right direction.” So after that, the brain tries to do that again in order to get more rewards. This way the dogs will learn and train themselves. This is sort of what happens in Reinforcement Learning(RL). Reinforcement learning (RL) is an area of machine learning concerned with how intelligent agents should take actions in an environment in order to maximize the reward by taking a series of actions in response to a dynamic environment. It is the science of making optimal decisions using experiences. -# RL Types of Algorithms +

RL Types of Algorithms

RL algorithms have 2 main types. **model-based** and **model-free**. A model-free algorithm doesn’t use or estimate the dynamics (transition and reward functions) of the environment for estimating the optimal policy. Whereas, a model-based algorithm uses both for that. Q-learning is a model-free reinforcement learning algorithm. -# Q-Learning +

Q-Learning

Q-learning is a model-free reinforcement learning algorithm to learn the value of an action in a particular state. It is a **values-based** learning algorithm. Value based algorithms update the value function based on an equation. Q-learning is an **off-policy** learner, which means it learns the value of the optimal policy independently of the agent’s actions. In other words, it converges to optimal policy eventually even if you are acting sub-optimally. @@ -48,22 +47,22 @@ Q-learning is a **sample-based** q-value iteration method and in it, you Learn $ Q-values -# Active RL +

Active RL

In active RL, an agent needs to decide what to do as there’s no fixed policy that it can act on. Therefore, the goal of an active RL agent is to act and learn an optimal policy. An agent interacts with the environment either by exploring or exploiting. **Exploration** is all about finding more information about an environment, whereas **exploitation** is exploiting already known information to maximize the rewards. -## Real life example +

Real life example

Say you go to the same restaurant every day. You are basically exploiting. But on the other hand, if you search for new restaurant every time before going to any one of them, then it’s exploration. Exploration is very important for the search of future rewards which might be higher than the near rewards. Exploration vs. Exploitation -## Epsilon greedy strategy +

Epsilon greedy strategy

The tradeoff between exploration and exploitation is fundamental. the simplest way to force exploration is using **epsilon greedy strategy**. This method does a random action with a small probability of $\epsilon$ (exploration) and with a probability of $(1 - \epsilon)$ does the current policy action (exploitation). The problem with random actions is that you do eventually explore the space, but keep thrashing around once learning is done. one solution is to start with a higher $\epsilon$ rate and as the agent explores the environment, the ϵ rate decreases and the agent starts to exploit the environment. -## Exploration functions +

Exploration functions

Another solution is to use **exploration functions**. For example, this function can take a value estimate u and a visit count n, and return an optimistic utility, e.g. $f(u,n) = v + \frac{k}{n}$ . we are counting how many times we did some random action. if it had yet to reach a fixed amount, we should try it more often and if it doesn't return a good output we should just stop exploring it. So we’ll use a modified Q-update: @@ -72,15 +71,16 @@ $$Q(s,a) \leftarrow _\alpha R(s,a,s') + \gamma max_{a'} f(Q(s',a'),N(s',a'))$$ in above equation k is fixed. Q is the optimistic utility which is given to f as v. and n is the number of times we visited s' after doing action a' starting from s. which means when the n is low we get to try those actions more often. -# Regret +

Regret

Even though most of the RL algorithms we discussed reach optimal policy, they still make mistakes along the way. Regret is a measure of the total mistake cost, the difference between rewards, including and optimal rewards. Minimizing regret goes beyond learning to be optimal so it requires optimally learning to be optimal! -# Approximate Q-Learning + +

Approximate Q-Learning

Basic Q-learning keeps a table of all Q-values but in real world situations, there are too many states to visit and hold their Q-values. Instead, we can use function approximation, which simply means using any sort of representation for the Q-function other than a lookup table. The representation is viewed as approximate because it might not be the case that the true utility function or Q-function can be represented in the chosen form. -## Feature-based representation +

Feature-based representation

One way of using this is to use a feature-based representation in which we describe a state using a vector of features. In this method, we respresent a **linear** combination of these features and try to learn wis so that the Q function is near to the main Q-value. @@ -93,7 +93,7 @@ To learn and update wis, we have a method which is similar to the method we had $$\omega_m \leftarrow \omega_m + \alpha [r + \gamma max_aQ(s',a') - Q(s,a)] f_m(s,a)$$ -# Conclusion +

Conclusion

Q-Learning is a basic form of Reinforcement Learning which uses Q-values (action values) to iteratively improve the behavior of the learning agent. @@ -109,7 +109,7 @@ Active learning is a special case of machine learning in which a learning algori Unlike passive learning which just executes the policy and learns from experience, here we are using active reinforcement learning in which the agent learns the optimal policy by taking actions in the world and finding out what is happenning, and then improving the policy iteratively. -# Further Reading +

Further Reading

To read more about reinforcement learning, Q-learning, active and passive RL and much more, you can visit links below: @@ -118,8 +118,8 @@ To read more about reinforcement learning, Q-learning, active and passive RL and - [Diving deeper into Reinforcement Learning with Q-Learning](https://medium.com/free-code-camp/diving-deeper-into-reinforcement-learning-with-q-learning-c18d0db58efe) - [Introduction to Regret in Reinforcement Learning](https://towardsdatascience.com/introduction-to-regret-in-reinforcement-learning-f5b4a28953cd) - [Active Learning](https://en.wikipedia.org/wiki/Active_learning_(machine_learning)) - -# References +- +

References

- _Artificial Intelligence, A modern approach_, Russel & Norvig (Third Edition). - [Reinforcement Learning slides, CE-417, Sharif Uni of Technology.](http://ce.sharif.edu/courses/99-00/1/ce417-2/resources/root/Slides/PDF/Session%2025_26.pdf) From 6888180dfd711bedc0c9d144bde597d0662c84e4 Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 14:12:54 +0330 Subject: [PATCH 18/39] Update index.md --- .../index.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md index 5513f72d..1d1b120b 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md @@ -5,12 +5,12 @@ - [RL Types of Algorithms](#rl-types-of-algorithms) - [Q-Learning](#q-learning) - [Active RL](#active-rl) - - [Real life example](#real-life-example) - - [Epsilon greedy strategy](#epsilon-greedy-strategy) - - [Exploration functions](#exploration-functions) + - [Real life example](#real-life-example) + - [Epsilon greedy strategy](#epsilon-greedy-strategy) + - [Exploration functions](#exploration-functions) - [Regret](#regret) - [Approximate Q-Learning](#approximate-q-learning) - - [Feature-based representation](#feature-based-representation) + - [Feature-based representation](#feature-based-representation) - [Conclusion](#conclusion) - [Further Reading](#further-reading) - [References](#references) @@ -42,7 +42,7 @@ Q-learning is a **sample-based** q-value iteration method and in it, you Learn $ $$Q(s,a) \leftarrow (1 - \alpha)Q(s,a) + \alpha(sample)$$ - $$\rightarrow Q^{new}(s_t,a_t) \leftarrow \underbrace{Q(s_t,a_t)}_\text{old value} + \underbrace{\alpha}_\text{learning rate} \dot \overbrace{(\underbrace{\underbrace{r_t}_\text{reward} + \underbrace{\gamma}_\text{discount factor} \dot \underbrace{max_aQ(s_{t+1},a)}_\text{estimate of optimal future value}}_\text{new value (temporal difference target)} - \underbrace{Q(s_t,a_t)}_\text{old value})}^\text{temporal difference}$$ + $$\rightarrow Q^{new}(s_t,a_t) \leftarrow \underbrace{Q(s_t,a_t)}_\text{old value} + \underbrace{\alpha}_\text{learning rate} . \overbrace{(\underbrace{\underbrace{r_t}_\text{reward} + \underbrace{\gamma}_\text{discount factor} . \underbrace{max_aQ(s_{t+1},a)}_\text{estimate of optimal future value}}_\text{new value (temporal difference target)} - \underbrace{Q(s_t,a_t)}_\text{old value})}^\text{temporal difference}$$ Q-values From cf9927c0b5e60e5b0c4c2f4b8912b270623acdd4 Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 14:13:33 +0330 Subject: [PATCH 19/39] Update index.md --- .../index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md index 1d1b120b..a5af6b50 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md @@ -118,7 +118,7 @@ To read more about reinforcement learning, Q-learning, active and passive RL and - [Diving deeper into Reinforcement Learning with Q-Learning](https://medium.com/free-code-camp/diving-deeper-into-reinforcement-learning-with-q-learning-c18d0db58efe) - [Introduction to Regret in Reinforcement Learning](https://towardsdatascience.com/introduction-to-regret-in-reinforcement-learning-f5b4a28953cd) - [Active Learning](https://en.wikipedia.org/wiki/Active_learning_(machine_learning)) -- +

References

- _Artificial Intelligence, A modern approach_, Russel & Norvig (Third Edition). From 0e2df0c26aa90564a856a12b5b834864c191c94d Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 14:15:58 +0330 Subject: [PATCH 20/39] Update index.yml --- notebooks/index.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/notebooks/index.yml b/notebooks/index.yml index 23a2e223..c8651fd5 100644 --- a/notebooks/index.yml +++ b/notebooks/index.yml @@ -55,7 +55,7 @@ notebooks: #- notebook: notebooks/17_markov_decision_processes/ - notebook: notebooks/18_reinforcement_learning/ kind: S2021, LN, Notebook - - md: notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md - kind: F2021, LN, Notebook + - md: notebooks/22_reinforcement_learning_from_q_value_till_the_end + kind: F2021, LN metadata: notebooks/22_reinforcement_learning_from_q_value_till_the_end/metadata.yml text: Reinforcement Learning (from Q-Value till the End) From 4768f0f862ed4eef4678b873d112aaf4abe30b05 Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 14:23:10 +0330 Subject: [PATCH 21/39] Update index.yml --- notebooks/index.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/notebooks/index.yml b/notebooks/index.yml index c8651fd5..8df402ce 100644 --- a/notebooks/index.yml +++ b/notebooks/index.yml @@ -57,5 +57,3 @@ notebooks: kind: S2021, LN, Notebook - md: notebooks/22_reinforcement_learning_from_q_value_till_the_end kind: F2021, LN - metadata: notebooks/22_reinforcement_learning_from_q_value_till_the_end/metadata.yml - text: Reinforcement Learning (from Q-Value till the End) From 251373fcd5901ff6d3968e0e41cbf7bda5315166 Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 14:36:52 +0330 Subject: [PATCH 22/39] Update index.md --- .../index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md index a5af6b50..44aeab82 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md @@ -36,13 +36,13 @@ Q-learning is a **sample-based** q-value iteration method and in it, you Learn $ - Consider your old estimate: $Q(s_t,a_t)$ - Consider your new sample estimate: - $$sample = R(s,a,s') + \gamma max_{a'}Q(s',a') = r_t + \gamma max_aQ(s_{t+1},a)$$ + $$sample = R(s,a,s^{\prime}) + \gamma \max_{a^{\prime}}Q(s^{prime},a^{\prime}) = r_t + \gamma \max_aQ(s_{t+1},a)$$ - Incorporate the new estimate into a running average: $$Q(s,a) \leftarrow (1 - \alpha)Q(s,a) + \alpha(sample)$$ - $$\rightarrow Q^{new}(s_t,a_t) \leftarrow \underbrace{Q(s_t,a_t)}_\text{old value} + \underbrace{\alpha}_\text{learning rate} . \overbrace{(\underbrace{\underbrace{r_t}_\text{reward} + \underbrace{\gamma}_\text{discount factor} . \underbrace{max_aQ(s_{t+1},a)}_\text{estimate of optimal future value}}_\text{new value (temporal difference target)} - \underbrace{Q(s_t,a_t)}_\text{old value})}^\text{temporal difference}$$ + $$\rightarrow Q^{new}(s_t,a_t) \leftarrow \underbrace{Q(s_t,a_t)}_\text{old value} + \underbrace{\alpha}_\text{learning rate} . \overbrace{(\underbrace{\underbrace{r_t}_\text{reward} + \underbrace{\gamma}_\text{discount factor} . \underbrace{\max_aQ(s_{t+1},a)}_\text{estimate of optimal future value}}_\text{new value (temporal difference target)} - \underbrace{Q(s_t,a_t)}_\text{old value})}^\text{temporal difference}$$ Q-values @@ -67,7 +67,7 @@ The problem with random actions is that you do eventually explore the space, but Another solution is to use **exploration functions**. For example, this function can take a value estimate u and a visit count n, and return an optimistic utility, e.g. $f(u,n) = v + \frac{k}{n}$ . we are counting how many times we did some random action. if it had yet to reach a fixed amount, we should try it more often and if it doesn't return a good output we should just stop exploring it. So we’ll use a modified Q-update: -$$Q(s,a) \leftarrow _\alpha R(s,a,s') + \gamma max_{a'} f(Q(s',a'),N(s',a'))$$ +$$Q(s,a) \leftarrow \alpha R(s,a,s^{\prime}) + \gamma \max_{a^{\prime}} f(Q(s^{\prime},a^{\prime}),N(s^{\prime},a^{\prime}))$$ in above equation k is fixed. Q is the optimistic utility which is given to f as v. and n is the number of times we visited s' after doing action a' starting from s. which means when the n is low we get to try those actions more often. @@ -90,7 +90,7 @@ $$Q(s,a) = \omega_1f_1(s,a) + \omega_2f_2(s,a) + ... + \omega_nf_n(s,a)$$ To learn and update wis, we have a method which is similar to the method we had for updating Q-values in basic Q-learning : -$$\omega_m \leftarrow \omega_m + \alpha [r + \gamma max_aQ(s',a') - Q(s,a)] f_m(s,a)$$ +$$\omega_m \leftarrow \omega_m + \alpha [r + \gamma \max_aQ(s^{\prime},a^{\prime}) - Q(s,a)] f_m(s,a)$$

Conclusion

From e4df5cd6e9637d66842134d4ce9c28728d692112 Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 14:41:26 +0330 Subject: [PATCH 23/39] Update matadata.yml --- .../matadata.yml | 29 +++++++++---------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/matadata.yml b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/matadata.yml index 9fa014a9..95a09cd2 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/matadata.yml +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/matadata.yml @@ -1,32 +1,29 @@ -title: Reinforcement Learning (from Q Value) # shown on browser tab +title: Reinforcement Learning - Part 2 header: - title: Reinforcement Learning (from Q Value till the end) # title of your notebook - description: Q-learning, Active RL, Epsilon greedy strategy, Approximate Q-Learning # short description of your notebook + title: Reinforcement Learning - Part 2 + description: Q-learning, Active RL, Epsilon greedy strategy, Approximate Q-Learning authors: - label: + label: position: top kind: people content: - # list of notebook authors - - name: Karaneh Keypour # name of author - role: Author # change this if you want + - name: Karaneh Keypour + role: Author contact: - - link: https://github.com/karanehk/ + - link: https://github.com/karanehk icon: fab fa-github - - name: Fatemeh Asgari # name of author - role: Author # change this if you want + + - name: Fatemeh Asgari + role: Author contact: - link: https://github.com/fatemeh-asgari icon: fab fa-github - - name: Maryam Sadat Razavi Taheri # name of author - role: Author # change this if you want + + - name: Maryam Sadat Razavi Taheri + role: Author contact: - link: https://github.com/msrazavi icon: fab fa-github -comments: - # enable comments for your post - label: false - kind: comments From a4e4154ef5240e83713351730d40851ef5712835 Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 14:47:19 +0330 Subject: [PATCH 24/39] Update index.md --- .../index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md index 44aeab82..dc9eb77e 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md @@ -42,7 +42,7 @@ Q-learning is a **sample-based** q-value iteration method and in it, you Learn $ $$Q(s,a) \leftarrow (1 - \alpha)Q(s,a) + \alpha(sample)$$ - $$\rightarrow Q^{new}(s_t,a_t) \leftarrow \underbrace{Q(s_t,a_t)}_\text{old value} + \underbrace{\alpha}_\text{learning rate} . \overbrace{(\underbrace{\underbrace{r_t}_\text{reward} + \underbrace{\gamma}_\text{discount factor} . \underbrace{\max_aQ(s_{t+1},a)}_\text{estimate of optimal future value}}_\text{new value (temporal difference target)} - \underbrace{Q(s_t,a_t)}_\text{old value})}^\text{temporal difference}$$ + $$\rightarrow Q^{new}(s_t,a_t) \leftarrow \underbrace{Q(s_t,a_t)}\text{old value}<\sub> + \underbrace{\alpha}_\text{learning rate} . \overbrace{(\underbrace{\underbrace{r_t}_\text{reward} + \underbrace{\gamma}_\text{discount factor} . \underbrace{\max_aQ(s_{t+1},a)}_\text{estimate of optimal future value}}_\text{new value (temporal difference target)} - \underbrace{Q(s_t,a_t)}_\text{old value})}^\text{temporal difference}$$ Q-values From c53bb5c4353f553bd1a9963b6f72e477b57b948c Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 14:53:46 +0330 Subject: [PATCH 25/39] Update index.md --- .../index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md index dc9eb77e..fbaaf375 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md @@ -42,7 +42,7 @@ Q-learning is a **sample-based** q-value iteration method and in it, you Learn $ $$Q(s,a) \leftarrow (1 - \alpha)Q(s,a) + \alpha(sample)$$ - $$\rightarrow Q^{new}(s_t,a_t) \leftarrow \underbrace{Q(s_t,a_t)}\text{old value}<\sub> + \underbrace{\alpha}_\text{learning rate} . \overbrace{(\underbrace{\underbrace{r_t}_\text{reward} + \underbrace{\gamma}_\text{discount factor} . \underbrace{\max_aQ(s_{t+1},a)}_\text{estimate of optimal future value}}_\text{new value (temporal difference target)} - \underbrace{Q(s_t,a_t)}_\text{old value})}^\text{temporal difference}$$ + $$\rightarrow Q^{new}(s_t,a_t) \leftarrow \underbrace{Q(s_t,a_t)}\text{old value} + \underbrace{\alpha}\text{learning rate} . \overbrace{(\underbrace{\underbrace{r_t}_\text{reward} + \underbrace{\gamma}\text{discount factor} . \underbrace{\max_aQ(s_{t+1},a)}\text{estimate of optimal future value}}\text{new value (temporal difference target)} - \underbrace{Q(s_t,a_t)}\text{old value})}^\text{temporal difference}$$ Q-values From 79b59ae227c41e23af672ef6d1b8302e0bae8ee5 Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 15:00:46 +0330 Subject: [PATCH 26/39] Update index.yml --- notebooks/index.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notebooks/index.yml b/notebooks/index.yml index 8df402ce..f0721afe 100644 --- a/notebooks/index.yml +++ b/notebooks/index.yml @@ -55,5 +55,5 @@ notebooks: #- notebook: notebooks/17_markov_decision_processes/ - notebook: notebooks/18_reinforcement_learning/ kind: S2021, LN, Notebook - - md: notebooks/22_reinforcement_learning_from_q_value_till_the_end + - md: notebooks/22_reinforcement_learning_from_q_value_till_the_end/ kind: F2021, LN From f5dba3e404aefde832fcc15704bb1582861c87db Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 15:02:58 +0330 Subject: [PATCH 27/39] Update main.yml --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 70726084..4bf550f5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -24,5 +24,5 @@ jobs: github_token: ${{ secrets.GITHUB_TOKEN }} enable_jekyll: true allow_empty_commit: true - publish_dir: './webified/' + publish_dir: webified exclude_assets: '.github' From 6cebfc55ca70b476d5e446723d27e0060f4265cb Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 15:06:52 +0330 Subject: [PATCH 28/39] Delete a.txt --- .../images/a.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 notebooks/22_reinforcement_learning_from_q_value_till_the_end/images/a.txt diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/images/a.txt b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/images/a.txt deleted file mode 100644 index 8b137891..00000000 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/images/a.txt +++ /dev/null @@ -1 +0,0 @@ - From 8387bc58178648077e9a2278738148418d1277e7 Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 15:23:53 +0330 Subject: [PATCH 29/39] Update index.md --- .../index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md index fbaaf375..dd5f28a3 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md @@ -36,13 +36,13 @@ Q-learning is a **sample-based** q-value iteration method and in it, you Learn $ - Consider your old estimate: $Q(s_t,a_t)$ - Consider your new sample estimate: - $$sample = R(s,a,s^{\prime}) + \gamma \max_{a^{\prime}}Q(s^{prime},a^{\prime}) = r_t + \gamma \max_aQ(s_{t+1},a)$$ + $$sample = R(s,a,s^{\prime}) + \gamma \max_{a^{\prime}}Q(s^{\prime},a^{\prime}) = r_t + \gamma \max_aQ(s_{t+1},a)$$ - Incorporate the new estimate into a running average: $$Q(s,a) \leftarrow (1 - \alpha)Q(s,a) + \alpha(sample)$$ - $$\rightarrow Q^{new}(s_t,a_t) \leftarrow \underbrace{Q(s_t,a_t)}\text{old value} + \underbrace{\alpha}\text{learning rate} . \overbrace{(\underbrace{\underbrace{r_t}_\text{reward} + \underbrace{\gamma}\text{discount factor} . \underbrace{\max_aQ(s_{t+1},a)}\text{estimate of optimal future value}}\text{new value (temporal difference target)} - \underbrace{Q(s_t,a_t)}\text{old value})}^\text{temporal difference}$$ + $$\rightarrow Q^{new}(s_t,a_t) \leftarrow \underbrace{Q(s_t,a_t)}_ {\text{old value}} + \underbrace{\alpha}_ {\text{learning rate}} . \overbrace{(\underbrace{\underbrace{r_t}_ {\text{reward}} + \underbrace{\gamma}_ {\text{discount factor}} . \underbrace{\max_aQ(s_{t+1},a)}_ {\text{estimate of optimal future value}}}_ {\text{new value (temporal difference target)}} - \underbrace{Q(s_t,a_t)}_ {\text{old value}})}^\text{temporal difference}$$ Q-values From 61774f479dc38cddbfba525c6ca99810da53eb74 Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 15:31:41 +0330 Subject: [PATCH 30/39] Update matadata.yml --- .../matadata.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/matadata.yml b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/matadata.yml index 95a09cd2..656c09ed 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/matadata.yml +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/matadata.yml @@ -14,16 +14,22 @@ authors: contact: - link: https://github.com/karanehk icon: fab fa-github + - link: mailto:keypoor.karaneh@gmail.com + icon: fas fa-envelope - name: Fatemeh Asgari role: Author contact: - link: https://github.com/fatemeh-asgari icon: fab fa-github + - link: mailto:f.asgari2001@gmail.com + icon: fas fa-envelope - name: Maryam Sadat Razavi Taheri role: Author contact: - link: https://github.com/msrazavi icon: fab fa-github + - link: mailto:razavi.mst@gmail.com + icon: fas fa-envelope From 326ce80b1093a1204fe2f219b8534b9ea408f390 Mon Sep 17 00:00:00 2001 From: Vahid Zehtab <33608325+vahidzee@users.noreply.github.com> Date: Sun, 9 Jan 2022 15:42:52 +0330 Subject: [PATCH 31/39] Fix: metadata --- .../matadata.yml | 58 ++++++++++--------- 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/matadata.yml b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/matadata.yml index 656c09ed..b9d1949f 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/matadata.yml +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/matadata.yml @@ -1,35 +1,39 @@ title: Reinforcement Learning - Part 2 header: - title: Reinforcement Learning - Part 2 - description: Q-learning, Active RL, Epsilon greedy strategy, Approximate Q-Learning + title: Reinforcement Learning - Part 2 + description: Q-learning, Active RL, Epsilon greedy strategy, Approximate Q-Learning authors: - label: - position: top - kind: people - content: - - name: Karaneh Keypour - role: Author - contact: - - link: https://github.com/karanehk - icon: fab fa-github - - link: mailto:keypoor.karaneh@gmail.com - icon: fas fa-envelope + label: + position: top + kind: people + content: + - name: Karaneh Keypour + role: Author + contact: + - link: https://github.com/karanehk + icon: fab fa-github + - link: mailto:keypoor.karaneh@gmail.com + icon: fas fa-envelope - - name: Fatemeh Asgari - role: Author - contact: - - link: https://github.com/fatemeh-asgari - icon: fab fa-github - - link: mailto:f.asgari2001@gmail.com - icon: fas fa-envelope + - name: Fatemeh Asgari + role: Author + contact: + - link: https://github.com/fatemeh-asgari + icon: fab fa-github + - link: mailto:f.asgari2001@gmail.com + icon: fas fa-envelope - - name: Maryam Sadat Razavi Taheri - role: Author - contact: - - link: https://github.com/msrazavi - icon: fab fa-github - - link: mailto:razavi.mst@gmail.com - icon: fas fa-envelope + - name: Maryam Sadat Razavi Taheri + role: Author + contact: + - link: https://github.com/msrazavi + icon: fab fa-github + - link: mailto:razavi.mst@gmail.com + icon: fas fa-envelope + +comments: + label: false + kind: comments From 42b80e2c8f68aff53630f45e878fa1ab46556de2 Mon Sep 17 00:00:00 2001 From: Vahid Zehtab <33608325+vahidzee@users.noreply.github.com> Date: Sun, 9 Jan 2022 15:46:56 +0330 Subject: [PATCH 32/39] Fix: metadata linkage --- notebooks/index.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/notebooks/index.yml b/notebooks/index.yml index f0721afe..b330f8b3 100644 --- a/notebooks/index.yml +++ b/notebooks/index.yml @@ -56,4 +56,5 @@ notebooks: - notebook: notebooks/18_reinforcement_learning/ kind: S2021, LN, Notebook - md: notebooks/22_reinforcement_learning_from_q_value_till_the_end/ + metadata: notebooks/22_reinforcement_learning_from_q_value_till_the_end/metadata.yml kind: F2021, LN From 44beb683567168ab80934c11f7745c8facf69c75 Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 15:54:02 +0330 Subject: [PATCH 33/39] Update index.md --- .../index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md index dd5f28a3..016333d1 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md @@ -42,7 +42,7 @@ Q-learning is a **sample-based** q-value iteration method and in it, you Learn $ $$Q(s,a) \leftarrow (1 - \alpha)Q(s,a) + \alpha(sample)$$ - $$\rightarrow Q^{new}(s_t,a_t) \leftarrow \underbrace{Q(s_t,a_t)}_ {\text{old value}} + \underbrace{\alpha}_ {\text{learning rate}} . \overbrace{(\underbrace{\underbrace{r_t}_ {\text{reward}} + \underbrace{\gamma}_ {\text{discount factor}} . \underbrace{\max_aQ(s_{t+1},a)}_ {\text{estimate of optimal future value}}}_ {\text{new value (temporal difference target)}} - \underbrace{Q(s_t,a_t)}_ {\text{old value}})}^\text{temporal difference}$$ + Q-values From 7891e8c30d1d0147a2247cf6ce25059463653a8d Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 16:17:56 +0330 Subject: [PATCH 34/39] Update index.md --- .../index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md index 016333d1..b1ea497c 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md @@ -42,7 +42,7 @@ Q-learning is a **sample-based** q-value iteration method and in it, you Learn $ $$Q(s,a) \leftarrow (1 - \alpha)Q(s,a) + \alpha(sample)$$ - + $$\rightarrow Q^{new}(s_t,a_t) \leftarrow \underbrace{Q(s_t,a_t)}_\text{old value} + \underbrace{\alpha}_\text{learning rate} . \overbrace{(\underbrace{\underbrace{r_t}_\text{reward} + \underbrace{\gamma}_\text{discount factor} . \underbrace{\max_aQ(s_{t+1},a)}_\text{estimate of optimal future value}}_\text{new value (temporal difference target)} - \underbrace{Q(s_t,a_t)}_\text{old value})}^\text{temporal difference}$$ Q-values From 4162848656d9c5abaa76ef1ebedae3b473878f91 Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 16:23:20 +0330 Subject: [PATCH 35/39] Update index.md --- .../index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md index b1ea497c..5f1b3067 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md @@ -42,7 +42,7 @@ Q-learning is a **sample-based** q-value iteration method and in it, you Learn $ $$Q(s,a) \leftarrow (1 - \alpha)Q(s,a) + \alpha(sample)$$ - $$\rightarrow Q^{new}(s_t,a_t) \leftarrow \underbrace{Q(s_t,a_t)}_\text{old value} + \underbrace{\alpha}_\text{learning rate} . \overbrace{(\underbrace{\underbrace{r_t}_\text{reward} + \underbrace{\gamma}_\text{discount factor} . \underbrace{\max_aQ(s_{t+1},a)}_\text{estimate of optimal future value}}_\text{new value (temporal difference target)} - \underbrace{Q(s_t,a_t)}_\text{old value})}^\text{temporal difference}$$ + $$\rightarrow Q^{new}(s_t,a_t) \leftarrow \underbrace{Q(s_t,a_t)}\_\text{old value} + \underbrace{\alpha}\_\text{learning rate} . \overbrace{(\underbrace{\underbrace{r_t}\_\text{reward} + \underbrace{\gamma}\_\text{discount factor} . \underbrace{\max_aQ(s_{t+1},a)}\_\text{estimate of optimal future value}}\_\text{new value (temporal difference target)} - \underbrace{Q(s_t,a_t)}\_\text{old value})}^\text{temporal difference}$$ Q-values From 2261a8713b793f8c0ebebf7ac9958c4fa02e8b4a Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sun, 9 Jan 2022 16:45:32 +0330 Subject: [PATCH 36/39] Update index.md --- .../index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md index 5f1b3067..18c14d83 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md @@ -125,6 +125,6 @@ To read more about reinforcement learning, Q-learning, active and passive RL and - [Reinforcement Learning slides, CE-417, Sharif Uni of Technology.](http://ce.sharif.edu/courses/99-00/1/ce417-2/resources/root/Slides/PDF/Session%2025_26.pdf) - [Towardsdatascience](http://Towardsdatascience.com) - [Wikipedia](http://wikipedia.com) -- [freecodecamp](http://Freecodecamp.org) +- [Freecodecamp](http://Freecodecamp.org) - [Core-Robotics](http://core-robotics.gatech.edu) - [GeeksforGeeks](https://www.geeksforgeeks.org) From 10dda756dfa205a8234b2891379a05979465ade3 Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Fri, 28 Jan 2022 08:48:10 +0330 Subject: [PATCH 37/39] Update index.md --- .../index.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md index 18c14d83..30dc35a2 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md @@ -19,7 +19,7 @@ You’ve probably seen how a dog trainer gives a trait to the dogs after they complete a task successfully. That trait is a reward to the brain, and says “Well done! You are going in the right direction.” So after that, the brain tries to do that again in order to get more rewards. This way the dogs will learn and train themselves. This is sort of what happens in Reinforcement Learning(RL). -Reinforcement learning (RL) is an area of machine learning concerned with how intelligent agents should take actions in an environment in order to maximize the reward by taking a series of actions in response to a dynamic environment. It is the science of making optimal decisions using experiences. +Reinforcement learning (RL) is an area of machine learning concerned with how intelligent agents should take actions in an environment to maximize the reward by taking a series of actions in response to a dynamic environment. It is the science of making optimal decisions using experiences.

RL Types of Algorithms

@@ -28,7 +28,7 @@ Q-learning is a model-free reinforcement learning algorithm.

Q-Learning

-Q-learning is a model-free reinforcement learning algorithm to learn the value of an action in a particular state. It is a **values-based** learning algorithm. Value based algorithms update the value function based on an equation. +Q-learning is a model-free reinforcement learning algorithm to learn the value of an action in a particular state. It is a **values-based** learning algorithm. Values-based algorithms update the value function based on an equation. Q-learning is an **off-policy** learner, which means it learns the value of the optimal policy independently of the agent’s actions. In other words, it converges to optimal policy eventually even if you are acting sub-optimally. Q-learning is a **sample-based** q-value iteration method and in it, you Learn $Q(s,a)$ values as you go: @@ -53,7 +53,7 @@ In active RL, an agent needs to decide what to do as there’s no fixed policy t

Real life example

-Say you go to the same restaurant every day. You are basically exploiting. But on the other hand, if you search for new restaurant every time before going to any one of them, then it’s exploration. Exploration is very important for the search of future rewards which might be higher than the near rewards. +Say you go to the same restaurant every day. You are basically exploiting. But on the other hand, if you search for a new restaurant every time before going to any one of them, then it’s exploration. Exploration is very important for the search for future rewards which might be higher than the near rewards. Exploration vs. Exploitation @@ -69,26 +69,26 @@ So we’ll use a modified Q-update: $$Q(s,a) \leftarrow \alpha R(s,a,s^{\prime}) + \gamma \max_{a^{\prime}} f(Q(s^{\prime},a^{\prime}),N(s^{\prime},a^{\prime}))$$ -in above equation k is fixed. Q is the optimistic utility which is given to f as v. and n is the number of times we visited s' after doing action a' starting from s. which means when the n is low we get to try those actions more often. +in the above equation, k is fixed. Q is the optimistic utility which is given to f as v. and n is the number of times we visited s' after doing action a' starting from s. which means when the n is low we get to try those actions more often.

Regret

-Even though most of the RL algorithms we discussed reach optimal policy, they still make mistakes along the way. Regret is a measure of the total mistake cost, the difference between rewards, including and optimal rewards. +Even though most of the RL algorithms we discussed reach optimal policy, they still make mistakes along the way. Regret is a measure of the total mistake cost, the difference between rewards, and optimal rewards. Minimizing regret goes beyond learning to be optimal so it requires optimally learning to be optimal!

Approximate Q-Learning

-Basic Q-learning keeps a table of all Q-values but in real world situations, there are too many states to visit and hold their Q-values. Instead, we can use function approximation, which simply means using any sort of representation for the Q-function other than a lookup table. The representation is viewed as approximate because it might not be the case that the true utility function or Q-function can be represented in the chosen form. +Basic Q-learning keeps a table of all Q-values but in real-world situations, there are too many states to visit and hold their Q-values. Instead, we can use function approximation, which simply means using any sort of representation for the Q-function other than a lookup table. The representation is viewed as approximate because it might not be the case that the true utility function or Q-function can be represented in the chosen form.

Feature-based representation

-One way of using this is to use a feature-based representation in which we describe a state using a vector of features. In this method, we respresent a **linear** combination of these features and try to learn wis so that the Q function is near to the main Q-value. +One way of using this is to use a feature-based representation in which we describe a state using a vector of features. In this method, we represent a **linear** combination of these features and try to learn $\omega_i$s so that the Q function is near to the main Q-value. $$V(s) = \omega_1f_1(s) + \omega_2f_2(s) + ... + \omega_nf_n(s)$$ $$Q(s,a) = \omega_1f_1(s,a) + \omega_2f_2(s,a) + ... + \omega_nf_n(s,a)$$ -To learn and update wis, we have a method which is similar to the method we had for updating Q-values in basic Q-learning : +To learn and update $\omega_i$s, we have a method that is similar to the method we had for updating Q-values in basic Q-learning: $$\omega_m \leftarrow \omega_m + \alpha [r + \gamma \max_aQ(s^{\prime},a^{\prime}) - Q(s,a)] f_m(s,a)$$ @@ -97,17 +97,17 @@ $$\omega_m \leftarrow \omega_m + \alpha [r + \gamma \max_aQ(s^{\prime},a^{\prime Q-Learning is a basic form of Reinforcement Learning which uses Q-values (action values) to iteratively improve the behavior of the learning agent. -Q-values are defined for states and actions. $Q(s, a)$ is an estimation of how good is it to take the action a at the state s. This estimation of $Q(s, a)$ will be iteratively computed using the temporal difference update. +Q-values are defined for states and actions. $Q(s, a)$ is an estimation of how good is it to take the action $a$ at the state $s$. This estimation of $Q(s, a)$ will be iteratively computed using the temporal difference update. -This update rule to estimate the value of Q is applied at every time step of the agents interaction with the environment. +This update rule to estimate the value of Q is applied at every time step of the agent's interaction with the environment. -At every step of transition, the agent from a state takes an action, observes a reward from the environment, and then transits to another state. If at any point of time the agent ends up in one of the terminating states that means there are no further transition possible. This is said to be the completion of an episode. +At every step of the transition, the agent from a state takes an action, observes a reward from the environment, and then transits to another state. If at any point in time the agent ends up in one of the terminating states that means there is no further transition possible. This is said to be the completion of an episode. $\epsilon$-greedy policy is a very simple policy of choosing actions using the current Q-value estimations. Active learning is a special case of machine learning in which a learning algorithm can interactively query a user (or some other information source) to label new data points with the desired outputs. -Unlike passive learning which just executes the policy and learns from experience, here we are using active reinforcement learning in which the agent learns the optimal policy by taking actions in the world and finding out what is happenning, and then improving the policy iteratively. +Unlike passive learning which just executes the policy and learns from experience, here we are using active reinforcement learning in which the agent learns the optimal policy by taking actions in the world finding out what is happening, and then improving the policy iteratively.

Further Reading

From e4bd63519715f38fc40823ed2c9bc1c89f09089b Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sat, 29 Jan 2022 00:18:01 +0330 Subject: [PATCH 38/39] Update index.md --- .../index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md index 30dc35a2..f35bdadb 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md @@ -17,7 +17,7 @@

Introduction

-You’ve probably seen how a dog trainer gives a trait to the dogs after they complete a task successfully. That trait is a reward to the brain, and says “Well done! You are going in the right direction.” So after that, the brain tries to do that again in order to get more rewards. This way the dogs will learn and train themselves. +You’ve probably seen how a dog trainer gives a trait to the dogs after they complete a task successfully. That trait is a reward to the brain, and says “Well done! You are going in the right direction.” So after that, the brain tries to do that again to get more rewards. This way the dogs will learn and train themselves. This is sort of what happens in Reinforcement Learning(RL). Reinforcement learning (RL) is an area of machine learning concerned with how intelligent agents should take actions in an environment to maximize the reward by taking a series of actions in response to a dynamic environment. It is the science of making optimal decisions using experiences. From c0dd8a02fe61dddcbe7ffabb0d91421f08d64fa8 Mon Sep 17 00:00:00 2001 From: Maryam Sadat Razavi Taheri Date: Sat, 29 Jan 2022 00:26:40 +0330 Subject: [PATCH 39/39] Update index.md --- .../index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md index f35bdadb..3af04ba4 100644 --- a/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md +++ b/notebooks/22_reinforcement_learning_from_q_value_till_the_end/index.md @@ -53,7 +53,7 @@ In active RL, an agent needs to decide what to do as there’s no fixed policy t

Real life example

-Say you go to the same restaurant every day. You are basically exploiting. But on the other hand, if you search for a new restaurant every time before going to any one of them, then it’s exploration. Exploration is very important for the search for future rewards which might be higher than the near rewards. +Say you go to the same restaurant every day. You are exploiting. But on the other hand, if you search for a new restaurant every time before going to any one of them, then it’s exploration. Exploration is very important for the search for future rewards which might be higher than the near rewards. Exploration vs. Exploitation @@ -82,7 +82,7 @@ Basic Q-learning keeps a table of all Q-values but in real-world situations, the

Feature-based representation

-One way of using this is to use a feature-based representation in which we describe a state using a vector of features. In this method, we represent a **linear** combination of these features and try to learn $\omega_i$s so that the Q function is near to the main Q-value. +One way of using this is to use a feature-based representation in which we describe a state using a vector of features. In this method, we represent a **linear** combination of these features and try to learn $\omega_i$s so that the Q function is near the main Q-value. $$V(s) = \omega_1f_1(s) + \omega_2f_2(s) + ... + \omega_nf_n(s)$$