前置知识:强化学习入门、Q-Learning
Dyna 框架
Dyna 是一种经典的强化学习算法
- Dyna 会尝试从环境中学习两个独立模型(1)状态转移模型 $P$,根据当前状态 $s$ 和动作 $a$,预测下一个的状态 $s'$(2)奖励预测模型 $R$,根据当前状态 $s$ 和动作 $a$,预测环境的反馈奖励 $r$
- Dyna 作为一类算法的总称,可以将基于模型的强化学习与无模型的强化学习进行组合,从而使得策略/价值函数既可以从环境模型中学习,也可以在与真实环境交互中学习,结合二者的优势
- Dyna 的环境模型一般为查表法或监督学习的预测方法
Dyna-Q
Dyna-Q 算法主要思想:
- 将 Q-Learning 纳入 Dyna 框架的强化学习算法
- 使用 Q-planning 来实现基于模型的环境模拟数据生成
- 用模拟数据和真实数据一起改进策略(标准 Q-Learning)
Dyna-Q 算法实现过程:
- 对于任意一个状态 $s$ 和任意一个动作 $a$,随机初始化状态价值 $Q(s,a)$ 、奖励预测模型 $R(s,a)$ 和状态转移模型 $P(s,a)$
- 当状态为 $S$ 时,此时根据 $\epsilon$ -贪婪算法选择动作 $A$,并与真实环境交互,得到新状态 $S'$ 和环境反馈的奖励 $r$
- 更新价值函数:$Q(S,A) =Q(S,A) + \alpha[r +\gamma\max_aQ(S',a) -Q(S,A)]$
- 用 $(S,A,S')$ 更新状态转移模型 $P$;用 $(S,A,R)$ 更新奖励预测模型 $R$
- Q-planning(1)固定状态 $S$,根据历史情况随机选择一个动作 $A_{old}$;(2)借助环境模型得到新状态 $S_{pred}'=P(S,A_{old})$ 和预测奖励 $r_{pred}=R(S,A_{old})$;(3)更新价值函数:$Q(S,A) =Q(S,A) + \alpha[r_{pred} +\gamma\max_aQ(S'_{pred},a) -Q(S,A)]$(4)重复(1)~(3)N 次
- 重复步骤 2~5,直到模型收敛或达到最大迭代次数
Dyna-2
Dyna-2 是对 Dyna 算法框架的改进
- 将真实环境交互结果与环境模型预测结果进行了分离
- 将记忆分为永久性记忆(permanent memory)和瞬时记忆(transient memory), 其中永久性记忆利用实际的经验来更新,瞬时记忆利用模型模拟经验来更新
Dyna-2 的流程总结:
- 先基于环境模型进行仿真轨迹模拟,并评估出当前动作价值
- 再根据模拟动作价值和价值函数结果,选择实际的执行动作
- 价值函数一般基于 TD 误差进行更新,类似于 SARSA 算法