简析Monte Carlo与TD算法的相关问题
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算法的相关问题的更多相关文章
- Monte Carlo与TD算法
RL 博客:http://blog.sciencenet.cn/home.php?mod=space&uid=3189881&do=blog&view=me&from= ...
- DiskGenius注册算法简析
初次接触DiskGenius已经成为遥远的记忆,那个时候还只有DOS版本.后来到Windows版,用它来处理过几个找回丢失分区的案例,方便实用.到现在它的功能越来越强大,成为喜好启动技术和桌面支持人员 ...
- Monte Carlo方法简介(转载)
Monte Carlo方法简介(转载) 今天向大家介绍一下我现在主要做的这个东东. Monte Carlo方法又称为随机抽样技巧或统计实验方法,属于计算数学的一个分支,它是在上世纪四十年代 ...
- 增强学习(四) ----- 蒙特卡罗方法(Monte Carlo Methods)
1. 蒙特卡罗方法的基本思想 蒙特卡罗方法又叫统计模拟方法,它使用随机数(或伪随机数)来解决计算的问题,是一类重要的数值计算方法.该方法的名字来源于世界著名的赌城蒙特卡罗,而蒙特卡罗方法正是以概率为基 ...
- 强化学习读书笔记 - 05 - 蒙特卡洛方法(Monte Carlo Methods)
强化学习读书笔记 - 05 - 蒙特卡洛方法(Monte Carlo Methods) 学习笔记: Reinforcement Learning: An Introduction, Richard S ...
- Monte Carlo Method(蒙特·卡罗方法)
0-故事: 蒙特卡罗方法是计算模拟的基础,其名字来源于世界著名的赌城——摩纳哥的蒙特卡罗. 蒙特卡罗一词来源于意大利语,是为了纪念王子摩纳哥查理三世.蒙特卡罗(MonteCarlo)虽然是个赌城,但很 ...
- 蒙特卡罗(Monte Carlo)方法简介
蒙特卡罗(Monte Carlo)方法,也称为计算机随机模拟方法,是一种基于"随机数"的计算方法. 二 解决问题的基本思路 Monte Carlo方法的基本思想很早以前就被人们所发 ...
- Monte carlo
转载 http://blog.sciencenet.cn/blog-324394-292355.html 蒙特卡罗(Monte Carlo)方法,也称为计算机随机模拟方法,是一种基于"随机数 ...
- 蒙特卡罗方法、蒙特卡洛树搜索(Monte Carlo Tree Search,MCTS)初探
1. 蒙特卡罗方法(Monte Carlo method) 0x1:从布丰投针实验说起 - 只要实验次数够多,我就能直到上帝的意图 18世纪,布丰提出以下问题:设我们有一个以平行且等距木纹铺成的地板( ...
随机推荐
- list 去重复元素
public static List removeDuplicate(List list){ List listTemp = new ArrayList(); for(int i=0;i<lis ...
- Vue中,给当前元素添加类名移除兄弟元素类名的方法
在Vue中,给当前元素添加类名移除兄弟元素类名的方法 今天在项目中需要做一个效果,点击对应的li改变当前的color,其他的li取消颜色,在jQuery中这很容易,由于之前已经引入了jQuery,所以 ...
- ztree案例笔记:用户不规范操作导致添加不了节点的问题
我使用ztree开发了简码"万能助手",经过一段时间的观察,发现有个别用户不看教程就开始操作,总能给我折腾出一些让人哭笑不得的问题. 比如,把某个根栏目里的节点全删除,然后发现添加 ...
- CentOS6安装各种大数据软件 第五章:Kafka集群的配置
相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...
- jquery里遍历普通数组和多维数组的方法及实例
jquery里遍历数组用的是$.each,下面站长给大家几个具体的实例: 实例1.遍历一个普通的一维数组: 1 2 3 4 5 6 7 8 <script> //声明数据有下面两种方式 / ...
- Js错误: obj.parents is not a function
代码: (1) <div class="ViewMore" id="viewmore${i}" onclick="CLICK(thi ...
- 记一次学习PHP中的错误
今天学习PHP时,回想起一段代码 <?php> $i = true; $o = true; $p = false; if($i or $o and $p){ echo '输出为'.'tru ...
- 微信小程序 request请求封装
在utils文件夹新建文件utils.js,封装代码如下: 小程序升级后内部不自带Promise方法,需外部引入Promise方法 var sendRequest = function (url, ...
- Go语言 异常panic和恢复recover用法
Go语言 异常panic和恢复recover用法 背景:Go语言追求简洁优雅,所以,Go语言不支持传统的 try…catch…finally 这种异常,因为Go语言的设计者们认为,将异常与控制结构混在 ...
- 重学Veriliog(2)——高级编程语句
1.判断 1.1 if ... else ... 有优先级 在组合逻辑电路中,需要避免产生Latch(避免结构不完整) Latch容易引起竞争冒险,同时静态时序分析工具也不好分析穿过Latch的路径? ...