Gail是一种使用PPO更新方法的模仿学习,
相较于PPO 其需要一个额外的判别器D,D的作用是用来区分agent做出的动作和expert做出的动作,越接近于expert的动作 D的输出越接近1.
Gail有两种使用方式:
原版:对于agent做出的动作a,r(s, a) = − log(1 − D(s, a)) ,被判别器判定越接近专家行为,奖励就越大,这种方式适用于有生存奖励的RL环境,比如说Atari游戏,但对于想尽快结束的环境可能不适合,如果用这种方式也需要结合环境原本奖励并把Gail奖励的系数调低。
另外一种使用Gail的方法r(s, a) = log(D(s, a)),越接近于专家行为给的penalty越小,但这可能不是一种很好的使用方法,因为这种使用包含了强先验知识,在论文《DISCRIMINATOR-ACTOR-CRITIC: ADDRESSING SAMPLE INEFFICIENCY AND REWARD BIAS IN ADVERSARIAL IMITATION LEARNING》中,这种方式即使设置D() = 0.5 仍能取得一定的效果。
Gail是可以和BC, RL一起使用的, ML-agents, Unity 这个库中有实现: