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. CentOS7开发环境搭建

    BIOS开启VT支持 查询笔记本进入BIOS的按键,启动BIOS的虚拟化设置 假设安装360卫士,那么请永久关闭Intel-VT核晶防护引擎 CentOS DNS配置 Linux 下设置DNS位置有3 ...

  2. [iOS]一些第三方库

    BHInfiniteScrollView 地址 https://github.com/qylibohao/BHInfiniteScrollView 功能 图片轮播 TZImagePickerContr ...

  3. QueryRunner cannot be resolved to a type:关于包不能正常导入的问题

    在操作一个功能模块的时候,出现一个问题: 我原则是按着项目指导一步一步走的,但却出现, QueryRunner cannot be resolved to a type,这个问题应该属于Xxx can ...

  4. GoogleTest初探(0)

    单元测试是一种保证代码质量的手段.程序员可以通过写单元测试来保证自己写的代码的功能正确. 本人所在公司使用GoogleTest测试框架来进行单元测试.虽然现在在公司的工程代码中写单元测试已经驾轻就熟, ...

  5. php的mysqli_connect函数显示 No such file or directory错误以及localhost换成127.0.0.1执行成功

    Centos7环境-php7-MariaDB5.5.60 (新安装的php7,执行php -m 显示有mysqli模块,php.ini没有改其它) 测试代码为: <?php //~ echo d ...

  6. 如何发布自己模块到NPM

    创建项目 npm init name: (my-npm) version: (1.0.0) description: 0.0.1 entry point: (index.js) test comman ...

  7. 树莓3B+_中文支持安装输入法

    参考: https://www.cnblogs.com/collisionzhang/p/7413349.html 莓派默认是采用英文字库的,而且系统里没有预装中文字库,所以即使你在locale中改成 ...

  8. python学习_条件判断语句_if

    #条件判断语句(if)#语法:if条件表达式:语句# 代码块#执行流程:if语句在执行时,会先对条件表达式进行求值判断#如果为True,则执行if后面的语句#如果为False,则不执行#默认情况下,i ...

  9. linux查看文件命令tail的使用

    一.介绍 linux tail命令用途是依照要求将指定的文件的最后部分输出到终端中,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,tail会自己主动刷新,确保你看到最新的档案内 ...

  10. Python学习:13.Python正则表达式

    一.正则表达式简介 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. 就其本质 ...