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

动作规划

在之前的各类算法中,对于状态施加动作后的状态变化过程都是一无所知的,但是如果知道状态的变化函数,那么个给出初始状态,就能给出整个最优的动作轨迹,这就是规划问题。

如果状态变化是确定的,动作规划问题的定义是

如果状态变化是不确定的,那么问题的定义就是

随机优化

最简单的方法就是随机采样,然后选择最优的采样:

  1. 从某个分布采样动作
  2. 根据选择

交叉熵方法

交叉熵方法尝试拟合最优动作的分布:

  1. 从分布(通常是高斯分布)采样得到
  2. 求得
  3. 在其中选出最优的,其中
  4. 使用重新拟合

以上都是比较简单的方法,更高级的方法是采用蒙特卡洛树搜索3

模型学习

如果状态变化过程无法显式编写出来,那么就需要从数据中学习得到模型。从数据中学习模型和模仿学习非常类似,只不过模型需要输出下一个状态而不是动作。可以想到算法的一个初步版本:

  1. 运行弱智版策略(例如随机策略)采集数据
  2. 以最小化为目标学习得到动态模型
  3. 在模型之上规划动作。

但是以上算法依然存在问题,第一步采样分布和状态的实际分布可能不一样,这可能会导致学习得到的模型准确度不理想。所以更加理想的方法是采样类似于DAgger的算法:

  1. 运行弱智策略(例如随机策略)采集数据
  2. 迭代N次:
    1. 以最小化为目标学习得到动态模型
    2. 采样新的数据若干次:
      1. 在模型之上规划动作;
      2. 执行规划动作,观察下一个执行后的状态
      3. 添加到数据集

基于模型强化学习实验4

虽然随机优化非常弱智,但是总体上看起来还是有提高的。

参考文献