Skip to content

Commit 7325933

Browse files
author
chenjunwen
committed
update
1 parent d4a2644 commit 7325933

11 files changed

+108
-80
lines changed
File renamed without changes.

notes/intro_note_2.md renamed to notes/intro_note_02.md

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
- 然而,我们并不知道实际上的q是什么,只能估计$Q_t(a)\approx q_*(a)$。
1515
- 在每个时间节点上,如果总是选择对应的估计Q最大的a,这被称为**greedy**
1616
- **$\epsilon$-greedy***:$1-\epsilon$的概率选择Q最大的a,*$\epsilon$的概率选择其他a。
17-
- 估计$Q_t(a) = \frac{在时刻t之前,所有采用动作a获得的奖励之和}{在时刻t之前,采用动作a的次数} = \frac{\sum^{t-1}_{i=1}R_i\cdot\mathbf{1}_{A_i=a}}{\sum^{t-1}_{i=1}\mathbf{1}_{A_i=a}}$,被称为sample-average。
17+
- 估计$Q_t(a) = \frac{在时刻t之前,所有采用动作a获得的奖励之和}{在时刻t之前,采用动作a的次数}$ $= \frac{\sum^{t-1}_{i=1}R_i\cdot\mathbf{1}_{A_i=a}}{\sum^{t-1}_{i=1}\mathbf{1}_{A_i=a}}$,被称为sample-average。
1818

1919
## 10-armed Testbed
2020

@@ -24,37 +24,42 @@
2424
- 可以规定每次实验做1000次选择,称为一个run。
2525
- 一共跑了2000个独立的run。
2626
- 实验结果(**$\epsilon$-greedy**的优越性):
27-
- ![](https://github.com/applenob/rl_learn/raw/master/res/average_reward.png)
27+
28+
![average_reward](../res/average_reward.png)
2829

2930
### 增量式的估计
3031

3132
- 上面的sample-average即:$Q_n = \frac{R_1+R_2+...+R_{n-1}}{n-1}$
3233
- 改写成增量式的形式:$Q_{n+1} = Q_n + \frac{1}{n}[R_n-Q_n]$
3334
- 即:新估计 = 老估计 + 步长 × [奖励 - 老估计]
34-
- ![](../res/bandit_algo.png)
35+
36+
![bandit_algo](../res/bandit_algo.png)
3537

3638
### Optimistic Initial Values
3739

3840
- 设置初始的$Q_1(a)$为一些较大的值。
3941
- 这样会鼓励explore。
4042
- 对于nonstationary的问题不适用。
41-
- ![](../res/optimistic.png)
43+
44+
![optimistic](../res/optimistic.png)
4245

4346
## Upper-Confidence-Bound Action Selection(UCB)
4447

4548
- $A_t = \underset{a}{argmax}[Q_t(a)+c\sqrt{\frac{log\;t}{N_t(a)}}]$
4649
- 其中,$N_t(a)$代表动作a在t之前出现的次数,根号项衡量动作a的不确定性,如果某个动作已经使用了很多次,则倾向使用使用次数少的,这样达到explore的效果。
47-
- ![](https://github.com/applenob/rl_learn/raw/master/res/ucb.png)
50+
51+
![ucb](../res/ucb.png)
4852

4953
## Gradient Bandit Algorithms
5054

5155
- 使用一个数值表示对某个动作的**偏好**:$H_t(a)$
5256
- $Pr\{A_t=a\}=\frac{e^{H_t(a)}}{\sum_{b=1}^k{e^{H_t(b)}}}=\pi_t(a)$
5357
- 更新规则(不必细究,学到policy gradient自然明白):
54-
- $H_{t+1}(A_t) = H_t(A_t) + \alpha(R_t-\overline R_t)(1-\pi _t(A_t))$
55-
- $\forall a \neq A_t$
56-
- ![](https://github.com/applenob/rl_learn/raw/master/res/gradient_bandit.png)
58+
- $H_{t+1}(A_t) = H_t(A_t) + \alpha(R_t-\overline R_t)(1-\pi _t(A_t))$
59+
- $\forall a \neq A_t$
60+
61+
![gradient_bandit](../res/gradient_bandit.png)
5762

5863
## 各种方法对比
5964

60-
- ![](https://github.com/applenob/rl_learn/raw/master/res/bandit_methods.png)
65+
![bandit_methods](../res/bandit_methods.png)

notes/intro_note_3.md renamed to notes/intro_note_03.md

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@
5656

5757
## 价值函数
5858

59-
- 关于策略$\pi$的state-value函数:$v_{\pi}(s) = \mathbb{E}_{\pi}[G_t|S_t=s]=\mathbb{E}_{\pi}[\sum_{k=0}^{\infty}\gamma^kR_{t+k+1}|S_t=s]$
59+
- 关于策略$\pi$的state-value函数:$v_{\pi}(s) = \mathbb{E}_{\pi}[G_t|S_t=s]$ $=\mathbb{E}_{\pi}[\sum_{k=0}^{\infty}\gamma^kR_{t+k+1}|S_t=s]$
6060
- 即,**在使用策略$\pi$的前提下,衡量处于某个state有多好**
61-
- 关于策略$\pi$的action-value函数:$q_{\pi}(a,s) = \mathbb{E}_{\pi}[G_t|S_t=s,A_t=a] = \mathbb{E}_{\pi}[\sum_{k=0}^{\infty}\gamma^kR_{t+k+1}|S_t=s,A_t=a]$
61+
- 关于策略$\pi$的action-value函数:$q_{\pi}(a,s) = \mathbb{E}_{\pi}[G_t|S_t=s,A_t=a]$ $= \mathbb{E}_{\pi}[\sum_{k=0}^{\infty}\gamma^kR_{t+k+1}|S_t=s,A_t=a]$
6262
- 即,在使用策略$\pi$的前提下,衡量处于某个state下,执行某个action有多好。
6363

6464
## Bellman Euqation
@@ -68,28 +68,31 @@
6868
- 1.方括号中是根据后继状态的价值重新估计的价值函数,再在动作空间、后继状态空间和动作空间用相应的概率做加权求和。
6969
- 2.**表达的是某个状态的价值和其后继状态的价值之间的关系。**
7070
- **backup**:是强化学习方法的核心,以时序意义上的回退,用下一个时刻的值去评估当前时刻的值。
71-
- **Bellman Expectation Euqation for $q_{\pi}$**:$q_{\pi}(s,a) = \sum_{s'}p(s',r|s,a)[r+\gamma \sum_{a'}q(s',a')]$
72-
- ![](https://github.com/applenob/rl_learn/raw/master/res/backup.png)
71+
- **Bellman Expectation Euqation for** $q_{\pi}$:$q_{\pi}(s,a) = \sum_{s'}p(s',r|s,a)[r+\gamma \sum_{a'}q(s',a')]$
72+
73+
![backup](../res/backup.png)
7374

7475
推导:
7576

7677
$v_\pi(s) = \mathbb{E}_\pi[G_t \mid S_t = s]$
7778

78-
$= \mathbb{E}_\pi[R_{t+1} + \gamma G_{t+1} \mid S_t = s]$
79+
$= \mathbb{E}_\pi [R_{t+1} + \gamma G_{t+1} \mid S_t = s]$
7980

8081
$= \sum_a \pi(a \mid s) \sum_{s', r} p(s', r \mid s, a) [r + \gamma v_\pi(s')].$
8182

8283
$q_{\pi}(s,a) = \mathbb{E}_\pi[G_t \mid S_t = s, A_t = a]$
8384

84-
$= \mathbb{E}_\pi[R_{t+1} + \gamma G_{t+1} \mid S_t = s, A_t = a]$
85+
$= \mathbb{E}_\pi [R_{t+1} + \gamma G_{t+1} \mid S_t = s, A_t = a]$
8586

8687
$= \sum_{s',r}p(s',r|s,a)[r+\gamma \sum_{a'}q(s',a')]$
8788

8889
参考资料:https://joshgreaves.com/reinforcement-learning/understanding-rl-the-bellman-equations/
8990

9091
## 最优化价值函数
92+
9193
- $v_*(s) = \underset{\pi}{max}v_{\pi}(s)$
9294
- $q_*(s,a) = \underset{\pi}{max}q_{\pi}(s,a)$
9395
- **Bellman Optimality Euqation for $v_*(s)$**:$v_*(s)=\underset{a\in A(s)}{max}\sum_{s',r}p(s',r|s,a)[r+\gamma v_*(s')]$
9496
- **Bellman Optimality Euqation for $q_*(s,a)$**:$q_*(s,a)=\sum_{s',r}p(s',r|s,a)[r+\gamma \underset{a'}{max}q_*(s', a')]$
95-
- ![](https://github.com/applenob/rl_learn/raw/master/res/backup_opt.png)
97+
98+
![backup_opt](../res/backup_opt.png)

notes/intro_note_04.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# 4. Dynamic Programming
2+
3+
## DP方法简介
4+
5+
- 由于其**大量的计算损耗**,已经**不实用**,但**理论上非常重要**
6+
- 本书后续的所有方法可以看做想要取得和DP类似的效果;只不过是减少了计算或者假设没有完美的环境模型。
7+
- 假设解决的问题是有限的MDP,即给定动作a,状态s,和奖励r,可以通过$p(s',r|s,a)$描述动态变化。
8+
9+
## Policy Evaluation
10+
11+
- **评估一个策略的好坏。**
12+
- 策略评估,**计算某个policy对应的价值函数**,也被称为prediction problem。
13+
- 更新方法:使用上一章讲的**Bellman Expectation Euqation for** $v_{\pi}$:$v_{\pi}(s) = \sum_a\pi(a|s)\sum_{s',r}p(s',r|s,a)[r+\gamma v_{\pi}(s')]\;\;\forall s \in S$
14+
15+
![iterative_policy_evaluation](../res/iterative_policy_evaluation.png)
16+
17+
## Policy Improvement
18+
19+
在当前的策略和相应的价值函数的基础上,使用价值函数贪婪地更新当前策略的过程。
20+
21+
policy improvement theorem:对所有的$s \in S$,有$q_{\pi}(s, \pi'(s)) \geq v_{\pi}(s)$,则$v_{\pi'}\geq v_{\pi}(s)$,即策略$\pi'$优于策略$\pi$。
22+
23+
greedy policy:$\pi'(s)=\underset{a}{argmax}q_{\pi}(s,a)=\underset{a}{argmax}\sum_{s', r}p(s', r|s,a)[r+\gamma v_{\pi}(s')]$
24+
25+
## Policy Iteration
26+
27+
![policy_iteration_2](../res/policy_iteration_2.png)
28+
29+
其中,$E$代表策略的evaluation,$I$代表策略的improvement。简单地说,Policy Iteration就是不断地评估策略然后改进策略。
30+
31+
![policy_iteration](../res/policy_iteration.png)
32+
33+
## Value Iteration
34+
35+
Policy Iteration的缺点:每一次迭代都要评估策略,而每一次策略评估本身都是一个迭代过程。
36+
37+
$v_{k+1}(s)=\underset{a}{max} E[R_{t+1}+\gamma v_k(S_{t+1})|S_t=s, A_t=a]$
38+
39+
$=\underset{a}{max}\sum_{s',r}p(s',r|s,a)[r+\gamma v_k(s')]$
40+
41+
实际上就是**Bellman Optimality Euqation for** $v_*(s)$。
42+
43+
![value_iteration](../res/value_iteration.png)
44+
45+
Value Iteration简单地说就是每次评估价值的时候直接用可能的用最优价值函数更新价值函数(这样的每一步不涉及策略本身);在确定已经获得比较准确的价值评估之后,再一次性确定策略。

notes/intro_note_5.md renamed to notes/intro_note_05.md

Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ $V(s)\leftarrow average(Return(s))$
2828

2929
## 蒙特卡洛控制
3030

31-
- **控制(control)**的目的是找到最优策略。
31+
- **控制**(control)的目的是找到最优策略。
3232
- ![mc_policy_iter](../res/mc_policy_iter.png)
3333
- 其中,$E$代表策略的evaluation,$I$代表策略的improvement。
3434

@@ -45,8 +45,8 @@ $V(s)\leftarrow average(Return(s))$
4545

4646
## on-policy vs off-policy
4747

48-
- on-policy只有一套policy,更简单,是首选。
49-
- off-policy使用两套policy,更复杂、更难收敛;但也更通用、更强大。
48+
- on-policy只有**一套policy**,更简单,是首选。
49+
- off-policy使用**两套policy**,更复杂、更难收敛;但也更通用、更强大。
5050
- on-policy和off-policy本质依然是Exploit vs Explore的权衡。
5151

5252
## on-policy
@@ -55,32 +55,42 @@ $V(s)\leftarrow average(Return(s))$
5555

5656
## off-policy
5757

58-
- 所有的MC控制方法都面临一个**困境**:它们都想找到一个最优的策略,但却必须采用非最优的策略去尽可能多地探索(explore)数据。
58+
- 所有的MC控制方法都面临一个**困境**:它们都想找到一个最优的策略,但却**必须采用非最优的策略去尽可能多地探索**(explore)数据。
5959
- 直接使用**两套策略**:采样用的policy称为`behavior policy`,最终的目标policy:`target policy`。这就是off-policy。
60-
- 假设目标策略是$\pi$,行为策略是$b$,那么对于所有的$\pi(a|s)>0$必然有$b(a|s)>0$,这称为“覆盖”(coverage)。一个常见的例子是:行为策略使用价值函数的greedy policy,而行为策略使用ε-greedy policy。
60+
- 假设目标策略是$\pi$,行为策略是$b$,那么对于所有的$\pi(a|s)>0$必然有$b(a|s)>0$,这称为“覆盖”(coverage)。一个常见的例子是:行为策略使用价值函数的greedy policy,而目标策略使用ε-greedy policy。
6161

6262
## 重要性采样(importance sampling)
6363

64-
- 几乎所有的off-policy都使用**重要性采样(importance sampling)**
65-
- 为什么要使用重要性采样?我们希望在使用目标策略$\pi$的情况下用均值估计价值的期望,但我们获得的是在使用行为策略$b$的情况下的均值,也就是:$\mathbb{E}[G_t \mid S_t =s] = v_b(s)$。这二者是有差距的。因此我们希望使用重要性采样去纠正。
66-
- 给定初始状态$S_t$,后续的状态-动作轨迹在使用策略$\pi$的情况下的概率为:
67-
$$Pr\{At,S_{t+1}, A_{t+1}, ... S_T \mid S_t, A_{t:T −1} \sim \pi\}=\prod_{k=t}^{T-1}\pi(A_k\mid S_k)p(S_{k+1}\mid S_k, A_k)$$
68-
- 引入**重要性采样比例(the importancesampling ratio)**
69-
$$\rho_{t:T −1}=\frac{\prod_{k=t}^{T-1}\pi(A_k\mid S_k)p(S_{k+1}\mid S_k, A_k)}{\prod_{k=t}^{T-1}b(A_k\mid S_k)p(S_{k+1}\mid S_k, A_k)}=\prod_{k=t}^{T-1}\frac{\pi(A_k\mid S_k)}{b(A_k\mid S_k)}$$
64+
几乎所有的off-policy都使用**重要性采样(importance sampling)**
65+
66+
为什么要使用重要性采样?我们希望在使用目标策略$\pi$的情况下用均值估计价值的期望,但我们获得的是在使用行为策略$b$的情况下的均值,也就是:$\mathbb{E}[G_t \mid S_t =s] = v_b(s)$。这二者是有差距的。因此我们希望使用重要性采样去纠正。
67+
68+
给定初始状态$S_t$,后续的状态-动作轨迹在使用策略$\pi$的情况下的概率为:
69+
$Pr\{At,S_{t+1}, A_{t+1}, ... S_T \mid S_t, A_{t:T −1} \sim \pi\}$ $=\prod_{k=t}^{T-1}\pi(A_k\mid S_k)p(S_{k+1}\mid S_k, A_k)$
70+
71+
引入**重要性采样比例(the importancesampling ratio)**
72+
$\rho_{t:T −1}=\frac{\prod_{k=t}^{T-1}\pi(A_k\mid S_k)p(S_{k+1}\mid S_k, A_k)}{\prod_{k=t}^{T-1}b(A_k\mid S_k)p(S_{k+1}\mid S_k, A_k)}$ $=\prod_{k=t}^{T-1}\frac{\pi(A_k\mid S_k)}{b(A_k\mid S_k)}$
7073
上面这个式子正好巧妙地把MDP中未知的状态转移概率约掉。
71-
- 于是return的期望又可以得到校正:$\mathbb{E}[\rho_{t:T−1}G_t \mid S_t =s] = v_{\pi}(s)$
72-
- odinary importance sampling:
74+
75+
于是return的期望又可以得到校正:$\mathbb{E}[\rho_{t:T−1}G_t \mid S_t =s] = v_{\pi}(s)$
76+
77+
odinary importance sampling:
7378
$$V(s) = \frac{\sum_{t\in J(s)} \rho_{t:T (t)-1}Gt}{\mid J(s)\mid} $$
74-
- weighted importance sampling:
79+
80+
weighted importance sampling:
7581
$$V(s) = \frac{\sum_{t\in J(s)} \rho_{t:T (t)-1}Gt}{\sum_{t\in J(s)} \rho_{t:T (t)-1}} $$
76-
- odinary importance sampling vs. weighted importance sampling:
77-
- odinary importance sampling:无偏差,但方差没有保证。
78-
- weighted importance sampling:有偏差,方差有上限。
79-
- 评估:
80-
- ![](https://github.com/applenob/rl_learn/raw/master/res/off_policy_mc_prediction.png)
81-
- 上面的评估使用了采样权重增量式的方法。
8282

83-
控制:
83+
odinary importance sampling vs. weighted importance sampling:
84+
85+
- odinary importance sampling:无偏差,但方差没有保证。
86+
- weighted importance sampling:有偏差,方差有上限。
87+
88+
评估:
89+
90+
![off_policy_mc_prediction](../res/off_policy_mc_prediction.png)
8491

85-
![](https://github.com/applenob/rl_learn/raw/master/res/off_policy_mc_control.png)
92+
上面的评估使用了采样权重增量式的方法。
93+
94+
控制:
8695

96+
![off_policy_mc_control](../res/off_policy_mc_control.png)
File renamed without changes.

notes/intro_note_7.md renamed to notes/intro_note_07.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
- 一步TD对应的回报:$G_{t:t+1} = R_{t+1} + \gamma V_t(S_{t+1})$
1212
- n-step的回报:$G_{t:t+n} = R_{t+1} + \gamma R_{t+2}+...+\gamma^{n-1}R_{t+n}+\gamma^nV_{t+n+1}(S_{t+n})$
1313

14-
![](../res/n-step-pred.png)
14+
![n-step-pred](../res/n-step-pred.png)
1515

16-
![](../res/n-step-est.png)
16+
![n-step-est](../res/n-step-est.png)
1717

1818
## n-step Sarsa
1919

notes/intro_note_08.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# 8. Planning and Learning with Tabular Methods
2+
3+
## Tabular Dyna-Q
4+
5+
![tab_dyna_q](../res/tab_dyna_q.png)
File renamed without changes.

notes/intro_note_4.md

Lines changed: 0 additions & 35 deletions
This file was deleted.

0 commit comments

Comments
 (0)