5.1

因为 $20,21$ 这两个状态下玩家会停牌, 而此时赢庄家的概率会很高, 因此价值较大. 而小于 $20$ 时, 要牌可能会导致爆牌, 因此较低.

5.2

我觉得不会. 应当都会收敛到真实值.

5.3

不会画, 懒得画.

5.4

只需修改 $\mathrm{average}$ 函数即可. 定义一个变量为 $pre\text -avg$ 储存之前的平均数, 然后定义 $\mathrm{average}$ 函数为

1
2
3
def average(G, pre-avg):
n = len(Returns)
return avg + (G - avg) / n

即可.

5.5

首次访问是 $10$, 每次访问是 $5.5$.

5.6

给定起始状态与起始动作 $S_t, A_t$ , 后续的状态-动作轨迹 $S_{t+1},A_{t+1},A_{t+1},\dots,S_T$ 在策略 $\pi$ 下的概率是

$$ \Pr\{S_{t+1},A_{t+1},A_{t+1},\dots,S_T\mid S_t, A_t,A_{t+1\colon T-1}\sim\pi\}=p(S_{t+1}\mid S_t,A_t)\prod_{{k=t+1}}^{T-1}\pi(A_k\mid S_k)p(S_{k+1}\mid S_k,A_{k}) $$

因此重要度采样比为

$$ \rho_{t+1\colon T(t)-1}=\prod_{{k=t+1}}^{T-1}\frac{\pi(A_k\mid S_k)}{b(A_k\mid S_k)} $$

即将 $k$ 的起始向后移一位即可,

$$ Q(s,a)\dot{=}\frac{\sum_{t\in\mathcal{T}(s)}\rho_{t+1\colon T(t)-1}G_t}{\sum_{t\in\mathcal{T}(s)}\rho_{t+1\colon T(t)-1}} $$

5.7

由于一开始加权重要度采样就是有偏的, 因此误差会小幅度上升.

5.8

由于这题的特殊性, 我们可以很简单的知道, 在每一幕中, 首次访问型 $s$ 状态的价值估计 (这里恰好等于回报) $G_0$ 的一半要小于每次访问型 $s$ 状态的价值估计 $G_0'$, 更准确些其实是有等式 $G_0+1=2G_0'$ . 因此就有

$$ \infty=\mathbb{E}[X^2]/2<\mathbb{E}[{X'}^2] $$

这只能是 $\mathbb E[{X'}^2]=\infty$ .

5.9

类似练习 5.4 .

5.10

显然有

$$ V_{n+1}=\frac{V_n\sum_{k=1}^{n-1}W_k+W_{n}G_n}{\sum_{k=1}^nW_k}=V_n+\frac{W_n}{C_n}(G_n-V_n) $$

5.11

算法只是将 $\pi(A_t\mid S_t)$ 换成了 $1$ . 事实上本来就有 $\pi(A_t\mid S_t)=1$ , 这样的特性由上一步的 “如果” 保证.

5.12

只做了第一个赛道.

同时没有判定边界, 因为一个一个手动输太麻烦了.

就是懒

赛道问题

5.13

$R_{t+1}$ 只与 $A_t, S_t$ 有关, 因此可以推出. 即 $$ \mathbb{E}[\rho_{t\colon T-1}R_{t+1}]=\mathbb{E}\left[R_{t+1}\prod_{k=t}^{T-1}\frac{\pi(A_k\mid S_k)}{b(A_k\mid S_k)}\right]=\mathbb{E}\left[\frac{\pi(A_t\mid S_t)}{b(A_t\mid S_t)}R_{t+1}\right]=\mathbb{E}[\rho_{t\colon t}R_{t+1}] $$

5.14

判断是否 $0$ , 如果是, 伪代码第 13 行后面加的项中的 $G$ 乘上一个 $\gamma^{T}$ , 如果不是, 乘上 $(1-\gamma)\gamma^{T-t-1}$ .