本文是伯克利深度强化学习课程CS294模仿学习部分1的笔记,源代码部分见GitHub

监督学习

机器学习中最为常见的方式就是监督学习,自然可以将这种方法应用到强化学习中,也就是将状态(或者观测)作为输入、动作作为输出、专家关于状态做出的动作作为标记进行机器学习。监督学习的方法听起来似乎不错,但是它存在着理论上的问题。

图中黑色轨迹表示训练数据中状态随时间变化的轨迹,然后在学习器面对环境的时候,产生的动作和训练数据中的动作有细微的差别,这就有可能导致出现训练数据中没有出现过的状态,这就更有可能导致学习器做出和最佳动作有偏差的决策,这类误差积小成大,学习器的状态轨迹会产生偏移。

一种可行的方法就是对可能产生偏移得到的状态进行采样标记,这个对于自动驾驶2(或飞行3)任务来说非常有效。采用三个摄像头采集训练数据,“机器人”使用中间摄像头获取当前状态的观测,如果在某时间产生了一些偏差,那么由于学习器也学习了两侧摄像头采集的数据,因此也就可以根据产生偏差后的状态做出正确的决策。

DAgger算法

在自动驾驶任务中,我们很清楚状态的分布和容易产生偏移的方向,但是更多情况下是没有这些信息的,这就需要采用DAgger算法来进行模仿学习。

DAgger算法的逻辑如下:

  1. 从标记数据学习得到策略
  2. 执行策略得到数据
  3. 专家标记数据
  4. 合并数据:
  5. 回到1反复执行一定次数。

DAgger算法利用偏移轨迹进行采用,以此让学习器掌握处理偏移状态的能力。

模仿学习实验4

热身部分

在开始模仿学习之前,需要实现一个神经网络从数据中学习策略。对于全连接神经网络来说,通常使用一层隐层就足够了。此处的动作是连续的,所以这是一个回归问题,神经网络采用均方差作为损失函数。实验中使用的神经网络结果如下:

为了能够使得神经网络可以根据问题的复杂程度进行调整,隐层的单元数目设置为和输入层相同。尝试训练一小部分来自Hopper-v2环境的专家数据,得到的损失函数变化如下:

行为克隆

使用神经网络去拟合专家标记,最终得到的结果如下:

环境 专家平均得分 专家得分标准差 模仿平均得分 模仿得分标准差
Ant-v2 4635 864 4798 140
HalfCheetah-v2 4134 65 3665 137
Hopper-v2 3778 2 301 28
Humanoid-v2 10404 50 601 232
Reacher-v2 -3 1 -13 15
Walker2d-v2 5516 59 939 595

运行参数:20次模拟,训练批次大小为1000,训练迭代次数为10000

在表中,也就只有Ant-v2模仿到了专家的精髓,其他环境中模仿学习结果和专家存在或大或小的差距。

DAgger算法

正如前文所说,普通模仿学习并不能让学习器稳定地处理面对的观测(状态),接下来尝试一DAgger算法:

环境 专家平均得分 专家得分标准差 模仿平均得分 模仿得分标准差
Ant-v2 4610 936 4796 124
HalfCheetah-v2 4126 94 3873 137
Hopper-v2 3779 2 1394 137
Humanoid-v2 10398 53 10383 99
Reacher-v2 -3 1 -4 2
Walker2d-v2 5528 45 5293 921

运行参数:共进行5次DAgger采样,每次采样进行20次模拟,训练批次大小为1000,训练迭代次数为10000

在Ant-v2、Humanoid-v2和Reacher-v2环境中,DAgger算法得到了专家水平的策略。

循环神经网络

导致模型无法拟合的一种可能就是决策过程不满足马尔科夫性质5 ,也就是说决策动作不仅仅和当前的状态(有关),也可能和之前的一些状态有关。对于这类问题,可以采用循环神经网络来解决。将上文中神经网络的隐层替换为LSTM,按照时序向LSTM输入当前最近一端时间内的状态,最后得到输出,循环神经网络的展开图如下:

理论上,循环神经网络的循环次数越多,拟合专家决策的能力越强。但是,循环次数的增加也会带来运算的负担。以下就是采用3次循环得到的结果:

环境 专家平均得分 专家得分标准差 模仿平均得分 模仿得分标准差
Ant-v2 4854 93 4798 91
HalfCheetah-v2 4127 84 4126 80
Hopper-v2 3776 4 3777 3
Humanoid-v2 9929 1973 8809 3388
Reacher-v2 -4 1 -3 1
Walker2d-v2 5447 373 5516 61

运行参数:循环步长为5,共进行5次DAgger采样,每次采样进行20次模拟,训练批次大小为1000,训练迭代次数为10000

可以发现,在使用了循环神经网络之后,模仿学习均到达了专家水平。虽然模仿学习可以达到不错的水平,但是在很多情况下,引入专家的成本很高,甚至不存在专家提供参考,而是需要强化学习算法自行探索,下一节将介绍第一个无监督强化学习算法:策略梯度算法

参考资料