问题标签 [dqn]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
82 浏览

machine-learning - 使用强化学习训练 Snake 以特定步数吃食物

这些天我正在尝试强化/深度 Q 学习。我从一个基本的“蛇”游戏开始。在这篇文章的帮助下:https : //towardsdatascience.com/how-to-teach-an-ai-to-play-games-deep-reinforcement-learning-28f9b920440a 我成功地训练了吃食物。现在我希望它以特定的步数吃食物,说“20”,不要多,不要少。奖励制度和政策将如何改变?我尝试了很多事情,几乎没有结果。例如我试过这个:

谢谢你。这是程序: https ://github.com/maurock/snake-ga

0 投票
1 回答
130 浏览

machine-learning - 我的 DDQN 网络是否正确实施?

这是我的重播/训练功能实现。我制作了 DDQN,以便在回放/训练期间model落后model21 个批量大小。通过设置self.ddqn = False它成为一个正常的 DQN。这是否正确实施?我使用这篇论文作为参考:

http://papers.nips.cc/paper/3964-double-q-learning.pdf

DDQN 代码

0 投票
1 回答
43 浏览

python - q 代理正在学习不采取任何行动

我正在训练一个深度 q 网络来交易股票;它有两种可能的动作;0:等待,1:没买就买,买了就卖。作为输入,它获取所购买股票的价值、股票的当前价值以及与股票相关的前 5 个时间步长的股票价值。所以像

奖励只是销售价格和购买价格之间的差额。任何其他动作的奖励都是 0,尽管我尝试过让它为负数或其他没有结果的东西。

很简单,对吧?不幸的是,代理总是收敛于采取“0”行动。即使我放大了以盈利或任何数量出售的回报。我真的把头发拉出来了,我错过了什么明显的东西吗?

0 投票
1 回答
124 浏览

python - dqn 状态值是否应该仅为 0 到 1

如果 DQN 中的状态值只需要为 0 到 1,例如 state = [0, 0, 0, 1, 1, 1, 1, 0, 1, 0]

或者它的状态值大于 1 eh state = [6, 5, 4, 1, 1, 1, 2, 3, 15, 10]

0 投票
1 回答
105 浏览

deep-learning - 是否可以删除最古老的 DQN 体验

我创建了一个最大内存大小为 100000 的 DQN。如果它的大小大于最大大小,我有一个函数可以删除内存中最旧的元素。当我运行 200 集时,我注意到在第 125 集时内存已经满了。我的 DQN 可以删除剩余剧集的最旧体验吗?

0 投票
4 回答
21035 浏览

python - PyTorch 模型训练:RuntimeError:cuDNN 错误:CUDNN_STATUS_INTERNAL_ERROR

在 GPU 上训练 PyTorch 模型几个小时后,程序失败并出现错误

RuntimeError:cuDNN 错误:CUDNN_STATUS_INTERNAL_ERROR

培训条件

  • nn.LSTM神经网络: PyTorch 4 层nn.Linear输出
  • Deep Q 网络代理(带有重放内存的 Vanilla DQN)
  • state传入forward()具有形状(32, 20, 15)32批量大小在哪里
  • 每集 50 秒
  • 错误发生在大约 583 集(8 小时)或 1,150,000 步之后,其中每一步都涉及通过 LSTM 模型的前向传递。

我的代码在训练开始之前还设置了以下值

我们如何解决这个问题?由于这发生在培训的 8 小时内,因此一些有根据的猜测在这里会非常有帮助!

谢谢!


更新:

注释掉这两torch.backends.cudnn...行没有用。CUDNN_STATUS_INTERNAL_ERROR仍然会发生,但要早得多,大约在第 300 集(585,000 步)左右。


系统

  • PyTorch 1.6.0.dev20200525
  • CUDA 10.2
  • cuDNN 7604
  • 蟒蛇 3.8
  • 视窗 10
  • 英伟达 1080 GPU

错误回溯

更新:try... except在我的代码上尝试了发生此错误的位置,除此之外RuntimeError: cuDNN error: CUDNN_STATUS_INTERNAL_ERROR,我们还获得了该错误的第二次回溯RuntimeError: CUDA error: unspecified launch failure

0 投票
1 回答
154 浏览

reinforcement-learning - 随机环境的优先体验重放

我尝试使用以下论文来改进我的代理的学习https://arxiv.org/pdf/1511.05952.pdf

虽然它似乎在确定性环境中工作得很好,但我觉得它实际上会使它在随机环境中变得更糟。

假设对于状态 S_w 的动作 A_w,我们有 50% 的机会获得 +1000000 的奖励和 50% 的机会获得 -1000000 的奖励(在其他状态下可以忽略不计的确定性奖励)。因此,该动作的真实 Q 值将是 0。

在对任何一个可能的样本进行训练时(假设这两种情况都在回放内存中),这些样本的优先级将设置为 1000000,因此为即将到来的更新选择这些样本的概率将趋于 1(它们中的每一个如果我们不将新样本添加到重放内存中,则在 0 和 1 之间振荡。

因此,其他样本将永远不会被训练。

我的问题是:我们如何处理它?我应该在这样的环境中简单地放弃使用这种技术吗?

0 投票
1 回答
202 浏览

reinforcement-learning - 学习率衰减到累积奖励?

在深度强化学习中,有没有办法将学习率衰减为累积奖励。我的意思是,当智能体能够学习并最大化奖励时,学习率会衰减?

0 投票
1 回答
242 浏览

python - DQN 在验证模式下表现不佳

我做了一个 DQN 来学习井字游戏。到目前为止,我让代理玩所有的动作,以查看它是否学会总是做出合法的动作,从而导致一个或另一个玩家的平局或获胜。在对网络进行了大约 10.000 场比赛后,它能够在大约 30% 到 40% 的比赛中取得平局或胜利。

之后,我想在评估模式下测试网络。不幸的是,它的表现比只有大约 1% 的平局或获胜要差得多。训练和测试的代码如下所示:

唯一改变的是两行:

代理类如下所示:

谁能解释我为什么会这样?谢谢您的帮助!

附加信息:

事实证明,网络总是为它获得的任何状态计算相同的 q 值,所以基本上是以下行:

即使对于不同的状态观察,也总是给出相同的 q 值。例如:

第一行表示传递给 forward 方法的输入状态,第二行是可能动作的相应 qvalues。

0 投票
1 回答
136 浏览

deep-learning - 深度 Q 学习代理找到解决方案然后再次发散

我正在尝试训练 DQN 代理来解决 AI Gym 的 Cartpole-v0 环境。我从这个人的实现开始只是为了获得一些实践经验。我注意到的是,在训练过程中,经过多次训练后,智能体找到了解决方案,并且能够在最大时间步长内保持杆直立。然而,经过进一步的训练,该策略看起来变得更加随机,并且它不能再保持杆子直立并且进出一个好的策略。我对此感到很困惑,为什么进一步的培训和经验不能帮助代理?在剧集中,我对随机动作的 epsilon 变得非常低,所以它应该在进行下一个预测时运行。那么,为什么它在某些训练集未能保持杆子直立而在其他训练集成功呢?

这是我在上述链接实现的训练过程中的奖励-情节曲线的图片。

在此处输入图像描述