Files
easy-rl/docs/chapter11/chapter11_questions&keywords.md
2022-09-21 16:45:58 +08:00

43 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第十一章 模仿学习
## 关键词
- **模仿学习imitation learningIL**其讨论我们没有奖励或者无法定义奖励但是有与环境进行交互时怎么进行智能体的学习。这与我们平时处理的问题有些类似因为通常我们无法从环境中得到明确的奖励。模仿学习又被称为示范学习learning from demonstration、学徒学习apprenticeship learning以及观察学习learning by watching等。
- **行为克隆behavior cloning**:类似于机器学习中的监督学习,通过收集专家的状态与动作等对应信息,来训练我们的网络。在使用时,输入状态就可以输出对应的动作。
- **数据集聚合dataset aggregation**:用来应对在行为克隆中专家提供不到数据的情况,其希望收集专家在各种极端状态下的动作。
- **逆强化学习inverse reinforcement learningIRL**:逆强化学习先找出奖励函数,再用强化学习找出最优演员。这么做是因为我们没有环境中的奖励,但是有专家的示范,使用逆强化学习,我们可以推断专家是因为何种奖励函数才会采取这些动作。有了奖励函数以后就可以使用一般的强化学习方法找出最优演员。
- **第三人称视角模仿学习third person imitation learning**:一种把第三人称视角所观察到的经验泛化为第一人称视角的经验的技术。
## 习题
**11-1** 具体的模仿学习方法有哪些?
行为克隆、逆强化学习或者称为逆最优控制。
**11-2** 行为克隆存在哪些问题呢?对应的解决方法有哪些?
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考虑两者的过程在逆强化学习中演员会想办法从已经学习到的奖励函数中获得高分然后迭代地循环。这个过程其实是与生成对抗网络的训练过程一致的。