【DataWhale打卡】李宏毅老师视频中的最后两部分,sparse reward和imitation learning。
文章目录
- 1. Sparse Reward
- 1.1 Reward Shaping
- 1.2 Curriculum Learning
- 1.3 Hierarchical RL
- 2. Imitation Learning
- 2.1 Behavior Cloning
- 2.2 Inverse Reinforcement Learning
- 3. 参考
1. Sparse Reward
Sparse Reward是强化学习中最重要的问题,也是最难解决的,仅仅通过exploration来进行探索是远远不够的。这一节将讲解如何解决Sparse Reward的问题。
1.1 Reward Shaping
可以刻意设计一些reward来引导达到最终的reward。
举例:小孩在学习(长远reward值很高)和游戏(短期reward值更高)的两者中做选择,很有可能就会选择游戏,这时候为了让小孩能够考虑长远,可以考虑让小孩在学习的时候设计人为的reward,期望能够引导到reward更高的情况。
相当于引入了domain knowledge,
在原有基础上加入了Intrinsic curiosity Module(ICM模块,给agent加入好奇心。输入是s1、a1、s2, 就会输出一个额外的reward,总奖励值中就会额外加入这个reward。
ICM
Network1是额外学习出来的,根据at和st来预测下一个 s t + 1 ^ \hat{s_{t+1}} st+1^,然后将两者的插值作为reward的值,这样设置也就是说,如果下一个状态很难去预测,那么就给个更大的奖励,也就是鼓励冒险的意思。
但是有一个问题:以上reward的设置默认 越难被预测状态就越好。但是这个并不是总是成立的,有的状态很难预测,但是并不代表它更重要。
如何判断这个很难预测的状态是否是真的重要的呢?
引入另外一个Network 2,此外还引入了一个特征提取器,Feature Ext来对状态进行特征提取。Network2接受来自 s t 和 s t + s_t和s_{t+} st和st+的特征Vector作为输入,输出的值是一个action a t ^ \hat{a_t} at^ (这个值的意义就是从st到 s t + 1 s_{t+1} st+1的话,要采取的action),希望这个action和实际的action a t a_t at越接近越好。
Network1这部分计算让模型能够拥有足够的好奇心,下一个状态越难预测就给更高的reward。
Network2这部分计算就是约束下一个状态,从st到 s t + 1 s_{t+1} st+1预测需要的action和实际采取的action越接近越好,防止提取得到的特征中存在的和action无关的信息。Network2的作用就是更好的优化Feature Ext这个特征提取器,从而让这个提取得到的特征,更加关注于对action影响较大的特征。
1.2 Curriculum Learning
为Agent的学习做一个规划,从简单到难,逐步学习。
在强化学习中,从简单的到困难就可以对应学习的序列的长度,短序列学习难度较低,长序列学习难度更高,所以可以先学习短序列,然后学习长序列。
再举一个例子,在躲避怪物的游戏中,从一开始就设置怪物速度到最大值,那很可能训练不起来的,可以让速度从低到高,循序渐进训练。
那么有没有更通用的方法来设计课程规划?
Reverse Curriculum Generation
- 给定一个目标状态 s g s_g sg,也就是最终目标。
- 从 s g s_g sg周围采样出一些状态点 s i s_i si, 比较接近于目标状态,加入到状态集合{S}。
- 从每个 s i s_i si就开始做互动,看是否能达到 s g s_g sg, 每一个做互动的时候都会得到reward。
- 从状态集合{S}中删除那些reward过大或过小的状态 s i s_i si
- 在状态集合{S}周围继续采样比较接近于{S}中的 s i s_i si的状态,加入{S}集合。
- 重复以上操作
也就是说从目标开始,反向生成一系列课程,从难到易,循序渐进。
1.3 Hierarchical RL
多个Agent,High level的Agent负责制定目标,如同项目经理一般,剩下Low Level的Agent负责完成一个个小目标,如同普通码农一般。
- High Level的agent的目标是让Low Level的Agent完成它所设置的目标,如果没有完成,那就会有一个penalty惩罚。
- 如果agent达到错误的目标,那就假设最初的目标是错误的。
举两个例子:
第一个例子是蓝色的是agent,其目标是达到黄色的终点,那么这时候粉红色的点就代表high level的agent, 指导蓝色agent先接近红色agent,然后一步步达到黄色终点。
第二个例子是绕中间一点甩杆,目标是将杆子甩到黄色球的位置,这时候就需要粉红色的球做一个指引,从而达到最终的黄色位置。
2. Imitation Learning
比Sparse Reward更加极端,一点点reward都没有,应该如何是好呢?
-
很多环境中,无法得到reward的,也很难规定出reward,比如聊天机器人,无法判断怎样的聊天内容是好的,怎样是不好的,很难明确规定出来。
-
Imitation Learning又叫做示范学习、学徒学习、观察学习。
-
在Imitation Learning中,有一些专家给出的demonstration,做了一个示范,那么agent就可以根据专家给出的demonstration来学习(这个过程中,无法显式地得到reward),从而不至于从零开始摸索。
-
在没有reward的情况下,手机专家的示意是可以做到的:
- 比如:自动驾驶中,可以收集很多人类的开车记录,并进行研究和学习。
- 比如:在聊天机器人中,可以收集一系列人与人的对话当作范例来学习,也是可行的。
-
有两种方法:Behavior Cloning和Inverse Reinforcement Learning(Inverse Optimal Contral)
2.1 Behavior Cloning
这就和监督学习一模一样了,在某个状态下,就采取某个行动,进行分类,然后监督学习。相当于是Expert做什么,Agent就要做一模一样的事情。
存在问题1
由于状态非常多,以自动驾驶为例,摄像机看到的图像画面是不可能穷举的,专家做出的演示不可能将现实世界中的全部状态都枚举完。所以Behavior Cloning的效果是很有限的,光是做behavior cloning是远远不够的,还需要dataset Aggregation。
Dataset Aggregation
期望训练的数据集是具有多样性的,尽可能覆盖多种极端情况。当遇到极端情况以后,再记录下Expert的操作,然后用这个新的数据来继续训练agent。
存在问题2
Agent会盲目学习Expert的所有行为,包括一些无关紧要的行为。由于Network的容量有限,盲目学习所有行为会导致容量不够。所以要确定什么是该学习的,什么是不该学习的。
存在问题3
在behavior cloning的过程中,其实训练集和测试集的分布是mismatch的。
RL中一个重要的特性是,前一个状态会对后一个状态产生影响。
这就需要Inverse Reinforcement Learning
2.2 Inverse Reinforcement Learning
传统的RL流程:
通过Reward Function,经过RL算法和env的交互,找到一个最优的Actor。
Inverse RL中恰好相反,并没有reward function,只有一些列Expert的示例。
然后inverse RL通过反推得到Reward Function,好像很玄学。。
具体做法:
-
Expert 玩游戏,记录所有的过程 τ ^ \hat{\tau} τ^
-
Actor也去玩游戏,也有所有游戏过程的记录 τ \tau τ
-
然后推Reward function, 这里假设Expert得到的 τ \tau τ永远是最好的。
-
所以Expert的Reward分数要比Actor高。
∑ n = 1 N R ( τ n ^ ) > ∑ n = 1 N R ( τ n ) \sum_{n=1}^N R(\hat{\tau_n})>\sum_{n=1}^N R(\tau_n) n=1∑NR(τn^)>n=1∑NR(τn) -
先射箭,再画靶
-
-
根据以上公式找到一个Reward function R
-
然后基于这个R进行训练学习得到一个Actor
-
然后循环,具体如下图所示
以上过程最让人困惑的过程就是Reward Runction R的选取了。实际上这里的Reward Function和传统的计算方式不同,可以采用的神经网络进行生成函数。只要是函数,就可以用神经网络进行拟合,所以这个过程也是一个可学习的过程。
这个过程和GAN又非常相似:
Actor->Generator
Reward Function->Discriminator
对比图:
这方面还有很多可研究内容,如:Third Person Imitation Learning讲的是机器人的视角和人类不同的时候,如何将知识进行迁移。
3. 参考
https://www.bilibili.com/video/BV1MW411w79n?p=8
https://www.bilibili.com/video/BV1MW411w79n?p=7
https://github.com/datawhalechina/leedeeprl-notes