我已经在一个大小(n x n)的网格上实现了Q学习,中间只有一个奖励100 . 代理人通过以下机构学习1000个历元以达到目标:他以概率0.8选择具有最高状态 - 动作 - 值的移动并选择随机移动0.2 . 移动后,状态动作值由Q学习规则更新 .
现在我进行了以下实验:除了底部的邻居之外,目标旁边的所有字段都获得-100的奖励 . 在学习了1000个时代之后,代理人明显避免走向最高位并且最频繁地从底部到达目标 .
在学习之后将底部邻居的奖励设置为-100并且将顶部邻居设置为0并且在坚持状态动作值映射的同时再次开始学习1000个时期 . 这真的太可怕了!代理需要很长时间才能找到目标(在9x9网格上最多3分钟) . 检查路径后,我看到代理人花了很多时间在两个状态之间反弹,如(0,0) - >(1,0) - >(0,0) - >(1,0)......
我很难想象这种行为是否有意义 . 有人遇到过这样的情况吗?
4 回答
Q学习取决于探索 .
如果您正在使用e-greedy并且显着减少了epsilon,则代理程序不太可能适应 .
如果您在州空间的变化远离学习政策所遵循的轨迹,则可能难以到达这些区域 .
我建议你看一下你的epsilon值以及你随着时间的推移减少它们的速度 .
我想更多的信息可以帮助我成为更多的证书,但你所描述的是我改变了这一点 . 我的直觉告诉我,对于代理人而言,这比仅仅移动目标更难,因为你已经改变了你希望它达到目标的方式 .
移动“墙”后,您可以为多次迭代增加操作选择策略的随机性 . 这可能会减少代理找到目标的新路径所需的时间 .
这对于标准的Q学习算法来说非常典型 . 正如Concurrent Q-Learning: ReinforcementLearning for Dynamic Goalsand Environments中所述:
然而,存在不同的算法,例如上述论文中描述的那种在这种情况下做得更好 .
你能提供代码吗?对我来说这种行为看起来令人惊讶 .
Imho代理人应该能够忘掉以前学到的知识 . 在强化学习中不应该有“信心”之类的东西 . 网格看起来像
在最后的尝试 . 在最短路径上随机进入目标的概率是
0.2*1/3 * (0.8+0.2*1/9)
. 基本上随机走向对角然后下降 . 因此,算法应该慢慢更新状态(1,1)
的Q
值 . 实际上,更新此值的值为5%
. 如果你的学习率不是太低,它最终会更新 . 注意到达目标的所有其他路径将慢慢将其他路径拉向零 .你说它在前两个州之间跳跃 . 这向我表明你没有折扣因素 . 这可能会导致两个状态
(0,0)
和(1,0)
具有相当好的Q
值,但这些是"self rewarding" . 或者,您可能忘记在更新函数中减去旧值