[Reinforcement Learning] Model-Free Control

上篇总结了 Model-Free Predict 问题及方法,本文内容介绍 Model-Free Control 方法,即 "Optimise the value function of an unknown MDP"。

在这里说明下,Model-Free Predict/Control 不仅适用于 Model-Free 的情况,其同样适用于 MDP 已知的问题:

  • MDP model is unknown, but experience can be sampled.
  • MDP model is known, but is too big to use, except by samples.

在正式介绍 Model-Free Control 方法之前,我们先介绍下 On-policy Learning 及 Off-policy Learning。

On-policy Learning vs. Off-policy Learning

On-policy Learning:

  • "Learn on the job"
  • Learn about policy π from experience sampled from π(即采样的策略与学习的策略一致)

Off-policy Learning:

  • "Look over someone's shoulder"
  • Learn about policy π from experience sampled from μ(即采样的策略与学习的策略不一致)

On-Policy Monte-Carlo Learning

Generalized Policy Iteration

具体的 Control 方法,在《动态规划》一文中我们提到了 Model-based 下的广义策略迭代 GPI 框架,那在 Model-Free 情况下是否同样适用呢?
如下图为 Model-based 下的广义策略迭代 GPI 框架,主要分两部分:策略评估及基于 Greedy 策略的策略提升。

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

Model-Free 策略评估

在《Model-Free Predict》中我们分别介绍了两种 Model-Free 的策略评估方法:MC 和 TD。我们先讨论使用 MC 情况下的 Model-Free 策略评估。
如上图GPI框架所示:

  • 基于 V(s) 的贪婪策略提升需要 MDP 已知:

π(s)=argmaxaA(Rsa+PssaV(s))

  • 基于 Q(s,a) 的贪婪策略提升不需要 MDP 已知,即 Model-Free:

π(s)=argmaxaAQ(s,a)

因此 Model-Free 下需要对 Q(s,a) 策略评估,整个GPI策略迭代也要基于 Q(s,a)

Model-Free 策略提升

确定了策略评估的对象,那接下来要考虑的就是如何基于策略评估的结果 Q(s,a) 进行策略提升。
由于 Model-Free 的策略评估基于对经验的 samples(即评估的 q(s,a) 存在 bias),因此我们在这里不采用纯粹的 greedy 策略,防止因为策略评估的偏差导致整个策略迭代进入局部最优,而是采用具有 explore 功能的 ϵ-greedy 算法:

π(a|s)={ϵm+1ϵ,if a=argmaxaAQ(s,a)ϵm,otherwise

因此,我们确定了 Model-Free 下的 Monto-Carlo Control:

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

GLIE

先直接贴下David的课件,GLIE 介绍如下:

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

对于 ϵ-greedy 算法而言,如果 ϵ 随着迭代次数逐步减为0,那么 ϵ-greedy 是 GLIE,即:

ϵk=1k

GLIE Monto-Carlo Control

GLIE Monto-Carlo Control:

  • 对于 episode 中的每个状态 St 和动作 At

N(St,At)N(St,At)+1Q(St,At)Q(St,At)+1N(St,At)(GtQ(St,At))

  • 基于新的动作价值函数提升策略:

ϵ1kπϵ-greedy(Q)

定理:GLIE Monto-Carlo Control 收敛到最优的动作价值函数,即:Q(s,a)q(s,a)

On-Policy Temporal-Difference Learning

Sarsa

我们之前总结过 TD 相对 MC 的优势:

  • 低方差
  • Online
  • 非完整序列

那么一个很自然的想法就是在整个控制闭环中用 TD 代替 MC:

  • 使用 TD 来计算 Q(S,A)
  • 仍然使用 ϵ-greedy 策略提升
  • 每一个 step 进行更新

通过上述改变就使得 On-Policy 的蒙特卡洛方法变成了著名的 Sarsa。

  • 更新动作价值函数
![](https://img2018.cnblogs.com/blog/764050/201810/764050-20181030094221840-942626866.png)
- Control
![](https://img2018.cnblogs.com/blog/764050/201810/764050-20181030094230851-277293106.png)

Sarsa算法的伪代码如下:

Sarsa(λ)

n-step Sarsa returns 可以表示如下:
n=1 时:qt(1)=Rt+1+γQ(St+1)
n=2 时:qt(2)=Rt+1+γRt+2+γ2Q(St+2)
...
n= 时:qt=Rt+1+γRt+2+...+γT1RT
因此,n-step return qt(n)=Rt+1+γRt+2+...+γnQ(St+n)

n-step Sarsa 更新公式:

Q(St,At)Q(St,At)+α(qt(n)Q(St,At))

具体的 Sarsa(λ) 算法伪代码如下:

其中 E(s,a) 为资格迹。

下图为 Sarsa(λ) 用于 Gridworld 例子的示意图:

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

Off-Policy Learning

Off-Policy Learning 的特点是评估目标策略 π(a|s) 来计算 vπ(s) 或者 qπ(s,a),但是跟随行为策略 {S1,A1,R2,...,ST}μ(a|s)

Off-Policy Learning 有什么意义?

  • Learn from observing humans or other agents
  • Re-use experience generated from old policies π1,π2,...,πt1
  • Learn about optimal policy while following exploratory policy
  • Learn about multiple policies while following one policy

重要性采样

重要性采样的目的是:Estimate the expectation of a different distribution。

(1)EXP[f(X)]=P(X)f(X)(2)=Q(X)P(X)Q(X)f(X)(3)=EXQ[P(X)Q(X)f(X)]

Off-Policy MC 重要性采样

使用策略 π 产生的 return 来评估 μ

Gtπ/μ=π(At|St)μ(At|St)π(At+1|St+1)μ(At+1|St+1)...π(AT|ST)μ(AT|ST)Gt

朝着正确的 return 方向去更新价值:

V(St)V(St)+α(Gtπ/μV(St))

需要注意两点:

  • Cannot use if μ is zero when π is non-zero
  • 重要性采样会显著性地提升方差

Off-Policy TD 重要性采样

TD 是单步的,所以使用策略 π 产生的 TD targets 来评估 μ

V(St)V(St)+α(π(At|St)μ(At|St)(Rt+1+γV(St+1))V(St))

  • 方差比MC版本的重要性采样低很多

Q-Learning

前面分别介绍了对价值函数 V(s) 进行 off-policy 学习,现在我们讨论如何对动作价值函数 Q(s,a) 进行 off-policy 学习:

  • 不需要重要性采样
  • 使用行为策略选出下一步的动作:At+1μ(·|St)
  • 但是仍需要考虑另一个后继动作:Aπ(·|St)
  • 朝着另一个后继动作的价值更新 Q(St,At)

Q(St,At)Q(St,At)+α(Rt+1+γQ(St+1,A)Q(St,At))

讨论完对动作价值函数的学习,我们接着看如何通过 Q-Learning 进行 Control:

  • 行为策略和目标策略均改进
  • 目标策略 π 以greedy方式改进:

π(St)=argmaxaQ(St+1,a)

  • 行为策略 μϵ-greedy 方式改进
  • Q-Learning target:

(4)Rt+1+γQ(St+1,A)(5)=Rt+1+γQ(St+1,argmaxaQ(St+1,a))(6)=Rt+1+maxaγQ(St+1,a)

Q-Learning 的 backup tree 如下所示:

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

关于 Q-Learning 的结论:

Q-learning control converges to the optimal action-value function, Q(s,a)q(s,a)

Q-Learning 算法具体的伪代码如下:

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

对比 Sarsa 与 Q-Learning 可以发现两个最重要的区别:

  • TD target 公式不同
  • Q-Learning 中下一步的动作从行为策略中选出,而不是目标策略

DP vs. TD

两者的区别见下表:

![](https://img2018.cnblogs.com/blog/764050/201810/764050-20181030094333833-1951913901.png) ![](https://img2018.cnblogs.com/blog/764050/201810/764050-20181030094341855-1641614291.png)

Reference

[1] Reinforcement Learning: An Introduction, Richard S. Sutton and Andrew G. Barto, 2018
[2] David Silver's Homepage

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