强化学习与多智能体强化学习(五)——Q-Learning

一、Critic

V function

怎么衡量评估?有两种方法:

第一种方法:MC based approach

让actor去跟环境互动给critic看,之后critic就统计如果看到Sa,那接下来the accumulated reward会有多大;如果看到Sb,那接下来the accumulated reward会有多大。但实际上不可能把所有的state扫描一遍,所以实际上这是一个network,即使没有input一些state,它也能进行估测。

花费的时间太长!每一次都得计算the accumulated reward,等于得把一个环境跑完,把游戏玩到底。

第二种方法:TD approach

两种方法的差别在于:MC的问题在于variance很大,因为Ga其实是很多个step的reward之和;TD的variance比较小,但V不见得估测得准。

下面这个例子就表现出两种方法的不同求解思路, 两种不同的思路所得到的结果也不同。sa可能会影响sb,比如如果出现sa,则sb得到的奖励就是0。MC算法考虑了这种假设。但这件事可能是巧合,TD算法考虑了这种假设。

二、Another Critic

 Q function

上图右边小图所示的表示方法只能应用于离散动作。

(证明过程可以不用太理解)

几个Q-Learning种出现的tips:

1.Target Network

learn Q function的时候也会用到TD的概念。但实际在learn的时候并不好learn,training的时候是一直在变化的,所以通常固定住一个Q,并不update它的参数,被固定住的就叫做Target Network。在update几次后,也会把刚才固定的Q替换掉。

一开始两个network是一样的,之后固定一个,update一个。

2.Exploration

探索是很重要的,如果不加入探索机制,智能体可能会一直重复它觉得最好的动作而不去尝试其他的可能性。 两种方法可以去探索。

3.Replay Buffer

这样做之后其实就是一个off-policy的做法。好处有二:减少和环境做互动的次数和时间,experience放在buffer里可以利用很多次;一般来说batch里的data越diverse越好,而buffer里的data就很diverse。

Q-Learning算法流程(其中有一行写错了,是buffer不是butter):

Double DQN

DQN所估测出的Q值经常会被over-estimated(红色),但Double DQN所估测出的Q值则与实际值相差不大。同时Double DQN所learn出来的policy会比DQN所learn出来的强。

为什么Q值会被高估?

target的值会被设得太高,maxQ的值会被估计得太高(绿色的部分表示被高估的量)

为了解决高估的问题,则提出Double DQN。在Double DQN里有两个Q Network,第一个决定哪一个action对应的Q值最大,第二个则去计算Q值。(第一个Q Network负责“提案”,选择action;第二个Q Network负责“执行”,计算Q值)第二个Q Network其实就可以是Target Network。

 Dueling DQN

相比于DQN,是更改了Network的架构。本来的DQN是直接output Q值;现在的Dueling DQN不直接output Q值,而是output V(s)和A(s,a)。

这么改的好处在于:比较有效率地去使用data。比如说想将-3变成4,-1变成0,实际上变动的不是Q的值,而是V和A的值。

在train的时候,Network会变动V的值, 将0变成1。这样你会发现,Q值表里不仅是刚才想要变化的两个值发生了变化,还有一个值从-2变成了-1。所以有可能在某个state,你只sample到两个action,并没有sample到第三个action,但你也会变动到第三个action,这就意味着你不需要sample到所有的action就能发生变动。

为了避免machine让V全部等于0,A等于Q,没有使用到Dueling DQN,所以会对A有限制条件,让A的update比较麻烦,这样Network就会倾向于用V来变动。比如要求A的column的和全为0,所以此时V就等于上面Q相对应列的平均值,这种情况下变动就会由V来实现。

在实际操作中,有normalization这一步骤,就是把A的column的和全变为0。(这里的normalization挺有意思的,7、3、2的平均值是4,所以每个数字都减去4,平均值变成0,实现列和为0)

Prioritized Replay

原来在sample data去train Network的时候,你是从replay buffer里面去选择data,但可能buffer里有的data不太好,在training的时候要考虑那些data多训练几次。(TD error就是实际值和预测值之间的差距) 不只改变sample data的distribution,还要改变procedure。

Multi-step

在MC和TD之间取得平衡。

不止存一个step的data,存很多个step(N个)的data。

Noisy Net

这个技术用于improve exploration。之前的epsilon greedy是在action space加noisy,现在的这个是在参数的space上加noisy。需要注意的是要在每个episode开始的时候去sample,之后用固定住的noisy network,等于是在同一个episode里参数是固定的。 

和其他方法有本质上的差异。其他方法看到同样的state可能会采取不同的actions,但这种方法看到同样的state会采取相同的actions。

Distributional Q-function  

不好实做!

因为环境具有随机性,在某一个state采取某一个action的时候,是把所有reward做一个统计,得到的是一个distribution,Q valve取的是这个distribution的mean。不同的distribution可能会有相同的mean。所以普通的方法可能会造成一些信息的丢失。

Distributional Q-function直接output distribution。每种颜色的长条图和为1,每一条长条代表在某一个state中采取某一个action的时候,落在某个长条的机率。这样在选取的时候,不仅可以考虑mean,还能考虑到distribution。

 三、Q-Learning for Continuous Actions

很多时候action是连续的,为了解决这个问题,一般有三种方法:一是sample action,但不是很精确;二是用gradient ascent去max,但比较花时间。

三是特别design一个Network的架构,input状态s,Q function 会output三个东西(这里还没有用到动作a)。之后再把a拉进来进行计算。怎么能取到最大的Q呢?第一项是负的(这里的matrix是正定矩阵),所以数值大小越小,最终的Q值就越大。直接把a带到,让第一项变成0,就可以得到最大的Q值。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值