与Policy Gradients的不一样之处在于,这两个算法评估某个状态s执行某个动做a的指望奖励,即Q(s,a)算法
Q(s,a) 有两种方法计算方法,第一种直接查表或者模型预估,Q(s, a) = checkTable(s, a),这个在训练初期是很是不许确的;第二种方法是经过"一步蒙特卡洛"方法获取,假设执行a后状态是s',且s'执行了动做了a',Q’(s, a) = 当前状态奖励 + 衰减系数 * Q(s',a'),近似于一个动态规划问题,当游戏结束,就只有当前状态奖励。但与动态规划不一样的是,这个递归关系不会等到游戏结束以后才更新,而是走一步更新一次。学习
Q(s, a)表示了模型根据历史数据的预测奖励,而Q'(s,a)表示对当前行动的预测奖励。一个好的模型,Q(s,a) 和 Q'(s,a)应该尽可能接近,同时又为了迭代的稳定性,新的Q(s, a) 更新为老Q(s,a)和Q'(s,a)的一个加权平均值(学习率控制)。spa
由于这种方法预估的是奖励值而不是几率分布,因此通常采用奖励最大的动做,这个训练带来了问题,由于在某些状态下可能永远只选择某个动做,要解决这个方法,须要引入epsilon-greedy,即以大几率选择最大奖励动做,保证探索的聚焦性,同时以小几率随机选择某个动做,保证探索空间完备性。htm
因为引入了epsilon-greedy,在Q’(s, a) 迭代公式里,s'该选择哪一个动做a‘来计算出现两种选择,是选择最大奖励动做,仍是和当前s的选择动做的策略保持一致以小几率随机选择某个动做?递归
游戏
get