文章目录
Imitation Learning
别名:learning from demonstration(示范学习)
,apprenticeship learning(学徒学习)
,learning by watching(观察学习)
必要性:其实,多数的情况,我们都没有办法真的从环境里面得到非常明确的奖励。以 chat-bot 为例,机器跟人聊天,聊得怎么样算是好,聊得怎么样算是不好,你无法给出明确的奖励。
虽然没有办法给出奖励,但是收集专家的 demonstration 是可以做到的。
Approach1–Behavior Cloning
本质上一个监督学习的问题,收集expert的在状态s下采取动作a的数据集,训练一个网络来拟合它。
但存在的问题是:
- 有些极限的情况人类可能从来不会见过,例如驾驶员不可能会看到前方是拐弯的路段还继续直行。
- 有些人类没必要的固有的习惯被agent强记下来,比如下车前要先吸根烟再回家,下车就直接下就好了。此时分辨什么该学什么不该学就很重要。
- 在做 Behavior Cloning 的时候,training data 跟 testing data 是 mismatch 的。我们可以用 Dataset Aggregation 的方法来缓解这个问题。这个问题是,在 training 跟 testing 的时候,data distribution 其实是不一样的。因为在 reinforcement learning 里面,action 会影响到接下来所看到的 state。下一个状态会受上一状态和动作的影响。因此学习到的网络π和代表expert的网络π*,也许只差一点,但测试的时候可能差老远。
因此需要引入一个招数:Dataset Aggretion(DAgger)
Dataset Aggretion(DAgger)
π1训练自己的,不受expert 控制,不过会记录下expert 在每一个observation的action,用这个数据集来训练π2
Approach2–Inverse RL or Inverse Optimal Control
- 让expert去玩游戏收集 { τ ^ 1 , τ ^ 2 , . . . , τ ^ N } \{\hat{\tau}_1,\hat{\tau}_2,...,\hat{\tau}_N\} {τ^1,τ^2,...,τ^N}
- 让actor去玩游戏收集 { τ 1 , τ 2 , . . . , τ N } \{\tau_1,\tau_2,...,\tau_N \} {τ1,τ2,...,τN}
- 定一个奖励函数确保expert的奖励比actor的高
- 根据这个奖励函数learn一个maximize R的actor
- 重复步骤2~4
什么叫做一个最好的奖励函数?最后学习出来的奖励函数应该就是专家和 actor 在这个奖励函数都会得到一样高的分数。最终奖励函数没有办法分辨出谁应该会得到比较高的分数。