几句话总结一个算法之Q-Learning与Sarsa
-
与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)的一个加权平均值(学习率控制)。
-
因为这种方法预估的是奖励值而不是概率分布,所以一般采用奖励最大的动作,这个训练带来了问题,因为在某些状态下可能永远只选择某个动作,要解决这个方法,需要引入epsilon-greedy,即以大概率选择最大奖励动作,保证探索的聚焦性,同时以小概率随机选择某个动作,保证探索空间完备性。
-
由于引入了epsilon-greedy,在Q’(s, a) 迭代公式里,s'该选择哪个动作a‘来计算出现两种选择,是选择最大奖励动作,还是和当前s的选择动作的策略保持一致以小概率随机选择某个动作?
掰掰~