我在 Model Free RL 中实现了一些“经典”论文,例如 DQN、Double DQN 和 Double DQN with Prioritized Replay。
通过CartPole-v1
使用相同的底层 NN 运行的各种模型,我注意到上述所有 3 个模型在达到最高分数后都表现出平均奖励的突然和严重下降(损失的突然和显着增加)。
在线阅读后,我可以看到这是一个公认的问题,但我找不到合适的解释。我试图减轻的事情:
- 适应模型架构
- 调整超参数,如 LR、batch_size、损失函数(MSE、Huber)
这个问题仍然存在,我似乎无法实现任何持续的峰值性能。
我发现的有用链接:
例子:
- 在带 PR 的 Double DQN 中直到约 250 集(带有退火测试版),在奖励增加和损失减少方面性能稳定上升
- 在那个阶段之后,性能突然下降,平均奖励减少和损失增加,如下面的输出所示
Episode: Mean Reward: Mean Loss: Mean Step
200 : 173.075 : 0.030: 173.075
400 : 193.690 : 0.011: 193.690
600 : 168.735 : 0.015: 168.735
800 : 135.110 : 0.015: 135.110
1000 : 157.700 : 0.013: 157.700
1200 : 99.335 : 0.013: 99.335
1400 : 97.450 : 0.015: 97.450
1600 : 102.030 : 0.012: 102.030
1800 : 130.815 : 0.010: 130.815
1999 : 89.76 : 0.013: 89.76
问题:
- 这背后的理论推理是什么?这种
fragile
性质是否意味着我们不能使用上述 3 种算法来解决CartPole-v1
? - 如果没有,哪些步骤可以帮助减轻这种情况?这可能是过度拟合吗?这种脆弱的性质表明了什么?
- 关于这个“灾难性下降”的任何参考资料?
- 我在其他环境中也观察到类似的行为,这是否意味着上述 3 种算法不足?
编辑: 从@devidduma 的回答中,我将基于时间的 LR 衰减添加到 DDQN+PRB 模型中,并保持其他一切不变。这是数字,就性能下降的幅度而言,它们看起来比以前更好。
10 : 037.27 : 0.5029 : 037.27
20 : 121.40 : 0.0532 : 121.40
30 : 139.80 : 0.0181 : 139.80
40 : 157.40 : 0.0119 : 157.40
50 : 225.10 : 0.0107 : 225.10 <- decay starts here, factor = 0.001
60 : 227.90 : 0.0101 : 227.90
70 : 227.00 : 0.0087 : 227.00
80 : 154.30 : 0.0064 : 154.30
90 : 126.90 : 0.0054 : 126.90
99 : 154.78 : 0.0057 : 154.78
编辑:
- 经过进一步测试,pytorch
ReduceLROnPlateau
似乎最适合使用patience=0
param。