A thorough understanding of on-policy and off-policy in Reinforcement learning

news/2024/5/18 21:44:06 标签: on-policy, off-policy, 强化学习

一句话区分on-policy and off-policy: 看behaviour policy和current policy是不是同一个就OK了!

我这篇文章主要想借着理解on-policyoff-policy的过程来加深对其他RL算法的认识。因为万事万物总是相互联系的,所以在自己探究,琢磨为什么有些算法是on-policy或者off-policy的过程中,对于它们的本质也有了更深的认识。

首先从DDPG说起,今天把DDPG这篇文章看完了,不得不感叹DeepMind不仅学术厉害,文章也写得好啊。读完DDPG,感觉就很容易理解,结论的得出也顺理成章。文章中虽然说,DDPG是基于DPG的,但是行文中也没有看到DPG推理过程的影子,而是另辟蹊径地从一个简单的fitted action-value function出发,轻松地推出了DPG,看完这个推理觉得没毛病。而且联想到为什么Sergey Levine在CS294中讲Advanced Q-learning algorithms的时候提到了DDPG,并且说它其实也可以看作是Q-learning with continuous actions的一个处理方法,就是learn an approximate maximizer,联系DDPG原文的阐述,这样看确实是有道理的!

下面的三行英文和公式就是DDPG原文的推导过程:


The action-value function is used in many reinforcement learning algorithms. It describes the expected return after taking an action at a t in state st s t and thereafter following policy π π :
Qπ(st,at)=Erit,si>tE,ai>tπ[Rt|st,at]                                                 (1) Q π ( s t , a t ) = E r i ≥ t , s i > t ∼ E , a i > t ∼ π [ R t | s t , a t ]                                                                                                   ( 1 )
Many approaches in reinforcement learning make use of the recursive relationship known as the Bellman equation:
Qπ(st,at)=Ert,st+1E[r(st,at)+γEat+1π[Qπ(st+1,at+1)]]                (2) Q π ( s t , a t ) = E r t , s t + 1 ∼ E [ r ( s t , a t ) + γ E a t + 1 ∼ π [ Q π ( s t + 1 , a t + 1 ) ] ]                                 ( 2 )
If the target policy is deterministic we can describe it as a function μ:SA μ : S ← A and avoid the inner expectation:
Qπ(st,at)=Ert,st+1E[r(st,at)+γQπ(st+1,μ(st+1))]                         (3) Q π ( s t , a t ) = E r t , s t + 1 ∼ E [ r ( s t , a t ) + γ Q π ( s t + 1 , μ ( s t + 1 ) ) ]                                                   ( 3 )


继续说DDPG,看完文章中(1)(2)(3)三个式子的推导,借着deterministic的名头,把原本对action的期望去掉了,正是由于这一招,DPG成功甩掉了on-policy的包袱(因为不需要sample from current policy来对action求期望了)。从此,谁要是说DPG是off-policy的,那么我也不敢反驳了。但是,说DPG是off-policy其实还是不严谨的。因为DPG只能算一个theorem,只能说从这个theorem出发的算法,不再像从PG theorme出发的算法那样必须戴上on-policy的枷锁。事实上,off-policy的算法也可以用on-policy的方式去训练,因为off-policy本来就对behaviour policy不做要求了,那么用current policy自然也可以。这样的例子,比如说Q-learning,如果你要用SARSA那样的方式去训练,那就成on-policy算法了。不得不感叹一句,off-policy真是自由的象征啊。再比如,下面的截图,来自于DPG原文,使用Sarsa updates,强行弄出一个On-Policy Deterministic Actor-Critic,作者说到on-policy的弊端是exploration不够,但是假如environments中的noise已经够多了,那么说不定on-policy也可以用(因为不需要再担心exploration不够的问题了)。

这里写图片描述

我当时看完DDPG用deterministic甩掉on-policy的包袱之后,一方面觉得推理顺畅,另一方面又在纳闷那么Q-learning呢?毕竟Q-learning也是在fit action-value function,那么Q-learning是怎么甩掉on-policy的包袱的呢?带着这样的问题,我又回看了CS294 fitted Q-iteration部分的PPT。我发现…fitted Q-iteration的推导也没毛病啊(笑哭)。感觉公说公有理婆说婆有理了。但是,后来我发现,其实仔细看,fitted Q-iteraion的算法过程中,它其实也会走到下面这一步:

Qπ(st,at)=Ert,st+1E[r(st,at)+γEat+1π[Qπ(st+1,at+1)]]                (2) Q π ( s t , a t ) = E r t , s t + 1 ∼ E [ r ( s t , a t ) + γ E a t + 1 ∼ π [ Q π ( s t + 1 , a t + 1 ) ] ]                                 ( 2 )

不过,由于fitted Q-iteration的current policy使用的是greedy policy,而不是一个stochastic policy,所以对于 at+1 a t + 1 的期望也用不着求了。某种程度上,fitted Q-iteration其实也可以看作是一个特殊的DPG,它的actor是 argmaxaQ(s,a) a r g m a x a Q ( s , a ) ,可以看作是一个deterministic actor。当然咯,这其实只能在脑海中这么理解,实际去证明的话还是不好证明的(至少我是这么感觉的)。原因是因为,DPG其实应该用在continuous aciton的控制中,不然 μ(st+1) μ ( s t + 1 ) 就不好解释了,如果非要用到discret action中,可能需要一些trick。


http://www.niftyadmin.cn/n/917182.html

相关文章

操作系统学习笔记(20)--开中断、关中断及原子操作

操作系统在很多情况下,需要进行原子操作,此时是不可以进行中断响应的。 根据需要此时需要关闭中断,在原子操作完了之后再进行开中断。 中断相关的操作有: 1 知道EFFLAG的中断位 2 中断开、关的指令 3 如果进行C语言设置时的参数传递 下面给出部分伪码: 原子操作() { …

将meteor部署在自己服务器上的简易方法

有meteor-up等众多工具,如果你不喜欢它们,可以尝试如下方法,自由控制。 1,创建及打包项目 meteor create newapp meteor build . 2,上传 将bunder.tar.gz上传至服务器 3,运行 cd bunder/programs/server/ n…

ℰ悟透Qt—Http网络编程

目录 概述实践理论QNetworkAccessManager进行Http编程的基本步骤代码实战(重点片段) 概述 网络访问 API 建立在一个 QNetworkAccessManager 对象之上,该对象保存了发送请求所需的公共配置和设置。它包含代理和缓存配置,以及与此类问题相关的信号和可用于…

做独立思考,敢于尝试的研究者!

今晚实验室年会,聚餐刚回来。回来的路上,龙哥和我们说了一些话,感觉很受启发,所以记录下来。 龙哥比我们只大一届,现在已经有了一篇ICIP,一篇PR,一篇ICCV(oral)在手,一篇PAMI在投&a…

操作系统学习笔记(21)--中断描述符表设置

与此相关的IDTR 基本定义 IDT_Pointer: dw 0 -- 表长 dd 00 -- 基地址 lidt [IDT_Pointer] 基地址和表长 IDT_Pointer是6个字节长,高4个字节是32 Bit Linear Base Address,低2个字节是16 Bit Table Limit。 On power up or re…

自定义Dialog

1.定义样式style.XML文件 <?xml version"1.0" encoding"utf-8"?> <resources xmlns:android"http://schemas.android.com/apk/res/android"><style name"add_dialog" parent"android:style/Theme.Dialog"&…

SSD代码中MatchBBox函数的理解

卧了个槽。。这个函数竟然看了我这么久。 先把整个函数体摘抄如下&#xff1a; void MatchBBox(const vector<NormalizedBBox>& gt_bboxes,const vector<NormalizedBBox>& pred_bboxes, const int label,const MatchType match_type, const float overla…

操作系统学习笔记(22)--全局描述符表

在保护模式下访问内存步骤:1 获取段选择子2 根据GDTR寄存器获得基地址3 和偏移地址结合获得线性地址 与内存有关的描述符 align 8, db 0 (内存对齐) GDT:; Descriptor 0 is not useddw 0dw 0dw 0dw 0; Descriptor 1: kernel code segmentdw 0xFFFF ; bytes 0 and 1 of segme…