Update chapter11_questions&keywords.md

This commit is contained in:
Yiyuan Yang
2022-09-21 16:45:58 +08:00
committed by GitHub
parent 9717b2c0ce
commit 1ce70d2c00

View File

@@ -1,36 +1,42 @@
# Chapter11 Imitation Learning
# 第十一章 模仿学习
## 1 Keywords
## 关键词
- **Imitation learning** 其讨论我们没有reward或者无法定义reward但是有与environment进行交互时怎么进行agent的学习。这与我们平时处理的问题中的情况有些类似,因为通常我们无法从环境中得到明确的reward。Imitation learning 又被称为 learning from demonstration (示范学习) apprenticeship learning (学徒学习)learning by watching (观察学习)等。
- **Behavior Cloning** 类似于ML中的监督学习通过收集expert的state与action的对应信息训练我们的networkactor。在使用时input state时得到对应的outpur action。
- **Dataset Aggregation** 用来应对在Behavior Cloning中expert提供不到的data其希望收集expert在各种极端state下expert的action。
- **Inverse Reinforcement learningIRL** Inverse Reinforcement Learning 是先找出 reward function再去用 Reinforcement Learning 找出 optimal actor。这么做是因为我们没有环境中reward但是我们有expert 的demonstration使用IRL我们可以推断expert 是因为什么样的 reward function 才会采取这些action。有了reward function 以后,接下来,就可以套用一般的 reinforcement learning 的方法去找出 optimal actor。
- **Third Person Imitation Learning** 一种把第三人称视角所观察到的经验 generalize 到第一人称视角的经验的技术。
- **模仿学习imitation learningIL**:其讨论我们没有奖励或者无法定义奖励但是有与环境进行交互时怎么进行智能体的学习。这与我们平时处理的问题有些类似,因为通常我们无法从环境中得到明确的奖励。模仿学习又被称为示范学习(learning from demonstration)、学徒学习(apprenticeship learning)以及观察学习(learning by watching等。
## 2 Questions
- **行为克隆behavior cloning**:类似于机器学习中的监督学习,通过收集专家的状态与动作等对应信息,来训练我们的网络。在使用时,输入状态就可以输出对应的动作。
- 对于Imitation Learning 的方法有哪些?
- **数据集聚合dataset aggregation**:用来应对在行为克隆中专家提供不到数据的情况,其希望收集专家在各种极端状态下的动作。
Behavior Cloning、Inverse Reinforcement LearningIRL或者称为Inverse Optimal Control
- **逆强化学习inverse reinforcement learningIRL**:逆强化学习先找出奖励函数,再用强化学习找出最优演员。这么做是因为我们没有环境中的奖励,但是有专家的示范,使用逆强化学习,我们可以推断专家是因为何种奖励函数才会采取这些动作。有了奖励函数以后就可以使用一般的强化学习方法找出最优演员
- Behavior Cloning存在哪些问题呢我们可以如何处理呢
答:
1. 首先如果只收集expert 的data看到某一个state输出的action你可能看过的 observation 会是非常 limited。所以我们要收集expert在各种极端state下的action或者说是要收集更多的、复杂的data可以使用教程中提到的Dataset Aggregation。
2. 另外使用传统意义上的Behavior Cloning的话机器会完全 copy expert 的行为,不管 expert 的行为是否有道理就算没有道理没有什么用的这是expert 本身的习惯机器也会硬把它记下来。我们的agent是一个 machine它是一个 networknetwork 的capacity 是有限的。就算给 network training data它在training data 上得到的正确率往往也不是100%他有些事情是学不起来的。这个时候什么该学什么不该学就变得很重要。不过极少数expert的行为是没有意义的但是至少也不会产生较坏的影响。
3. 还有,在做 Behavior Cloning 的时候training data 跟 testing data 是 mismatch 的。我们可以用 Dataset Aggregation 的方法来缓解这个问题。这个问题是,在 training 跟 testing 的时候data distribution 其实是不一样的。因为在 reinforcement learning 里面action 会影响到接下来所看到的 state。我们是先有 state $s_1$,然后采取 action $a_1$action $a_1$ 其实会决定接下来你看到什么样的 state $s_2$。所以在 reinforcement learning 里面有一个很重要的特征,就是你采取了 action 会影响你接下来所看到的 state。如果做了Behavior Cloning 的话,我们只能观察到 expert 的一堆 state 跟 action 的pair。然后我们希望可以 learn 一个 $\pi^*$,我们希望 $\pi^*$ 跟 $\hat{\pi}$ 越接近越好。如果 $\pi^*$ 可以跟 $\hat{\pi}$ 一模一样的话,你 training 的时候看到的 state 跟 testing 的时候所看到的 state 会是一样的,这样模型的泛化性能就会变得比较差。而且,如果你的 $\pi^*$ 跟 $\hat{\pi}$ 有一点误差。这个误差在一般 supervised learning problem 里面,每一个 example 都是 independent 的,也许还好。但对 reinforcement learning 的 problem 来说,可能在某个地方,也许 machine 没有办法完全复制 expert 的行为,也许最后得到的结果就会差很多。所以 Behavior Cloning 并不能够完全解决 Imatation learning 这件事情,我们可以使用另外一个比较好的做法叫做 Inverse Reinforcement Learning。
- **第三人称视角模仿学习third person imitation learning**:一种把第三人称视角所观察到的经验泛化为第一人称视角的经验的技术。
- Inverse Reinforcement Learning 是怎么运行的呢?
## 习题
答:首先,我们有一个 expert $\hat{\pi}$,这个 expert 去跟环境互动,给我们很多 $\hat{\tau_1}$ 到 $\hat{\tau_n}$我们需要将其中的state、action这个序列都记录下来。然后对于actor $\pi$ 也需要进行一样的互动和序列的记录。接着我们需要指定一个reward function并且保证expert对应的分数一定要比actor的要高用过这个reward function继续learning更新我们的训练并且套用一般条件下的RL方法进行actor的更新。在这个过程中我们也要同时进行我们一开始制定的reward function的更新使得actor得得分越来越高但是不超过expert的得分。最终的reward function应该让expert和actor对应的reward function都达到比较高的分数并且从最终的reward function中无法分辨出谁应该得到比较高的分数。
**11-1** 具体的模仿学习方法有哪些?
- Inverse Reinforcement Learning 方法与GAN在图像生成中有什么异曲同工之处?
行为克隆、逆强化学习或者称为逆最优控制。
在GAN 中我们有一些比较好的图片数据集也有一个generator一开始他根本不知道要产生什么样的图只能随机生成。另外我们有一个discriminator其用来给生成的图打分expert 生成的图得分高generator 生成的图得分低。有了discriminator 以后generator 会想办法去骗过 discriminator。Generator 会希望 discriminator 也会给它生成得图高分。整个 process 跟 IRL 的过程是类似的。我们一一对应起来看:
**11-2** 行为克隆存在哪些问题呢?对应的解决方法有哪些?
* 生成的图就是 expert 的 demonstrationgenerator 就是actorgenerator 会生成很多的图并让actor 与环境进行互动,从而产生很多 trajectory。这些 trajectory 跟环境互动的记录等价于 GAN 里面的生成图
* 在IRL中 learn 的 reward function 就是 discriminator。Rewards function 要给 expert 的 demonstration 高分,给 actor 互动的结果低分。
* 考虑两者的过程在IRL中actor 会想办法,从这个已经 learn 出来的 reward function 里面得到高分,然后 iterative 地去循环这其实是与 GAN 的过程是一致的。
1首先如果只收集专家的示范看到某一个状态输出的动作那么所有的结果会是非常有限的。所以我们要收集专家在各种极端状态下的动作或者说要收集更多、更复杂的数据可以使用数据集聚合方法
2另外使用传统意义上的行为克隆智能体会完全复制专家的行为不管专家的行为是否合理智能体都会硬把它记下来。智能体是一个网络网络的容量是有限的。就算给网络足够的训练数据它在训练数据集上得到的正确率往往也不是100\%。所以这个时候,什么该学、什么不该学就变得很重要。实际上,极少数专家的行为是没有意义的,但是使用它们的示范至少不会产生较坏的影响。
3还有在进行行为克隆的时候训练数据和测试数据往往是不匹配的。我们可以用数据集聚合来缓解这个问题。具体来说在训练和测试的时候数据分布是不同的。因为在强化学习中动作会影响到接下来的状态。我们先有状态 $s_1$ ,然后采取动作 $a_1$ ,动作 $a_1$ 会决定接下来的状态 $s_2$ 。如果 $\pi^*$ 与 $\hat{\pi}$ 一模一样,那么我们训练时看到的状态与测试时看到的状态会是一样的,这样模型的泛化性能就会变得比较差。而且, $\pi^*$ 和 $\hat{\pi}$ 可能有一点儿误差,虽然这个误差在监督学习中,由于每一个样本都是独立的,因此影响不大,但对强化学习来说,可能在某个地方,也许智能体无法完全复制专家的行为,最后得到的结果就会差很多。所以行为克隆并不能够完全解决模仿学习的问题,我们可以使用另外一个比较好的方法,即逆强化学习。
**11-3** 逆强化学习是怎么运行的呢?
首先,我们有一个专家,其策略为 $\hat{\pi}$,这个专家负责与环境交互,给我们 $\hat{\tau_1}$ $\hat{\tau_n}$,我们需要将其中的状态-动作序列都记录下来。然后对于演员,其策略为$\pi$,也需要进行一样的交互和序列的记录。接着我们需要指定一个奖励函数,并且保证专家对应的分数一定要比演员的要高,用这个奖励函数继续学习并更新我们的训练,同时套用一般条件下的强化学习方法进行演员网络的更新。在这个过程中,我们也要同时进行一开始指定的奖励函数的更新,使得演员得分越来越高,但是不超过专家的得分。最终的奖励函数应该让专家和演员对应的奖励函数都达到比较高的分数,并且从最终的奖励函数中无法分辨出两者。
**11-4** 逆强化学习方法与生成对抗网络在图像生成中有什么异曲同工之处?
在生成对抗网络中,我们有一些比较好的图片数据集,也有一个生成器,一开始其不知道要生成什么样的图片,只能随机生成。另外,我们有一个判别器,其用来给生成的图片打分,专家生成的图片得分高,生成器生成的图片得分低。有了判别器以后,生成器会想办法去“骗”判别器。生成器希望判别器也给它生成的图片打高分。整个过程与逆强化学习的过程是类似的。我们一一对应起来看。
1生成的图片就是专家的判别结果生成器就是演员生成器会生成很多的图片并让演员与环境进行交互从而产生很多轨迹。这些轨迹与环境交互的记录等价于生成对抗网络中的生成图片。
2逆强化学习中的奖励函数就是判别器。奖励函数给专家的实例打高分给演员的交互结果打低分。
3考虑两者的过程在逆强化学习中演员会想办法从已经学习到的奖励函数中获得高分然后迭代地循环。这个过程其实是与生成对抗网络的训练过程一致的。