强化学习打卡之稀疏奖励和模仿学习
强化学习打卡之稀疏奖励和模仿学习
1.稀疏奖励
稀疏奖励就是说状态空间很大的情况下采取特定的少数几个动作才能获得奖励,就会导致agent经过大量学习和尝试都没拿到奖励。(这里我想到用epsilon-greedy去探索不就行了吗),这里李宏毅老师的举例十分的妙,我们人每天或者做的事情都没有奖励,但还是一直学习。针对这个情况的办法Reward Shaping(就是认为设计奖励去引导agent)、Curriculum Learning、Hierarchical RL
Reward Shaping
老师举的例子:某个状态下对一个小孩来说由两个动作:学习和玩耍,小朋友没有太多的经验,大概率会选择玩耍,但是玩耍不会得到奖励,所以需要大人引导他,就骗他说,如果你坐下来念书我就给你吃一个棒棒糖。所以,对他来说,下一个时间点会得到的 reward 就变成是positive 的。所以他就觉得说,好像选择这个 study 是比 play 好的。虽然这并不是真正的 reward,而是其他人骗他的reward,告诉他说你采取这个 action 是好的。Reward shaping 就是你自己想办法 design 一些 reward,它不是环境真正的 reward。(所以不是真正的reward后面会计入累计奖励Gt吗)
1.Curiosity
每个奖励中间加一个人为的ICM(内在好奇心模块),那现在我们的目标不仅仅要关心游戏本身的奖励,还要关心人为设置的这个,是要总体的奖励越大越好
内在好奇心模块怎么设计呢,其实就是让输入的st和at去预测下一个状态 st+1,看看和未来的有多不同,越不同说明来为的状态越难预测,说明刚才的 action at有好奇心取探索未知的情况,所以奖励就越大。但是越难预测不代表越重要,这个也是有问题的,比如说你在某个情况下发现树叶飘动这个情况很难预测,然后你就可能会一直去看树叶飘动,所以光是有好奇心还不够,得让他知道什么才是真正重要的。所以我们希望agent可以有过滤不相关的事情的能力,这就需要设计一个过滤器,用另外一个network输入是过滤后的状态,输出是 a^t,我们希望他和 a t越接近越好,因为这样就说明过滤后的状态是跟 at有相关的,这样就可以把无关的过滤了
2.Curriculum Learning
curriculum learning 的意思就是在教机器的时候,从简单的题目教到难的题目。可以用一个叫做Reverse Curriculum Generation的方法去设计课程:就是先找到目标的sg,然后再找离他很近的一些状态记作 s 1,根据实际情况来考虑状态之间的距离,然后从 s1开始玩到 sg,把奖励很大或者很小的给滤掉,因为很大说明机器已经学会了,很小说明太难了。3.Hierarchical RL(阶层式强化学习)
分层强化学习是说,我们有好几个 agent。然后,有一些 agent 负责比较 high level 的东西,它负责订目标,然后它订完目标以后,再分配给其他的 agent,去把它执行完成。(所以是基于多智能体的强化学习?)
2.模仿学习
假设我们连 reward 都没有,那要怎么办呢?其实,多数的情况,我们都没有办法真的从环境里面得到非常明确的 reward。虽然没有办法给出 reward,但是收集 expert 的 demonstration 是可以做到的。主要有两个方法: Behavior Cloning和 Inverse Reinforcement Learning
- Behavior Cloning
其实 Behavior Cloning 跟 supervised learning 是一模一样的。以自动驾驶汽车为例,你可以收集到人开自动驾驶汽车的所有资料,比如说可以通过行车记录器进行收集。看到这样子的 observation 的时候,人会决定向前。机器就采取跟人一样的行为,也向前,就结束了。这个就叫做 Behavior Cloning,Expert 做什么,机器就做一模一样的事。
从上面可以看出行为克隆很容易实现,但是也存在问题:
1.代理会完全复制专家的行为,不管这个行为对不对,因为没有奖励,代理会将人类专家的行为当成圣旨;
2. 代理的学习能力有限,代理会选择错误的行为进行复制,那什么该学什么不该学就显得很重要;
3. 有可能出现mismatch的问题。