gpt4 book ai didi

python - 为什么我的 Deep Q Net 和 Double Deep Q Net 不稳定?

转载 作者:行者123 更新时间:2023-12-01 01:32:02 28 4
gpt4 key购买 nike

我正在尝试实现DQN和DDQN(两者都有经验回复)来解决OpenAI AI-Gym Cartpole环境。这两种方法有时都能学习并解决这个问题,但并非总是如此。

我的网络只是一个前馈网络(我尝试过使用 1 和 2 个隐藏层)。在DDQN中,我在DQN中创建了一个网络,在DDQN中创建了两个网络,一个目标网络用于评估Q值,一个主网络用于选择最佳 Action ,训练主网络,并在一些情节后将其复制到目标网络。

DQN 中的问题是:

  • 有时它可以在 100 集内获得满分 200 分,但有时它会卡住,无论训练多长时间都只能获得 10 分。
  • 此外,如果学习成功,学习速度也会有所不同。

DDQN 中的问题是:

  • 它可以学习达到 200 分,但随后它似乎会忘记所学内容,并且分数急剧下降。

我尝试过调整批量大小、学习率、隐藏层神经元数量、隐藏层数量、探索率,但不稳定仍然存在。

关于网络大小和批量大小有什么经验法则吗?我认为更大的网络和更大的批量大小会提高稳定性。

能否让学习变得稳定?欢迎任何评论或引用!

最佳答案

此类问题经常发生,您不应该放弃。首先,当然,您应该再做一两次检查代码是否正确 - 尝试将您的代码与其他实现进行比较,查看损失函数的行为等。如果您非常确定您的代码一切正常 - 并且,正如你所说的模型可以时不时地学习任务,它可能是 - 你应该开始尝试超参数。

您的问题似乎与超参数有关,例如探索技术、学习率、更新目标网络的方式以及体验重放内存。我不会摆弄隐藏层的大小 - 找到模型学习过一次的值并保持它们固定。

  • 探索技术:我假设您使用 epsilon-greedy 策略。我的建议是从一个高的 epsilon 值开始(我通常从 1.0 开始),并在每个步骤或每集之后衰减它,但也定义一个 epsilon_min 。从较低的 epsilon 值开始可能是不同学习速度和成功率的问题 - 如果你完全随机,你总是在开始时用类似的转换填充你的内存。由于一开始的 epsilon 率较低,您的模型在利用阶段开始之前探索得不够的可能性就更大。
  • 学习率:确保它不会太大。较小的速率可能会降低学习速度,但有助于学习模型不会从全局最小值逃回某些局部更差的情况。此外,自适应学习率如使用 Adam 计算的可能对你有帮助。当然,批量大小也会产生影响,但我会保持它固定,只有在其他超参数更改不起作用时才担心它。
  • 目标网络更新(速率和值(value)):这也很重要。您必须进行一些试验 - 不仅要执行更新的频率,还要将多少主要值复制到目标值中。人们通常会在每一集左右进行一次硬更新,但如果第一种技术不起作用,请尝试进行软更新。
  • 体验回放:你用过吗?你应该。你的内存有多大?这是非常重要的因素,内存大小会影响稳定性和成功率(A Deeper Look at Experience Replay)。基本上,如果您发现算法不稳定,请尝试更大的内存大小,如果它对您的学习曲线影响很大,请尝试上述论文中提出的技术。

关于python - 为什么我的 Deep Q Net 和 Double Deep Q Net 不稳定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52770780/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com