Monte Carlo算法是否能够做到一步更新,即在线学习?

答案显然是不能,如果可以的话,TD算法还有何存在的意义?MC算法必须要等到episode结束后才可以进行值估计的主要原因在于对Return(或是估计目标)的定义与TD算法不同。强化学习中所估计的状态动作对价值实质上就是在某一策略下,以这个状态动作对为起点产生的样本轨道的奖励之和(也可是带折扣系数的和)的期望。假设有一条样本轨道如下所示:

$$ (S_1, A_1) \ \Rightarrow\ (S_2, A_2) \ \Rightarrow\ (S_3, A_3) \ \Rightarrow \ (S_4, A_4) \ \Rightarrow \ (S_5, A_5) \ \Rightarrow \ S_T $$

假设在这条样本轨道下每一个状态动作对所对应的奖励分别为$R_1,\ R_2,\ R_3,\ R_4,\ R_5,\ R_6$,那么可以得到在这条样本轨道下状态动作对$(S_1, A_1)$所对应的价值:

$$ \begin{align} v_{S_1, A_1} & = R_1 + R_2 + R_3 + R_4 + R_5 + R_6\\ &= \sum_{i = 1}^{i=6} R_i \end{align}$$

那么同样的,对于状态动作对$(S_2, A_2)$来说也可以求得一个在该样本轨道下的对应价值:$v_{S_2, A_2} = \sum_{i = 2}^{i = 6} R_i$,那么以此类推,样本轨道上的第k个状态动作对所对应的价值应当为(T在这里代表Terminal,即为episode终点):

$$ v_{S_k, A_k} = \sum_{i = k}^{T} R_i $$

但这仅仅是在一个样本轨道下的价值计算,如果要估计在策略$\pi$下的状态动作对$(S_k, A_k)$的价值,最好的办法是计算在多条样本轨道下的该状态动作对的价值期望:$ E^{\pi}[V_{S_k, A_k}] $ ($V_{S_k, A_k}$为状态动作对$(S_k, A_k)$所对应的价值随机变量),那么如何估计价值期望呢?通常来说有两种办法,一种是直接计算N条样本轨道的价值均值,即为($v^i_{S_k, A_k}$表示在第i条样本轨道下状态动作对$(S_k, A_k)$的价值):

$$E^{\pi}[V_{S_k, A_k}] \approx \frac{\sum_{i}^{N} v^i_{S_k, A_k}}{N}$$

另一种方式就是利用Incremental Implementation(增量实现)的方式进行随机变量期望的估计,增量实现是一种迭代方式,即通过不断的迭代估计出随机变量$V_{S_k, A_k}$的期望,这一点在文章【Monte Carlo与TD算法的结合,n-step TD算法】中有详细的解释。这里直接给出迭代公式(这里使用$\widetilde{V}$表示价值期望的估计,$\alpha$为学习率):

$$ \widetilde{V}^n_{S_k, A_k} = \widetilde{V}^{n-1}_{S_k, A_k} + \alpha(v_{S_k, A_k} - \widetilde{V}^{n - 1}_{S_k, A_k}) $$

当迭代次数n无穷大时,我们可以认为$\widetilde{V}$与$E[V]$是等价的,这个迭代过程是一个无偏估计的过程。

让我们回到Monte Carlo方法上来,Monte Carlo中的Return与我们所定义的在某一样本轨道下的状态动作对价值是等价的,所以在计算样本轨道中每一个状态动作对价值时都是需要episode终点状态的奖励回报的,所以这也就说明了为什么Monte Carlo方法必须要等到episode结束后才可以进行值函数更新(离线学习)。

那么这又衍生出一个问题,为什么TD方法可以一步更新,在线学习?

我们首先搞清楚另一个问题,TD方法能不能离线学习呢?答案是一定可以的。需要明确的是,TD方法与Monte Carlo方法本质的区别并不在于离线学习还是在线学习,又或是增量实现还是均值实现。TD方法与MC方法的根本不同是估计目标的不同,可以这么说,MC方法所估计的就是如假包换的状态动作对价值(Return),而TD方法实际上估计的却是状态动作对价值的近似。依据在某一样本轨道下的状态动作对$(S_k, A_k)$价值$v_{S_k, A_k}$的计算方法,可以做一个简单的变换:

$$ \begin{align} v_{S_k, A_k} & = \sum_{i = k}^{T} R_i \\ &= R_k + \sum_{i = k + 1}^{T} R_i \\ & = R_k + v_{S_{k + 1}, A_{k + 1}}\end{align}$$

对在线学习来说,在第k步就应该计算出$v_{S_k, A_k}$,并带入到增量实现的公式中计算,但第k步已知的只有$R_k$,对于$v_{S_{k+1}, A_{k+1}}$是未知的,所以对目标$v_{S_k, A_k}$无偏估计是绝对无法实现的。那么想要实现在线学习,唯有替换估计目标。如何找到与$v_{S_{k+1}, A_{k+1}}$等价的或可替换的估计目标则是TD方法解决的主要问题。

可以假设对状态动作对$(S_k, A_k)$在策略$\pi$下的价值期望为:

$$\begin{align} E^{\pi}[v_{S_k, A_k}] &= E^{\pi}[R_k + v_{S_{k+1}, A_{k+1}}] \\& = E^{\pi}[R_k + E^{\pi}[v_{S_{k+1}, A_{k+1}}]]\end{align}$$

依据上面的式子,MC方法的估计目标可以等价为$R_k + E^{\pi}[v_{S_{k + 1}, A_{k + 1}}]$。假设在第k步进行增量实现的第n次迭代,那么我们就可以使用第n-1次迭代获得的$ \widetilde{V}^{n - 1}_{S_{k + 1}, A_{k + 1}} $近似替代$E^{\pi}[v_{S_{k + 1}, A_{k + 1}}]$。如此一来,在第k步可直接获得$R_k$与$ \widetilde{V}^{n - 1}_{S_{k + 1}, A_{k + 1}} $的值,没有必要等到episode结束后再进行值函数更新了,在线学习也就顺理成章了。我们把这种近似替代估计目标的方法叫做TD方法:

$$ \widetilde{V}^n_{S_k, A_k} = \widetilde{V}^{n-1}_{S_k, A_k} + \alpha(R_k + \widetilde{V}^{n - 1}_{S_{k + 1}, A_{k + 1}} - \widetilde{V}^{n - 1}_{S_k, A_k}) $$

简析Monte Carlo与TD算法的相关问题的更多相关文章

  1. Monte Carlo与TD算法

    RL 博客:http://blog.sciencenet.cn/home.php?mod=space&uid=3189881&do=blog&view=me&from= ...

  2. DiskGenius注册算法简析

    初次接触DiskGenius已经成为遥远的记忆,那个时候还只有DOS版本.后来到Windows版,用它来处理过几个找回丢失分区的案例,方便实用.到现在它的功能越来越强大,成为喜好启动技术和桌面支持人员 ...

  3. Monte Carlo方法简介(转载)

    Monte Carlo方法简介(转载)       今天向大家介绍一下我现在主要做的这个东东. Monte Carlo方法又称为随机抽样技巧或统计实验方法,属于计算数学的一个分支,它是在上世纪四十年代 ...

  4. 增强学习(四) ----- 蒙特卡罗方法(Monte Carlo Methods)

    1. 蒙特卡罗方法的基本思想 蒙特卡罗方法又叫统计模拟方法,它使用随机数(或伪随机数)来解决计算的问题,是一类重要的数值计算方法.该方法的名字来源于世界著名的赌城蒙特卡罗,而蒙特卡罗方法正是以概率为基 ...

  5. 强化学习读书笔记 - 05 - 蒙特卡洛方法(Monte Carlo Methods)

    强化学习读书笔记 - 05 - 蒙特卡洛方法(Monte Carlo Methods) 学习笔记: Reinforcement Learning: An Introduction, Richard S ...

  6. Monte Carlo Method(蒙特·卡罗方法)

    0-故事: 蒙特卡罗方法是计算模拟的基础,其名字来源于世界著名的赌城——摩纳哥的蒙特卡罗. 蒙特卡罗一词来源于意大利语,是为了纪念王子摩纳哥查理三世.蒙特卡罗(MonteCarlo)虽然是个赌城,但很 ...

  7. 蒙特卡罗(Monte Carlo)方法简介

    蒙特卡罗(Monte Carlo)方法,也称为计算机随机模拟方法,是一种基于"随机数"的计算方法. 二 解决问题的基本思路 Monte Carlo方法的基本思想很早以前就被人们所发 ...

  8. Monte carlo

    转载 http://blog.sciencenet.cn/blog-324394-292355.html 蒙特卡罗(Monte Carlo)方法,也称为计算机随机模拟方法,是一种基于"随机数 ...

  9. 蒙特卡罗方法、蒙特卡洛树搜索(Monte Carlo Tree Search,MCTS)初探

    1. 蒙特卡罗方法(Monte Carlo method) 0x1:从布丰投针实验说起 - 只要实验次数够多,我就能直到上帝的意图 18世纪,布丰提出以下问题:设我们有一个以平行且等距木纹铺成的地板( ...

随机推荐

  1. Linux 下让终端走代理的方法

    转载: https://blog.fazero.me/2015/09/15/%E8%AE%A9%E7%BB%88%E7%AB%AF%E8%B5%B0%E4%BB%A3%E7%90%86%E7%9A%8 ...

  2. java ssm 后台框架平台 项目源码 websocket 即时通讯 IM quartz springmvc

    官网 http://www.fhadmin.org/D 集成安全权限框架shiro  Shiro 是一个用 Java 语言实现的框架,通过一个简单易用的 API 提供身份验证和授权,更安全,更可靠E ...

  3. python3 datetime和time获取当前日期和时间

    import datetime import time # 获取当前时间, 其中中包含了year, month, hour, 需要import datetime today = datetime.da ...

  4. 【转】如何快速定位JVM中消耗CPU最多的线程?

    [转]如何快速定位JVM中消耗CPU最多的线程? https://mp.weixin.qq.com/s?__biz=MzIwMzg1ODcwMw==&mid=2247487802&id ...

  5. 课时17.WebStorm安装(理解)

    开发工具(工欲善其事,必先利其器) 为了让大家更快的融入到编程的世界中去,不被繁琐的英文单词所困扰,不用每天编写很多没有意义的重复代码,提升大家的开发效率,今后的课程中我们统一采用开发工具来编写网页 ...

  6. Jquery中select使用

    select获取当前选中的value $('#DDLDEP').change(function () { var depId = $(this).children('option:selected') ...

  7. centos6.9安装虚拟机kvm

    说明 以下所有操作都基于centos6.9 查看系统是否支持虚拟化 结果有vmx|svm才支持虚拟化 egrep '(vmx|svm)' --color=always /proc/cpuinfo 系统 ...

  8. 20190313-时间和日期-Time

    概述 在Python中,与时间处理相关的模块有:time.datetime以及calendar,Python中通常有这几种方式表示时间:时间戳.格式化的时间字符串.时间元组(struct_time 共 ...

  9. Oracle入门第二天(上)——基本查询SQL

    一.SQL概述 起源于标准不再赘述,主要分为DDL,DML,DCL 相关介绍,参考MySQL章节:http://www.cnblogs.com/jiangbei/p/6696202.html 二.基本 ...

  10. 20155209 实验三 敏捷开发与XP实践

    20155209 实验三 敏捷开发与XP实践 实验内容 1. XP基础 2. XP核心实践 3. 相关工具 提交点一: 在IDEA中使用工具(Code->Reformate Code)把下面代码 ...