- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我用 C++ 制作了一个简单的 Tron 游戏和一个带有一个隐藏层的 MLP。我已经在这个神经网络中实现了 Q-learning,但是,它并没有导致代理随着时间的推移赢得更多的比赛(即使在 100 万场比赛之后)。我将尝试在文本中解释我所做的,希望有人能发现可能导致此问题的错误。
在每个州都有四种可能的移动方式(北、东、南、西),奖励在游戏结束时显示(-1 输,0 平,1 赢)。
我初始化了 4 个 MLP,每个可能的 Action 一个,有 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-learning 出现问题?
或者可能是稀疏输入(只是 0、1 或 -1 的 100 倍)导致无法学习?
非常感谢您的建议!
最佳答案
有几个因素使得 MLP 与 Q 学习难以结合,特别是对于该领域的新手。 Rich Sutton(强化学习先锋之一)在他的 web site 的常见问题解答中有一个问题与你的问题有关。所以我建议您阅读该文档。
众所周知,Q 学习 + 前馈神经网络作为 Q 函数逼近器即使在简单问题中也会失败 [Boyan & Moore,1995]。
一种可能的解释是 [Barreto & Anderson, 2008] 中描述的称为干扰的现象:
Interference happens when the update of one state–action pair changes the Q-values of other pairs, possibly in the wrong direction.
Interference is naturally associated with generalization, and also happens in conventional supervised learning. Nevertheless, in the reinforcement learning paradigm its effects tend to be much more harmful. The reason for this is twofold. First, the combination of interference and bootstrapping can easily become unstable, since the updates are no longer strictly local. The convergence proofs for the algorithms derived from (4) and (5) are based on the fact that these operators are contraction mappings, that is, their successive application results in a sequence converging to a fixed point which is the solution for the Bellman equation [14,36]. When using approximators, however, this asymptotic convergence is lost, [...]
Another source of instability is a consequence of the fact that in on-line reinforcement learning the distribution of the incoming data depends on the current policy. Depending on the dynamics of the system, the agent can remain for some time in a region of the state space which is not representative of the entire domain. In this situation, the learning algorithm may allocate excessive resources of the function approximator to represent that region, possibly “forgetting” the previous stored information.
总而言之,从 MLP 开始逼近 Q 函数并不是一个好主意。
引用资料
Boyan, J. A. & Moore, A. W. (1995) 强化学习中的泛化:安全地逼近值(value)函数。 NIPS-7。加利福尼亚州圣马特奥市:Morgan Kaufmann。
André da Motta Salles Barreto & Charles W. Anderson (2008) Restricted gradient-descent algorithm for value-function approximation in reinforcement learning, Artificial Intelligence 172 (2008) 454–482
关于c++ - 神经网络中的 Q 学习不是 'learning',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40129386/
例子一 function first(a, b) { return a + b; } function second() { return Math.floor(Math.sqrt(a
我想证明或证伪forall (P Q : Prop), (P -> Q) -> (Q -> P) -> P = Q.在柯克。这是我的方法。 Inductive True2 : Prop := | O
程序提取数字,我希望它继续循环,直到用户键入“Q”/“q”键。例如,当用户按下“O”键时,程序应打印他们输入的数字的个位数,对于用户输入的任何 3 位数字,依此类推。当我现在运行代码时,没有输出,但也
我收到以下代码的警告,我不明白为什么。 类似于这个问题:Unhandled rejection reasons (should be empty) 但是…… 我很确定我正在处理所有错误,那么为什么会出
我正在使用 Express 构建一个博客站点,并且是第一次使用 Q,我希望能够利用资深 Q 用户的知识。 我向我的数据库发出一个请求以加载帖子数据,另一个请求命中 Instagram API(除非它已
我刚刚找到有关 apache solr 的信息,并且在我成功安装了带有 Tomcat 的 apache Solr 之后。然后我开始使用 Apache Solr 进行搜索。 但我对 Apache Sol
我在 Stack Overflow post 上看到了下图 但是,我对“p OR q”、“p AND q”的结果感到困惑,其中“p”等于“false”,“q”等于“unknown”。 在图中,“p O
有人向我提出了这个问题。 n = 77 n = p*q p and q is a prime number 用蛮力找到p和q。 到目前为止我的代码: public class If { pub
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 4 年前。 Improve
我注意到如果 .then()回调由于任何错误(例如对 undefined variable 的操作)而失败,并且没有 .catch()相关联,该错误将被静默忽略。 这在开发过程中很不舒服。 例如,此代
以下示例打印“SAME”: if (q/\\a/ eq q/\a/) { print "SAME\n"; } else { print "DIFFERENT\n"; } 我理解这与 d
我画了 qq 图多元回归,得到了下面的图。谁能告诉我为什么红线下面有两个点?这些点对我的模型有影响吗? 我使用下面的代码来绘制图表。 from sklearn.linear_model import
我确定 int q[6][4] 中的 q 的类型为 (**q)[4],即, 指向大小为 4 的整数数组的指针。但是我的书(我发现它很可疑!!)说函数定义中的 int q[][4] 部分 void fo
我试图用 tatics [intros]、[apply]、[assumption]、[destruct]、[left]、[right]、[split] 来证明这个引理,但失败了。谁能教教我怎么证明?
使用 q.all 时,我的数组中的立即函数似乎没有执行。每个函数都应该创建一个已解决的 promise ,将其打印到控制台,然后返回它。我没有看到控制台输出,但 Q.all 似乎很满意,并用 2 个空
我想在 OpenAI 的 Bipedal Walker v2 中实现 Q 学习,但在寻找教程后,它们似乎总是有限环境,这使得 Q 矩阵和奖励矩阵易于初始化。 例如:http://mnemstudio.
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我正在创建一个基于 AngularJS、Breeze 和 RequireJS 的单页应用程序。在使用 requirejs 设置 AMD 以使用 Angular 和 Breeze 时,我遇到了 Bree
这个问题在这里已经有了答案: Difference between defer().promise and Promise (1 个回答) 关闭 6 年前。 在 Angular 中,以下代码片段似乎
我写了一个 tcp 服务器和一个 tcp 客户端,客户端只向服务器发送数据并打印它写入了多少字节,服务器只接受连接,然后我使用 netstat 显示套接字的 Recv-Q 和 Send-问,我发现 R
我是一名优秀的程序员,十分优秀!