- MC方法可直接从episodes的经验中学习
- MC是无模型(model-free)的算法: 不了解MDP转化/奖励
- MC从完整的episodes中学习
- MC使用最简单的想法: 状态价值=平均回报
- 注意: MC只能应用于episodes的MDPs中
- 所有的episodes必须终止
-
目标:在给定策略$\pi$下,从一系列episodes经验中学习价值函数$v_\pi$ $$ S_1,A_1,R_2,\cdots,S_k\sim\pi $$
-
回顾:回报是带折扣的总奖励: $$ G_t=R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^{T-1}R_T $$
-
回顾:价值函数是回报的期望: $$ v(s)=\mathbb{E}_\pi[G_t|S_t=s] $$
-
蒙特卡洛策略评估使用每个状态的平均回报来代替回报的期望
- 目标:评估状态s
- 每个episode中,状态s第一次出现时,进行如下操作一次
- 增加计数个数$N(s)\leftarrow N(s)+1$
- 增加回报总和$S(s)\leftarrow S(s)+G_t$
- 价值有平均回报估算$V(s)=\frac{S(s)}{N(s)}$
- 根据大数定律:$V(s)\rightarrow V_\pi(s)as\quad N(s)\rightarrow \infty$
- 目标:评估状态s
- 每个episode中,状态s每出现一次时,进行如下操作一次
- 增加计数个数$N(s)\leftarrow N(s)+1$
- 增加回报总和$S(s)\leftarrow S(s)+G_t$
- 价值有平均回报估算$V(s)=\frac{S(s)}{N(s)}$
- 根据大数定律:$V(s)\rightarrow V_\pi(s)as\quad N(s)\rightarrow \infty$
- 序列$x_1,x_2,\cdots的平均值\mu_1,\mu_2,\cdots可以增量计算$ $$ \begin{align} \mu_k&=\frac{1}{k}\sum_{j=1}^kx_j \ &=\frac{1}{k}\bigg(x_k+\sum_{j=1}^{k-1}x_j\bigg) \ &=\frac{1}{k}\bigg(x_k+(k-1)\mu_{k-1}\bigg) \ & =\mu_{k-1}+\frac{1}{k}(x_k-\mu_{k-1}) \end{align} $$
-
在episode
$S_1,A_1,R_2,\cdots R_T后逐步更新V(s)$ -
对于每个具有回报G_t的状态$S_t$ $$ N(S_t)\leftarrow N(S_t)+1 \ V(S_t)\leftarrow V(S_t)+\frac{1}{N(S_t)}(G_t-V(S_t)) $$
-
在非平稳问题中,跟踪连续平均值(即忘掉旧episodes)可能很有用 $$ V(S_t)\leftarrow V(S_t)+\alpha(G_t-V(S_t)) $$
- TD方法可直接从经验中学习
- TD是无模型的:不了解MDP转化/奖励
- TD通过自举(bootstrapping)从不完整的episodes中学习
- 猜测episode的结果,同时持续更新这个猜测
-
表格表示(tabular)+ on-policy,做的是“策略评估”
$\text{TD}(0)收敛到真值v_\pi(满足常见步长/遍历条件)。这时是准确的$ -
线性函数逼近+on-policy
会收敛到投影贝尔曼固定点$w^*$:也就是你特征所能表达的函数类李,对$v_\pi$最佳近似。这可以理解为“通常不错,但未必等于真值/最优”
-
off-policy+函数逼近+自举(致命三角)
纯TD可能发散,不保证“不错”也不保证收敛;需要用GTD/Emphatic-TD、Retrace/V-trace等稳定化方法。
-
目标:根据策略$\pi$得到的经验学习价值函数$v_\pi$
-
增量式every-visit蒙特卡洛
- 朝着实际回报
$G_t$ 的方向更新价值V(s) $$ V(S_t)\leftarrow V(S_t)+\alpha(G_t-V(S_t)) $$
- 朝着实际回报
-
最简单的时序差分算法:TD(0)
-
朝着估计回报$R_{t+1}+\gamma V(S_{t+1})$的方向更新$V(S_t)$
$$ V(S_t)\leftarrow V(S_t)+\alpha(R_{t+1}+\gamma V(S_{t+1})-V(S_t)) $$ -
$R_{t+1}+\gamma V(S_{t+1})$ 被称为TD target -
$\delta_t=R_{t+1}+\gamma V(S_{t+1})-V(S_t)$ 被称为TD error
-
-
TD可以在知道结果之前学习
- TD可以在每一步之后在线学习
- MC必须等到episode结束才能知道回报
-
TD可以在没有最终结果的情况下学习
- TD可以从不完整的序列中学习
- MC只能从完整序列中学习
- TD在连续(非终止)环境中工作
- MC仅适用于episode(终止)环境
-
MC具有高方差,零偏差
- 良好的收敛性
- 对初始值不太敏感
- 很容易理解和适用
-
TD低方差,但存在偏差
- 通常比MC更高效
- TD(0)收敛到$v_\pi(S_t)$
- 对初始值更敏感
已知:
- 状态空间:A-E,end为终止状态
- 动作空间:左右
- 奖励:右侧终止状态即时奖励为1,其他均为0
- 状态转移:100%按照行为进行转移,直至进入终止状态
- 衰减系数:1
- 给定策略:随机选择左、右两个行为
求解:
- 当前策略下的价值函数
这里图片说明了$\alpha$会影响MC和TD算法的收敛速度。另外$\alpha$也不可以设置的太大,太大会导致模型震荡无法收敛。
-
MC和TD收敛:$V(s)\rightarrow V_\pi(s)$当$\text{experience}\rightarrow \infty$
-
但对于有限经验,比如K条经验,如何计算呢? $$ \begin{array}{} s_1^1 & a_1^1 & r_2^1 & \cdots &s_{T_1}^1 \ \vdots & \vdots & \vdots & \ddots & \vdots \ s_1^K & a_1^K & r_2^K & \cdots &s_{T_1}^K \ \end{array} $$
-
重复采用$\text{episode k}\in [1,K]$
-
对episode 应用MC和TD(0)
-
两种状态A,B;没有折扣;8个episode的经验,求V(A),V(B)?
A,0,B,0
B,1
B,1
B,1
B,1
B,1
B,1
B,1
B,0
-
应用MC算法,由于需要完整的Episode,因此仅第一个Episode可以用来计算A的状态值,很明显是0;同时B的价值是$\frac{6}{8}$
$v(A)=r_A+r_B=0$ -
应用TD算法,TD算法试图利用现有的Episode经验构建一个MDP
-
TD则得出$V(A)=V(B)=\frac{6}{8}$
- TD利用了马尔可夫性
- 通常在马尔可夫环境中效率较高
- MC没有利用马尔可夫性
- 通常在非马尔可夫环境中更有效
- Bootstrapping:更新涉及估计
- MC不自举
- DP自举
- TD自举
- Sampling:更新采样
- MC采样
- DP不采样
- TD采样
-
考虑n步回报,其中$n=1,2,\infty$: $$ \begin{align} & n=1 &(TD) & \quad G_1^{(1)}=R_{t+1}+\gamma V(S_{t+1}) \ & n=2 & \quad & \quad G_t^{(2)}=R_{t+1}+\gamma R_{t+2}+\gamma^2 V(S_{t+2}) \ & \vdots & \quad & \quad\vdots \ & n=\infty & (MC) & \quad G_{t}^{(\infty)}=R_{t+1}+\gamma R_{t+2}+\cdots + \gamma^{T-1}R_T \end{align} $$
-
定义n step回报为: $$ G_t^{(n)}=R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^{n-1}R_{t+n}+\gamma^nV(S_{t+n}) $$
-
n step时时序差分算法: $$ V(S_t)\leftarrow V(S_t)+\alpha\bigg(G_{t}^{n}-V(S_t)\bigg) $$
-
$G_t^\lambda整合了所以的\text{n step}回报G_t^{(n)}$ -
当$\lambda=0时$是TD(0),当$\lambda=1时$是MC
-
加和时,使用权重$(1-\lambda)\lambda^{n-1}$ $$ G_t^\lambda=(1-\lambda)\sum_{n=1}^{\infty}\lambda^{n-1}G_t^{(n)} \这种写法\lambda需要取极限来说明它等于MC \\对于回合式任务,\lambda回报通常写成截断版: \G_t^{(\lambda)}=(1-\lambda)\sum_{n=1}^{T-t-1}\lambda^{n-1}G_t^{(n)}+\lambda^{T-t-1}G_t^{(T-t)} \T:该\text{episode}终止的时间索引 \t:当前需要更新的那一步的时间索引 $$
-
得到$TD(\lambda)$ $$ V(S_t)\leftarrow V(S_t)+\alpha(G_t^\lambda-V(S_t)) $$


