【 学习强化学习】十二、针对稀疏奖励的改进

本文介绍了在稀疏奖励环境中解决强化学习难题的三种方法:奖励塑造、课程学习和层次强化学习。奖励塑造通过设计额外的奖励引导智能体学习;内在好奇心模块(ICM)是好奇心驱动奖励的一种实现,鼓励智能体探索未知;课程学习通过逆向课程生成,按难度逐步训练智能体;层次RL则通过多个智能体分工合作解决复杂任务。
摘要由CSDN通过智能技术生成

参考资料

  1. https://datawhalechina.github.io/easy-rl/#/chapter10/chapter10
  2. Reward Shaping Invariance

前言

如果环境中的 reward 非常 sparse,reinforcement learning 的问题就会变得非常的困难,但是人类可以在非常 sparse 的 reward 上面去学习。一个真正厉害的 AI 应该能够在 sparse reward 的情况下也学到要怎么跟这个环境互动。

我们可以通过三个方向来解决 sparse reward 的问题。

  1. Reward Shaping
  2. Curriculum Learning
  3. Hierarchical RL

本章主要是提供参考思路

1. Reward Shaping

这部分可参考文献。

Reward shaping 是说环境有一个固定的 reward,它是真正的 reward,但是为了让 agent 学出来的结果是我们要的样子,我们刻意地设计了一些 reward 来引导我们的 agent。

对于一个MDP M = ( S , A , T γ , R ) M=(S,A,T\gamma,R) M=S,A,Tγ,R,考虑对整个MDP的奖励函数进行变形: R ′ = R + F R'=R+F R=R+F,得到新的MDP
M ′ = ( S , A , T γ , R ′ ) M'=(S,A,T\gamma,R') M=S,A,Tγ,R。通过解新的这个MDP来得到原来MDP的解。
具体可 参考资料2

1.1 Curiosity

在这里插入图片描述

  • 一个技术是加上 curiosity,所以叫 curiosity driven reward。如上图所示,我们有一个 reward function,它给你某一个 state和一个 action,它就会评断在这个 state 采取这个 action 得到多少的 reward。

1. ICM(intrinsic curiosity module)

  • 在 curiosity driven 的技术里,你会加上一个新的 reward function。这个新的 reward function 叫做 ICM(intrinsic curiosity module)。根据 s 1 s_1 s1​ 、 a 1 a_1 a1​、 s 2 s_2 s2​,它会 output 另外一个 reward r 1 i r_1^i r1i​。对 agent 来说,total reward 并不是只有 r 而已,还有 r i r^i ri。它不是只有把所有的 r 都加起来,它还把所有 r i r^i ri 加起来当作 total reward。所以,它在跟环境互动的时候,它不仅希望 r 越大越好,它还同时希望 r i r^i ri 越大越好。ICM 就代表了一种 curiosity。

2. ICM设计

在这里插入图片描述

  • 原始的设计是:curiosity module input 现在的 state、在这个 state 采取的 action、以及 下一个 state s t + 1 s_{t+1} st+1。它会 output 一个 reward r t i r^i_t rti​。那这个 r t i r^i_t rti是怎么算出来的呢?在 ICM 里面,有一个 network,这个 network 会 take a t a_t at​ 跟 s t s_t st,然后去 output s ^ t + 1 \hat{s}_{t+1} s^t+1​​ 。这个 network 的预测 s ^ t + 1 \hat{s}_{t+1} s^t+1 跟真实的情况 s t + 1 s_{t+1} st+1越不像那得到的 reward 就越大。所以这个 reward r t i r_t^i rti​ 的意思是,如果未来的 state 越难被预测的话,那得到的 reward 就越大。这就是鼓励 agent去冒险,现在采取这个 action,未来会发生什么事越没有办法预测的话,这个 action 的 reward 就大。

  • 其实,这整个想法里面是有一个问题的。这个问题是某一些 state它很难被预测并不代表它就是好的,它就应该要去被尝试的。所以说,光是有好奇心是不够的,还要让它知道什么事情是真正重要的。

在这里插入图片描述

  • 怎么让 agent知道说什么事情是真正重要的?你要加上另外一个 module,我们要 learn 一个feature extractor,黄色的格子代表 feature extractor,它input 一个 state,然后 output 一个 feature vector 来代表这个 state,那我们期待这个 feature extractor 可以把state 里面没有意义的东西过滤掉,比如说风吹草动、白云的飘动、树叶的飘动这种没有意义的东西直接把它过滤掉。

  • 怎么 learn 这个 feature extractor 呢?我们可以 learn 另外一个 network 2。这个 network 2 是把 ϕ ( s t ) \phi(s_t) ϕ(st) ϕ ( s t + 1 ) \phi(s_{t+1}) ϕ(st+1) 这两个 vector 当做 input,然后接下来它要 predict action a ,这个 action a 跟真正的 action a 越接近越好。加上这个 network 2 的好处就是因为要用 ϕ ( s t ) \phi(s_t) ϕ(st) ϕ ( s t + 1 ) \phi(s_{t+1}) ϕ(st+1) 预测 action。所以,今天我们抽出来的 feature 跟预测 action 这件事情是有关的。所以风吹草动等与 agent要采取的 action 无关的东西就会被滤掉,就不会被放在抽出来的 vector representation 里面。

2. Curriculum Learning

Curriculum learning 不是 reinforcement learning 所独有的概念,其实在 machine learning,尤其是 deep learning 里面,你都会用到 curriculum learning 的概念。举例来说,curriculum learning 的意思是说,你为机器的学习做规划,你给他喂 training data 的时候,是有顺序的,通常都是由简单到难。所以 curriculum learning 的意思就是在教机器的时候,从简单的题目教到难的题目。

2.1 Reverse Curriculum Generation

在这里插入图片描述

  • 有一个比较 general 的方法叫做 Reverse Curriculum Generation。假设你现在一开始有一个 state s g s_g sg​,这是你的 goal state,也就是最后最理想的结果。接下来你根据你的 goal state 去找其他的 state,这些state 跟 goal state 是比较接近的。假设这些跟 goal state 很近的 state 叫做 s 1 s_1 s1​​。至于什么叫做近,这是 case dependent,你要根据你的 task 来 design 说怎么从 s g ​ s_g​ sg sample 出 s 1 s_1 s1。接下来,你再从这些 s 1 s_1 s1开始做互动,看它能不能够达到 goal state s g s_g sg​,那每一个 state,你跟环境做互动的时候,你都会得到一个 reward R。

  • 接下来,我们把 reward 特别极端的 case 去掉。Reward 特别极端的 case 的意思就是那些 case 太简单或是太难了。如果 reward 很大,代表说这个 case 太简单了,就不用学了,因为机器已经会了,它可以得到很大的 reward。如果 reward 太小,代表这个 case 太难了,依照机器现在的能力这个课程太难了,它学不会,所以就不要学这个,所以只找一些 reward 适中的 case。

  • 什么叫做适中,这个就是要调的参数,找一些 reward 适中的 case。接下来,再根据这些 reward 适中的 case 去 sample 出更多的 state。这就是Reverse Curriculum learning。刚才讲的是 curriculum learning,就是你要为机器规划它学习的顺序。而 reverse curriculum learning 是从 goal state 去反推,所以这个叫做 reverse。

3. Hierarchical RL

  • 第三个方向是分层强化学习(hierarchical reinforcement learning,HRL)。分层强化学习是说,我们有好几个 agent。然后,有一些 agent 负责比较 high level 的东西,它负责订目标,然后它订完目标以后,再分配给其他的 agent执行完成。

  • 所以,我们要完成一个很大的 task 的时候,我们并不是从非常底层的那些 action 开始想起,我们其实是有个 plan。我们先想说,如果要完成这个最大的任务,那接下来要拆解成哪些小任务。每一个小任务要再怎么拆解成小小的任务。

  • 分层强化学习是指将一个复杂的强化学习问题分解成多个小的、简单的子问题,每个子问题都可以单独用马尔可夫决策过程来建模。这样,我们可以将智能体的策略分为高层次策略和低层次策略,高层次策略根据当前状态决定如何执行低层次策略。这样,智能体就可以解决一些非常复杂的任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CHH3213

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值