【发布时间】:2018-11-20 20:36:13
【问题描述】:
我对深度学习和神经网络还很陌生,我正在尝试实现一个能够玩我的简单游戏的代理
因此,我们的目标是在到达目的地(橙色单元格)的同时,在可用的步数内(总是从玩家到终点单元格的距离)获得尽可能高的分数(访问过的单元格的总和)。
我的网络模型非常简单(我使用的是tflearn)
network = input_data(shape=[None, 13, 1], name='input')
network = fully_connected(
network,
13**2,
activation='relu'
)
network = fully_connected(network, 1, activation='linear')
network = regression(
network,
optimizer='adam',
learning_rate=self.lr,
loss='mean_square',
name='target',
)
model = tflearn.DNN(network, tensorboard_dir='log')
13 是我能够从游戏状态中提取的一些特征。但是生成的模型在播放时会表现出非常糟糕的行为
[default] INFO:End the game with a score: 36
[default] INFO:Path: up,up,up,up,up,up,up,up,up,up,up,up,up,up,up
所以我想弄清楚我遗漏了哪些重要部分,并有一些悬而未决的问题需要澄清:
Training Step: 3480 | total loss: 0.11609 | time: 4.922s
| Adam | epoch: 001 | loss: 0.11609 -- iter: 222665/222665
- 我要查找的损失值是多少?是否有经验法则可以告诉我亏损就足够了?
- 我需要多少个 epoch?如何确定它们的确切数量?
- 如果我的 NN 架构完全错误且不适合此任务怎么办?如何发现?
- 最后:在调试您的网络时,什么是一个好的起点,我应该首先仔细检查和验证哪些方面。
我知道这是一个稍微开放的问题,可能不适合在此处发布,因此我将不胜感激任何形式的指导或一般 cmets。
【问题讨论】:
-
这是一个强化学习问题。您应该使用强化学习训练算法(而不是回归)。
-
是的,我正在使用强化学习(查看代码 github.com/bmwant/canvaSokoban/blob/master/app/network.py#L72 了解更多详情)
-
我也在改编这篇文章中的算法towardsdatascience.com/…
-
老实说,我对这个问题感到非常困惑。您是在询问奖励结构吗?似乎您已经回答了自己的问题,但您所做的只是粘贴了一个表格 Q 学习代码,它与奖励结构无关,甚至与基于神经网络的 RL 无关……实际上,您的神经网络会由于非线性函数近似的随机性,鉴于您提供的当前代码,永远不会收敛到任何最优策略。
-
@RuiNian 是的,我已经开始使用 NN 架构来解决这个游戏,但最终使用了 Q-learning,正如在此处关于使用 RL 的评论中提到的那样。我发布了一个最小的工作示例来解决游戏,而不是声称它是正确的。如果您有什么要提供的,我将非常感谢任何其他指导或其他信息。谢谢
标签: tensorflow machine-learning neural-network tflearn