强化学习需要花费很多经验元组来收敛, 需要通过现实中迈出一步(做出交易)来获得, 而这是十分代价高昂的. Dyna-Q解决了这个问题, 通过建立过渡矩阵T和回报矩阵R来工作. 在与世界实际交互后, 伪造出更多的交互, 用来更新Q table, 可以加快模型收敛速度.
记住Q-Learning是模型无关的, 也就是不依赖于T和R, Dyna-Q是将模型无关和模型相关的方法结合到一起的, 是对Q-Learning的改进
Dyna-Q在通过Q-Learning从真实世界获得体验后, 更新模型的T, R矩阵, 然后通过随机方式虚拟交互体验, 再更新Q table, 这个过程迭代100-200次, 之后再次通过Q-Learning从真实世界获得体验
Q table由许多组体验元组组成
学习T矩阵
T矩阵记录s, a -> s'发生的概率
通过观察与现实交互获得的所有[s,a,s'], 将在状态s下采取行动a所发生的对应s'状态的次数添加进(T-count)这个表格, 该表格用来记录[s,a,s']发生的次数. 初始化值很小是因为要避免除以0
将状态s'发生的次数除以状态s下采取行动a发生所有状态的数量, 得到s'发生的概率, 即为T矩阵
学习R矩阵
- R[s, a] 表示在状态s执行行动a获得的预期奖励
- r 表示与现实世界互动时获得的即时奖励
R是模型, r是从体验元组获得的奖励, 每次有了真实体验后, 都更新这个模型, 公式如下:
α是学习率, 通常是0.2
当新值αr的幅度小于旧值R, 模型就慢慢收敛
网友评论