【李宏毅机器学习课程笔记】深度强化学习(五)—— Sparse Reward
文章目录
- Introduction
- Reward Shaping
- Curiosity
- Curriculum Learning
- Hierarchical Reinforcement Learning
Introduction
在使用Reinforcement Learning来构造agent时,多数情况下这个agent是得不到任何Reward的。这使得agent的训练变得非常困难。
举例来说,假设我们制作了一个机械手臂,希望让它完成‘用桌上的螺丝刀把螺丝钉栓进去’这个任务,但agent起初是什么都不知道的,它能够完成各种action的原因在于Exploration机制。只有当它随机地将螺丝刀拿起来,再把螺钉栓进去,这个时候它才能得到Reward,但想在随机的情况下完成这一系列的动作就如大海捞针一般困难。
所以说,当环境当中的reward十分稀疏(sparse)时,这个RL的问题就会十分困难。本节课程介绍的就是三种用于解决Sparse Reward的方法。
Reward Shaping
即人工地设计Reward,刻意地引导agent进行我们想要的action,让环境当中的reward变得不那么稀疏。下面是一些人为设计Reward的方法。
Curiosity
先上图:

在Q-learning当中,我们根据每一个状态 s t s_t st和在这个状态下采取的action a t a_t at 得到了这一个step的reward r t r_t rt,期望所有step的reward之和越大越好。在Curiosity的机制下,我们加入了另一个得到Reward的方式——ICM r i t r_i^t rit,它由当前状态 s t s_t st,采取的action a t a_t at 以及下一个状态 s t + 1 s_{t+1} st+1计算得到。
ICM最原始的具体设计方式如下:有一个network以 s t s_t st和 a t a_t at作为输入,其输出的是machine自己预测的下一个状态 s ^ t + 1 {\hat s_{t + 1}} s^t+1,然后让它和真实发生的下一个状态 s t + 1 s_{t+1} st+1做对比,二者相差越大,ICM得到的reward就越高,即如果未来得到的state越难被预测到,得到的reward就越高。这就鼓励machine在最开始训练模型的时候去主动采取那些风险比较大的action。

(需要注意的是,用于预测下一个状态的network,即上图中的Network 1是已经被训练好的,在整个Q-Learning的过程中它是被固定住不改变任何参数的)
但这样做仍然有局限性,那就是不是所有难以被预测的动作和即将发生的状态都值得去尝试,这就好比Agent在玩游戏,但是游戏画面的背景是树叶在舞动,树叶如何舞动是一个难以预料的东西,这个模型会鼓励这种难以预料的东西。所以这个模型会让Agent一直观察树叶是如何舞动。所以还需要有一个机制去告诉machine哪些冒险是值得的,是和我们想要它完成的任务相关的。
解决这个问题的方法是增加一个network2,它的输入是两个分别和状态 s t s_t st、 s t + 1 s_{t+1} st+1相关的向量(但不是 s t s_t st和 s t + 1 s_{t+1} st+1本身,事实上, s t s_t st和 s t + 1 s_{t+1} st+1在作为network2的输入前要经过一个Feature Extractor,它将状态向量里那些与问题不相关的特征过滤掉)。network2的输出是一个对 a t a_t at的预测 a ^ t \hat a_t a^t,比较 a t a_t at和 a ^ t \hat a_t a^t,如果区别不大,证明这个东西是和结果有关系的,但是如果区别大,就证明这是一个无关紧要的东西。

Curriculum Learning
即给机器的学习过程做规划,从简单到困难。
准确的来说,是逐渐提高学习的样本难度,模拟人类的学习过程。
为此,我们需要为机器设计‘课程’,即给机器学习的样本做难度上的规划,一种通用的方法被称作Reverse Curriculum Generation。它的一般步骤如下:
- 确定一个目标状态 s g s_g sg。
- 设计一些与目标状态相近的状态 s 1 s_1 s1
- 以这些 s 1 s_1 s1开始与环境互动,每一个 s 1 s_1 s1得到的状态-行动序列 τ \tau τ都有一个Reward R ( s 1 ) R(s_1) R(s1)
- 删去那些 R ( s 1 ) R(s_1) R(s1)过大或过小的样本(过大代表样本难度过低,反之则代表过高),留下 R ( s 1 ) R(s_1) R(s1)适中的样本
- 在这些适中的样本周围再Sample出更多的状态 s 2 s_2 s2,重复步骤3、4。


Hierarchical Reinforcement Learning
将所有的agent分层,上层的agent将目标分解为小目标,当目标不能再被分解的时候,最底层的agent就付诸行动,采取action以实现这些小目标。当最底层的agent不能完成这些目标时,上层的agent就会受到一定的惩罚(Penalty),所以上层的agent要避免提出下层agent达不到的目标。另外,当下层的agent达成了一个错误的目标的时候,我们就将上层提出的目标直接修改为下层达成的这个目标(即不浪费下层agent训练过程中的任何成果)
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
