强化学习入坑之路05

强化学习入坑之路05

算一算,这是我入坑强化学习的第五次打卡了,感觉属实不易吧,好了,下面进入正题。

1.稀疏学习

什么叫稀疏学习呢,在之前的强化学习场景中,奖励往往是明确的,比如一局游戏、悬崖寻路等。不过现实生活中很多场景奖励往往不是及时。
在这里插入图片描述
比如一个小朋友,现在去玩可能会有1的奖励,不过若干天后考试失败,奖励会扣很多。而现在不玩,虽然暂时奖励很少,不过考试时会有100的奖励。那我们如何进行行为的引导就显得很重要。
在这里插入图片描述
再比如这个案例,我们需要让机器人去学习把板子上的孔穿过柱子,不过这对机器人来说不是几个简单动作的尝试就可以完成的,很可能尝试了很多动作但最后的收益都是0,因为只有动作完成的时候才会收到奖励,这样就会很难学习。

Curiosity

在这里插入图片描述
其中的一种解决方案就是我们可以加入Curiosity(兴趣)机制,在原有的reward之外,还会加入一个叫做ICM(intrinsic curiosity module)的奖励函数,其本质意义就是要给机器加入好奇心,这样机器所学习的奖励就是rewardICM两者之和。
在这里插入图片描述
那么如何设计这个ICM呢?其主要原理是将agent输出的实际下一状态与预估的下一状态进行比较,取二者之差,根据二者之差的反比例来设计ICM,预估器是一个神经网络。可是这样会产生一个问题,因为不是所有难预测的东西都是好的。所以我们需要想办法让ICM预测真正重要的事。
在这里插入图片描述
这时候就需要我们对状态 s t s_t st s t + 1 s_{t+1} st+1进行处理了,我们设计一个函数ϕ(s)来预测状态的重要程度,这样我们就可以过滤一些不重要的信息。

Curriculum Learning

在这里插入图片描述
还有就是Curriculum Learning,这个方法的主要含义就是将一个大目标分成几个步骤,这样每个步骤就都可以进行训练了。比如你训练机器人把板子穿过柱子。你可以设几个中间步骤,比如把板子靠近柱子、把板子放在柱子上方等。这个就是 curriculum learning 的概念。当然 curriculum learning 有点特别,就是需要人去为机器设计它的课程。

Reverse Curriculum Generation

在这里插入图片描述

还有一种做法叫Reverse Curriculum Generation,这个方法的意思就是假定最佳状态是 s g s_g sg,我们设定几个中间状态,比如 s 1 、 s 2 s_1、s_2 s1s2等。我们会从中间状态中找到比较好学的状态,然后再进一步达到理想状态。

Hierarchical RL

分层强化学习(Hierarchical RL)就是要分为多个agent,同时进行学习,比如下面这个例子。
在这里插入图片描述

2.模仿学习

在这里插入图片描述
Imitation learning 讨论的问题是:假设我们连 reward 都没有,那要怎么办呢?Imitation learning 又叫做 learning from demonstration(示范学习) ,apprenticeship learning(学徒学习),learning by watching(观察学习)。在 Imitation learning 里面,你有一些 expert 的 demonstration,那 machine 也可以跟环境互动,但它没有办法从环境里面得到任何的 reward,它只能看着 expert 的 demonstration 来学习什么是好,什么是不好。其实,多数的情况,我们都没有办法真的从环境里面得到非常明确的 reward。举例来说,如果是棋类游戏或者是电玩,你有非常明确的 reward。但是其实多数的任务,都是没有 reward 的。以 chat-bot 为例,机器跟人聊天,聊得怎么样算是好,聊得怎么样算是不好,你无法给出明确的 reward。所以很多 task 是根本就没有办法给出 reward 的。
我们虽然没有直接得到回报,但我们可以收集一些专家的经验信息,通过专家的经验为蓝本来进行策略的训练。

Behavior Cloning

在这里插入图片描述
以自动驾驶为例,在自动驾驶汽车里面,虽然你没有办法给出自动驾驶汽车的 reward,但你可以收集很多人类开车的纪录。这种方法就叫Behavior Cloning。
其实 Behavior Cloning 跟 supervised learning 是一模一样的。以自动驾驶汽车为例,你可以收集到人开自动驾驶汽车的所有资料,比如说可以通过行车记录器进行收集。看到这样子的 observation 的时候,人会决定向前。机器就采取跟人一样的行为,也向前,就结束了。这个就叫做 Behavior Cloning,Expert 做什么,机器就做一模一样的事。
专家能做到的事,很多情况下我们的agent学习不到,比如藤原拓海就能在秋名山赛道上用水沟下陷法过弯,而很多其他车手做不到。做不到的情况下往往agent不知道该怎么做,这样就陷入了僵局。
所以光是做 Behavior Cloning 是不够的,只观察 expert 的行为是不够的,需要一个招数,这个招数叫作Dataset Aggregation
在这里插入图片描述
我们会希望收集更多样性的 data,而不是只收集 expert 所看到的 observation。我们会希望能够收集 expert 在各种极端的情况下,它会采取什么样的行为。以自动驾驶汽车为例的话,假设一开始,你的 actor 叫作 π 1 \pi_1 π1,你让 π 1 \pi_1 π1去开这个车。但车上坐了一个 expert。这个 expert 会不断地告诉 machine 说,如果在这个情境里面,我会怎么样开。所以 π 1 \pi_1 π1自己开自己的,但是 expert 会不断地表示它的想法。比如说,如上图所示,一开始的时候,expert 可能说往前走。在拐弯的时候,expert 可能就会说往右转。但 π 1 \pi_1 π1是不管 expert 的指令的,所以它会继续去撞墙。虽然 expert 说往右转,但是不管它怎么下指令都是没有用的, π 1 \pi_1 π1会自己做自己的事情,因为我们要做的记录的是说,今天 expert 在 π 1 \pi_1 π1看到这种 observation 的情况下,它会做什么样的反应。这个方法显然是有一些问题的,因为你每开一次自动驾驶汽车就会牺牲一个人。那你用这个方法,你牺牲一个 expert 以后,你就会知道,人类在这样子的 state 下,在快要撞墙的时候,会采取什么样的行为。再把这个 data 拿去 train 新的 π 2 \pi_2 π2。这个 process 就反复继续下去,这个方法就叫做Dataset Aggregation。

Inverse RL

在这里插入图片描述
为什么叫 Inverse Reinforcement Learning,因为原来的 Reinforcement Learning 里面,有一个环境和一个 reward function。根据环境和 reward function,通过 Reinforcement Learning 这个技术,你会找到一个 actor,你会 learn 出一个optimal actor。但 Inverse Reinforcement Learning 刚好是相反的,你没有 reward function,你只有一堆 expert 的 demonstration。但你还是有环境的。IRL 的做法是说假设我们现在有一堆 expert 的demonstration,我们用 τ ^ \hat{\tau} τ^来代表expert 的demonstration。如果是在玩电玩的话,每一个 τ \tau τ 就是一个很会玩电玩的人玩一场游戏的纪录,如果是自动驾驶汽车的话,就是人开自动驾驶汽车的纪录。这一边就是 expert 的 demonstration,每一个 τ \tau τ是一个 trajectory。在这里插入图片描述

Inverse Reinforcement Learning 实际上是怎么做的呢?首先,我们有一个 expert π ^ \hat{\pi} π^
,这个 expert 去跟环境互动,给我们很多 τ 1 ^ \hat{\tau_1} τ1^ τ n ^ \hat{\tau_n} τn^ 。如果是玩游戏的话,就让某一个电玩高手,去玩 n 场游戏。把 n 场游戏的 state 跟 action 的 sequence 都记录下来。接下来,你有一个actor π \pi π,一开始actor 很烂,这个 actor 也去跟环境互动。它也去玩了n 场游戏,它也有 n 场游戏的纪录。接下来,我们要反推出 reward function。怎么推出 reward function 呢?原则就是 expert 永远是最棒的,是先射箭,再画靶的概念。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值