是通过Q学习解决FrozenLake 4x4的代码。在培训部分,为什么我们要播放20集测试环境,而不是每个循环只播放1集? 我尝试了两次迭代:
在测试环境中进行20次迭代时,代理会进行超过16000次尝试收敛。
在进行1次测试环境迭代时,代理会在不到1000次尝试中收敛。
library(tidyverse)
zed %>%
fill(possessionName) %>%
mutate(output_col = c(1, +(possessionName != lag(possessionName))[-1]))
答案 0 :(得分:0)
在此示例中,TEST_EPISODES
用于更改求解标准。使用TEST_EPISODES = 1
,只要最近的游戏得分> 0.80,就认为该游戏已解决;使用TEST_EPISODES = 20
,最近20轮的平均得分必须> 0.80,才能考虑该游戏的解决。 / p>
由于该游戏具有随机动作,即每次以相同状态进行相同动作时,您不会获得相同的结果,因此您推动TEST_EPISODES
越高,该解决方案就越可能可靠成为。使用TEST_EPISODES = 1
时,如果脚本只是偶然在第一次尝试中随机找到目标,则该脚本将认为游戏已解决,但是在模型较差的情况下连续执行20次的可能性大大降低。
与第一次达到目标的速度相比,对于这类问题而言,大量情节的平均值通常是更好的指标。想象一下,如果您必须在这种环境下工作并且您的生活取决于安全地达到目标,那么您可能希望它学习直到分数阈值非常接近1。