Model-based和Model-free方法对比
Model-based:
- 一旦model学好后,就是采用On-Policy的算法;
- 一旦model学好后,就不需要与真实环境有过多地互动;
- 会比Model-free方法有更高地采样效率;
- 模型如果有问题的话,会产生比较大地误差。
Model-free:
- 拥有最好地表现,毕竟是拿的与真实环境互动的数据;
- 会有一些不稳定性,并且有样本利用率低,需要大量的训练数据的问题。
Model-based方法流程
先通过Q值和policy来和真实环境产生动作的交互,并且从环境中得到真实轨迹的数据(experience)。然后通过构建model得到转移概率和奖励函数,再从虚拟环境中采样数据。最后利用采样数据来更新Q值和policy。
Q-planning算法
Q-planning算法的基础是一个Q表,Q表存储的是
(
S
,
A
,
R
,
S
′
)
(S,A,R,S')
(S,A,R,S′)这样的四元组。
- 首先从动作集和状态集中随机选择一个状态 S S S和动作 A A A;
- 把 S , A S,A S,A传入已构建好的模型,然后从模型中采样出下一个reward R R R和下一个state S ′ S' S′;
- 根据 ( S , A , R , S ′ ) (S,A,R,S') (S,A,R,S′)来使用一步的Q-learning表格更新。
Dyna-Q算法
Dyna-Q算法是off-policy算法和on-policy算法的结合:
即这里还利用了与真实环境交互得到的数据来对Q表进行了更新
对于算法的介绍如下:
- 随机初始化一个状态 S S S;
- 利用 Q Q Q函数和现有的状态 S S S,以及 ϵ − g r e e d y \epsilon-greedy ϵ−greedy策略来得到动作 A A A;
- 执行动作 A A A,以及观察执行后相应的 R R R和 S ′ S' S′;
- 根据最新的采样直接利用Q-learning算法进行Q值的更新;
- 利用得到的 R , S ′ R,S' R,S′来更新 M o d e l ( S , A ) Model(S,A) Model(S,A),( M o d e l ( S , A ) Model(S,A) Model(S,A)的更新方式可以利用类似监督学习的方法,即给定 ( S , A ) (S,A) (S,A)来预测 ( R , S ′ ) (R,S') (R,S′));
- 重复n次:
- 随机采样一个状态 S S S;
- 随机采样一个在状态 S S S下做过的动作;
- 根据 M o d e l ( S , A ′ ) Model(S,A') Model(S,A′)来得到虚拟环境下的奖励 R , S ′ R,S' R,S′;
- 根据Q-learning来对Q表进行更新。
这是Dyna-Q算法在简单的Maze环境下的收敛情况,我们可以看到在n取的越大的时候,Agent的收敛性越好。
Model-Based方法存在的问题
- 自己创建的Model是否真的能够从理论上说明,它能够提升数据使用的效率;
- 模型在大多数情况下是不准确的,你是否应该相信这一模型;
- 如何利用好自己的模型得到更好的策略。