我试图在n*n网格世界域中导航代理,使用Q-学习+前馈神经网络作为Q-函数逼近器。基本上,代理应该找到最佳/最短的方式来达到某一终端目标位置(+10奖励)。特工采取的每一步都会得到-1的奖励。在网格世界中,代理也应该避免某些位置(-10奖励,终端状态也是如此)。
到目前为止,我实现了一个Q学习算法,它将所有的Q值保存在一个Q表中,并且代理执行得很好。在接下来的步骤中,我想用神经网络代替Q表,在agent的每一步都进行在线训练。我尝试了一个具有一个隐藏层和四个输出的前馈神经网络,表示网格世界(北、南、东、西)中可能的动作的Q值。作为输入,我使用了一个nxn零矩阵,在代理当前的位置上有一个"1“。
为了达到我的目标,我试图从根本上解决这个问题:
综上所述:神经Q-学习对小网格来说是很好的,而且性能也是好的和可靠的。
->大地图: 10 x 10
现在我试着用神经网络来绘制更大的地图。一开始,我尝试了这个简单的案例。
在我的例子中,神经网络看起来如下:100个输入;4个输出;在一个隐藏层中大约有30个神经元(Relu);我再次使用了一个减少的探索因子来进行贪婪策略;超过200次,学习率从0.1下降到0.015,以增加稳定性。
第一,在离散输入向量引起的单个位置之间存在收敛和插值问题。为了解决这个问题,我在向量中添加了一些邻域位置,其值取决于它们到当前位置的距离。这大大提高了学习水平,政策也越来越好。上面的图片显示了24个神经元的表现。
简单的情况由网络来解决,但只有通过大量的参数调整(神经元数目、探索因子、学习率)和特殊的输入变换才能解决。
以下是我仍未解决的问题:
(1)我的网络能够在10×10的映射中解决非常简单的案例和例子,但随着问题变得更加复杂,它失败了。在非常可能失败的情况下,网络没有改变以找到正确的策略。我对任何能在这种情况下提高性能的想法都持开放的态度。
(2)是否有更明智的方法来转换网络的输入向量?我确信,在输入向量中加入相邻的正电子,一方面改善了Q值在地图上的插值,另一方面也使训练网络特殊/重要位置变得更加困难。我已经在早期尝试过标准的笛卡儿二维输入(x/y),但失败了。
(3)与具有反向传播的前馈网络相比,是否有另一种网络类型在Q-函数近似下产生更好的结果?你见过项目吗?在那里,FF-nn用更大的地图表现很好?
发布于 2016-06-21 07:46:50
众所周知,Q-学习+作为Q-函数逼近器的前馈神经网络即使在简单问题Boyan & Moore ( 1995 )中也可能失败。
Rich在他的网站的FAQ中有一个与此相关的问题。
一种可能的解释是Barreto & Anderson,2008所描述的所谓的干扰现象。
当一个状态-动作对的更新改变其他对的Q值时,可能是在错误的方向上发生干扰。 干扰与泛化自然相关,在传统的监督学习中也会发生干扰。然而,在强化学习范式中,它的影响往往更有害。这样做的原因有两个。首先,干扰和引导的结合很容易变得不稳定,因为更新不再是严格本地的。由(4)和(5)导出的算法的收敛性证明是基于这些算子是压缩映射的事实,即它们的连续应用导致序列收敛到一个不动点,这是Bellman方程14,36的解。然而,当使用逼近器时,这种渐近收敛性就丧失了, 另一个不稳定的原因是,在在线强化学习中,输入数据的分布取决于当前的策略。根据系统的动态,代理可以在状态空间的某个区域停留一段时间,而状态空间并不代表整个域。在这种情况下,学习算法可能会分配函数逼近器的过多资源来表示该区域,可能会“忘记”先前存储的信息。 一种解决干扰问题的方法是使用局部函数逼近器。每个基函数相互独立的程度越高,这个问题就越不严重(在极限中,每个状态都有一个基函数,对应于查找表的情况) 86。径向基函数(RBFs) 52是一类被广泛应用于逼近的局部函数。
所以,在你的问题(n*n网格世界)中,RBF神经网络应该会产生更好的结果。
参考资料
Boyan,J.A.& Moore,A.W. (1995)强化学习中的推广:安全地逼近价值函数。乳头-7。加利福尼亚州圣马特奥:摩根·考夫曼。
Andréda Motta Salles Barreto & Charles W. Anderson (2008)强化学习中数值函数逼近的限制梯度下降算法,人工智能172 (2008) 454-482
https://stackoverflow.com/questions/37922621
复制相似问题