简析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世纪,布丰提出以下问题:设我们有一个以平行且等距木纹铺成的地板( ...
随机推荐
- 怎样卸载wineQQ?
好久没实用ubuntu系统的wineqq了.今天用的时候,提示无法使用,要求官网又一次下载新版本号, 感觉挺麻烦的,准备卸载,半天卸载不了. 经过努力,终于还是卸载了. 卸载命令: sudo dpk ...
- Java Web 程序猿的职业进阶之路
啥也不说了,都在图里了.希望能够给大家的职业规划一些提示,尤其是写了几年程序,却越来越迷茫的同学.
- Oracle 11G 隐含参数“_controlfile_autobackup_delay”
RMAN设置控制文件自动备份,当发生数据库备份时,或建表空间,删除log文件等物理结构发生改变时,oracle会自动备份控制文件. Oracle 10g会立刻备份,Oracle 11g会有几分钟的延迟 ...
- node.js的http模块创建基本Web服务器
首先下载node.js模块.终端执行命令 npm i node -g 引入http核心模块 const http =require('http') 引入文件系统模块 const fs =require ...
- 前端基础-jQuery的事件的用法
阅读目录 常用事件 事件绑定 移除事件 页面载入 一.常用事件 1.鼠标事件之click事件 用交互操作中,最简单直接的操作就是点击操作.jQuery提供了两个方法一个是click方法用于监听用户单击 ...
- hadoop分布式安装及其集群配置笔记
各机器及角色信息: 共10台机器,hostname与ip地址映射在此不做赘述.此为模拟开发环境安装,所以不考虑将NameNode和SecondaryNameNode安装在同一台机器. 节点 角色 na ...
- IAR升级之后,编译stm32官方工程报错的解决办法
IAR升级之后,打开stm32官方例程,编译时提示如下错误: Error[Pe147]: declaration is incompatible with "__nounwind __int ...
- TCP交互流程
前言:在FPGA上实现TCP协议实际是一个不太好的计划,因为FPGA最擅长的是流水线处理方式,而TCP存在交互,导致FPGA需要进行反馈式的处理.但是由于项目新增的附加要求而又只能在FPGA上去实现T ...
- C#基础 const和readonly关键字
静态常量 所谓静态常量就是在编译期间会对变量进行解析,再将常量的值替换成初始化的值.动态常量 所谓动态常量就是编译期间会将变量标记只读常量,而不用常量的值代替,这样在声明时可以不初始化,可以延迟到构造 ...
- Asp.Net实现在线人数统计 (转)
原文件:http://blog.csdn.net/wxd_860825/article/details/4589292 利用Application对象和Session对象可以统计当前在线用户数量. 注 ...