我已经使用python实现了VI(Value Iteration),PI(Policy Iteration)和QLearning算法 . 比较结果后,我发现了一些东西 . VI和PI算法汇聚于相同的实用程序和策略 . With same parameters, QLearning algorithm converge to different utilities, but same policies with VI and PI algorithms. Is this something normal? 我读了很多关于MDP和RL的论文和书籍,但是找不到任何能说明VI-PI算法的实用程序是否应该与QLearning收敛到相同实用程序的东西 .
以下信息是关于我的网格世界和结果 .
MY GRID WORLD
-
States => {s0,s1,...,s10}
-
动作=> {a0,a1,a2,a3}其中:a0 =向上,a1 =向右,a2 =向下,a3 =所有状态为左
-
有4个终端状态,分别有1,1,-10,10个奖励 .
-
初始状态是s6
-
操作的转移概率为 P , (1 - p) / 2 为该操作的左侧或右侧 . (例如:如果P = 0.8,当代理尝试上升时,80%的机会代理会上升,10%的机会代理将会正确,10%左右 . )
RESULTS
-
VI和PI算法结果,奖励= -0.02,折扣因子= 0.8,概率= 0.8
-
VI在50次迭代后收敛,PI在3次迭代后收敛
-
QLearning算法结果,奖励= -0.02,折扣因子= 0.8,学习率= 0.1,Epsilon(用于探索)= 0.1
-
QLearning结果图像上的结果实用程序是每个状态的最大Q(s,a)对 .
qLearning_1million_10million_iterations_results.png
此外,我还注意到,当QLearning进行100万次迭代时,距离10奖励终端同样远的状态具有相同的效用 . 代理似乎并不关心它是否会从接近-10终端的路径获得奖励,而代理商则关注VI和PI算法 . Is this because, in QLearning, we don't know the transition probability of environment?
1 回答
如果状态和动作空间是有限的,就像你的问题一样,当转换的数量接近无穷大并且在以下条件下时,
Q-learning
算法应该渐近地收敛到最优效用(也就是Q函数):,
其中
n
是过渡次数,a
是学习率 . 这种情况需要随着学习进展而更新学习率 . 一个典型的选择可能是使用a_n = 1/n
. 然而,在实践中,学习速率表可能需要根据问题进行一些调整 .另一方面,另一个收敛条件包括无限地更新所有状态 - 动作对(在asymtotical意义上) . 这可以通过保持大于零的勘探率来实现 .
因此,在您的情况下,您需要降低学习率 .