我用C ++做了一个简单的Tron游戏,用一个隐藏层创建了一个MLP游戏。我已经在这个神经网络中实现了Q-learning,但是,它并没有导致代理商随着时间的推移赢得更多游戏(即使在100万次游戏之后)。我将尝试在文本中解释我做了什么,希望有人能发现错误,这可能会导致这个问题。
在每个州都有四种可能的动作(北,东,南,西),奖励在比赛结束时(丢失为-1,平局为0,胜利为1)。
我初始化4个MLP,每个可能的动作一个,有100个输入节点(整个游戏网格10x10),如果玩家本身在那里,每个点为1,如果该点为空则为0,如果是对手则为-1已经访问过这一点。然后有50个隐藏节点和1个输出节点(我也试过一个带有4个输出节点的网络,但这也无济于事)。权重在-0.5和0.5之间随机选择
在每个时代,我都会将随机放置在网格中的2个代理初始化游戏环境。然后我在while循环中运行游戏,直到游戏结束,然后重置游戏环境。在这个while循环中,我执行以下操作。
好像我的qValues要么非常低(0.0001的顺序),要么非常接近1(0.999)。如果我在每10,000个游戏中查看错误术语,它似乎并没有减少。
我开始使用可以学习XOR功能的MLP,并将其用于Q-learning。也许XOR案例中的一些基本假设是不同的,并导致Q学习的问题?
或许它是稀疏输入(只是0,1或-1的100倍),这使得无法学习?
建议真的很感激!
答案 0 :(得分:2)
有几个因素难以将MLP与Q-learning结合起来,特别是对于该领域的新手。 Rich Sutton(强化学习勋章之一)在他的web site与您的问题相关的常见问题解答中有一个问题。所以我建议你阅读那份文件。
众所周知,Q-Learning +作为Q函数逼近器的前馈神经网络即使在简单问题中也会失败[Boyan&摩尔,1995年]。
可能的解释是[Barreto& Sons]中描述的称为 interference 的现象。安德森,2008年]:
当一个状态 - 动作对的更新改变其他对的Q值时,干扰发生,可能是在错误的方向上。
干扰自然与泛化有关,也发生在传统的监督学习中。然而,在强化学习范式中,其影响往往更有害。原因是双重的。首先,干扰和自举的组合很容易变得不稳定,因为更新不再是严格本地的。从(4)和(5)得到的算法的收敛证明是基于这些算子是收缩映射的事实,也就是说,它们的连续应用导致收敛到一个固定点的序列,这是Bellman方程的解。 [14,36]。然而,当使用近似值时,这种渐近收敛会丢失,[...]
另一个不稳定的根源是这样一个事实,即在线强化学习中,传入数据的分布取决于当前的政策。根据系统的动态,代理可以在状态空间的区域中保留一段时间,该区域不代表整个域。在这种情况下,学习算法可以分配函数逼近器的过多资源来表示该区域,可能“忘记”先前存储的信息。
总之,从MLP开始近似Q函数,这不是一个好主意。
<强>参考强>
Boyan,J。A.&amp; Moore,A.W。(1995)强化学习中的推广:安全地逼近价值函数。 NIPS-7。 San Mateo,CA:Morgan Kaufmann。
AndrédaMotta Salles Barreto&amp; Charles W. Anderson(2008)Restricted gradient-descent算法用于强化学习中的价值函数逼近,人工智能172(2008)454-482
答案 1 :(得分:0)
我认为学习率太高(0.05)。当我把它降低到0.005 / 0.001时,这解决了问题。