[Reinforcement Learning] Model-Free Prediction

上篇文章介绍了 Model-based 的通用方法——动态规划,本文内容介绍 Model-Free 情况下 Prediction 问题,即 "Estimate the value function of an unknown MDP"。

  • Model-based:MDP已知,即转移矩阵和奖赏函数均已知
  • Model-Free:MDP未知

蒙特卡洛学习

蒙特卡洛方法(Monte-Carlo Methods,简称MC)也叫做蒙特卡洛模拟,是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。其实本质就是,通过尽可能随机的行为产生后验,然后通过后验来表征目标系统。

如下图为使用蒙特卡罗方法估算 π 值,放置30000个随机点后,π 的估算值与真实值相差0.07%。

![](https://img2018.cnblogs.com/blog/764050/201810/764050-20181029093127465-413339540.gif)

在Model-Free的情况下,MC在强化学习中的应用就是获取价值函数,其特点如下:

  • MC 可以从完整的 episodes 中学习(no bootstrapping)
  • MC 以均值来计算价值,即 value = mean(return)
  • MC 只能适用于 episodic MDPs(有限MDPs)

First-Visit 蒙特卡洛策略评估

First-Visit Monte-Carlo Policy Evaluation:

评估状态 s 在给定策略 π 下的价值函数 vπ(s) 时,在一次 episode 中,状态 s 在时刻 t 第一次被访问时,计数器 N(s)N(s)+1,累计价值 S(s)S(s)+Gt
当整个过程结束后,状态 s 的价值 V(s)=S(s)N(s)
根据大数定理(Law of Large Numbers):V(s)vπ(s) as N(s)

Every-Visit 蒙特卡洛策略评估

Every-Visit Monte-Carlo Policy Evaluation:

评估状态 s 在给定策略 π 下的价值函数 vπ(s) 时,在一次 episode 中,状态 s 在时刻 t 每次被访问时,计数器 N(s)N(s)+1,累计价值 S(s)S(s)+Gt
当整个过程结束后,状态 s 的价值 V(s)=S(s)N(s)
根据大数定理(Law of Large Numbers):V(s)vπ(s) as N(s)

Incremental Monte-Carlo

我们先看下增量式求平均:
The mean μ1,μ2,... of a sequence x1,x2,... can be computed incrementally:

(1)μk=1kj=1kxj(2)=1k(xk+j=1k1xj)(3)=1k(xk+(k1)μk1)(4)=μk1+1k(xkμk1)

根据上式我们可以得出增量式进行MC更新的公式:
每次 episode 结束后,增量式更新 V(s),对于每个状态 St,其对应的 return 为 Gt

N(St)N(St)+1V(St)V(St)+1N(St)(GtV(St))

在非静态问题中,更新公式形式可以改为如下:

V(St)V(St)+α(GtV(St))

时序差分学习

时序差分方法(Temporal-Difference Methods,简称TD)特点:

  • TD 可以通过 bootstrapping 从非完整的 episodes 中学习
  • TD updates a guess towards a guess

TD(λ)

下图为 TD target 在不同 n 下的示意图:

![](https://img2018.cnblogs.com/blog/764050/201810/764050-20181029093159343-566652060.png)
从上图可以看出,当 n 达到终止时,即为一个episode,此时对应的方法为MC,因此从这个角度看,MC属于TD的特殊情况。

n-step Return

n-step returns 可以表示如下:
n=1 时:Gt(1)=Rt+1+γV(St+1)
n=2 时:Gt(2)=Rt+1+γRt+2+γ2V(St+2)
...
n= 时:Gt=Rt+1+γRt+2+...+γT1RT)
因此,n-step return Gt(n)=Rt+1+γRt+2+...+γnV(St+n))

n-step TD 更新公式:

V(St)V(St)+α(Gt(n)V(St))

Forward View of TD(λ)

我们能否把所有的 n-step return 组合起来?答案肯定是可以,组合后的return被称为是λ-return,其中λ是为了组合不同的n-step returns引入的权重因子。

![](https://img2018.cnblogs.com/blog/764050/201810/764050-20181029093208269-1684521958.png)

λ-return:

Gtλ=(1λ)n=1λn1Gt(n)

Forward-view TD(λ):

V(St)V(St)+α(GtλV(St))

TD(λ)对应的权重公式为 (1λ)λn1,分布图如下所示:

![](https://img2018.cnblogs.com/blog/764050/201810/764050-20181029093216246-346895182.png)

Forward-view TD(λ)的特点:

  • Update value function towards the λ-return
  • Forward-view looks into the future to compute Gtλ
  • Like MC, can only be computed from complete episodes

Backward View TD(λ)

  • Forward view provides theory
  • Backward view provides mechanism
  • Update online, every step, from incomplete sequences

带有资格迹的TD(λ):

δt=Rt+1+γV(St+1V(St))V(s)V(s)+αδtEt(s)

其中δt为TD-error,Et(s)为资格迹。

资格迹(Eligibility Traces)

资格迹本质就是对于频率高的,最近的状态赋予更高的信任(credit)/ 权重。

下图是对资格迹的一个描述:

![](https://img2018.cnblogs.com/blog/764050/201810/764050-20181029093235016-1687119842.png)

关于TD(λ)有一个结论:

The sum of offline updates is identical for forward-view and backward-view TD(λ).

这一块的内容不再深入介绍了,感兴趣的可以看Sutton的书和David的教程。

蒙特卡洛学习 vs. 时序差分学习

MC与TD异同点

相同点:都是从经验中在线的学习给定策略 π 的价值函数 vπ

不同点:

  • Incremental every-visit Monte-Carlo:朝着真实的 return Gt 更新 V(St)

V(St)V(St)+α(GtV(St))

  • Simplest temporal-difference learning algorithm: TD(0)
    • 朝着已预估的 return Rt+1+γV(St+1) 更新 V(St)

    V(St)V(St)+α(Rt+1+γV(St+1)V(St))

    • Rt+1+γV(St+1) 称为是 TD target
    • Rt+1+γV(St+1)V(St) 称为是 TD error

下图以 Drive Home 举例说明两者的不同,MC 只能在回家后才能改变对回家时间的预判,而 TD 在每一步中不断根据实际情况来调整自己的预判。

![](https://img2018.cnblogs.com/blog/764050/201810/764050-20181029093245013-91806930.png)

MC与TD优缺点

学习方式

  • TD 可以在知道最后结果之前学习(如上图举例)
    • TD can learn online after every step
    • MC must wait until end of episode before return is known
  • TD 可以在不存在最后结果的情况下学习(比如无限/连续MDPs)
    • TD can learn from incomplete sequences
    • MC can only learn from complete sequences
    • TD works in continuing (non-terminating) environments
    • MC only works for episodic (terminating) environments

方差与偏差

  • MC has high variance, zero bias(高方差,零偏差)
    • Good convergence properties
    • Not very sensitive to initial value
    • Very simple to understand and use
  • TD has low variance, some bias(低方差,存在一定偏差)
    • Usually more efficient than MC
    • TD(0) converges to vπ(s)
    • More sensitive to initial value

关于 MC 和 TD 中方差和偏差问题的解释:

  • MC 更新基于真实的 return Gt=Rt+1+γRt+2+...+γT1RTvπ(St) 的无偏估计。
  • 真实的TD target Rt+1+γvπ(St+1) 也是 vπ(St) 的无偏估计。但是实际更新时用的 TD target Rt+1+γV(St+1)vπ(St) 的有偏估计。
  • TD target 具有更低的偏差:
    • Return 每次模拟依赖于许多的随机动作、转移概率以及回报
    • TD target 每次只依赖一次随机动作、转移概率以及回报

马尔可夫性

  • TD exploits Markov property
    • Usually more efficient in Markov environments
  • MC does not exploit Markov property
    • Usually more effective in non-Markov environments

DP、MC以及TD(0)

首先我们从 backup tree 上去直观地认识三者的不同。

  • DP backup tree:Full-Width step(完整的step)
![](https://img2018.cnblogs.com/blog/764050/201810/764050-20181029093304855-974791132.png)
  • MC backup tree:完整的episode
![](https://img2018.cnblogs.com/blog/764050/201810/764050-20181029093311204-2050415371.png)
  • TD(0) backup tree:单个step
![](https://img2018.cnblogs.com/blog/764050/201810/764050-20181029093318221-565424251.png)

Bootstrapping vs. Sampling

Bootstrapping:基于已预测的值进行更新

  • DP bootstraps
  • MC does not bootstrap
  • TD bootstraps

Sampling:基于采样的期望来更新

  • DP does not sample(model-based methods don't need sample)
  • MC samples(model-free methods need sample)
  • TD samples(model-free methods need sample)

下图从宏观的视角显示了 RL 的几种基本方法的区别:

![](https://img2018.cnblogs.com/blog/764050/201810/764050-20181029093326561-204428328.png)

Reference

[1] 维基百科-蒙特卡洛方法
[2] Reinforcement Learning: An Introduction, Richard S. Sutton and Andrew G. Barto, 2018
[3] David Silver's Homepage

posted @   Poll的笔记  阅读(2012)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示