如何避免强化学习中的过度拟合

数据挖掘 强化学习 过拟合 绘图
2022-02-01 20:29:19

我已经实现了一个基于Deep Q-Learning的 RL 模型,用于学习如何玩 2D 游戏,就像 OpenAI Gym 中的游戏一样。为了测试模型,与大多数人不同,我选择在不同级别上评估其性能,而不是用于训练的级别。这样,我可以评估模型学到的知识是否可以很好地推广到以前看不见的水平。

在做了一些测试并绘制了结果之后,我注意到了一个问题。尽管该模型泛化得很好,但如果训练过程持续时间过长,它最终会过度拟合训练集(用于训练的级别)。这是有道理的,因为提前停止是用于防止过度拟合的常用技术。问题是训练持续的时间越长,代理训练的样本越多,这应该会提高其测试性能。然而,正如我所解释的,由于过度拟合,这不会发生。

我想运行模型并绘制随着体验回放中样本数量的增加在测试集上获得的性能(获得的奖励)。我想获得的图应该显示性能如何随着样本数量的增加而增加,但是过度拟合会导致在一个点之后,性能下降,即使更多的样本用于训练。我想避免这种情况这些是我能想到的解决方案:

  • 使用技术来防止过拟合。现在我正在使用 Dropout,但它仍然会发生。
  • 使用指数衰减学习率。现在我使用的是一个常数,因为我不希望新样本对训练的影响小于旧样本。
  • 根据我要用于训练的样本数量放弃并更改训练步骤的数量。然后,为了获得图,我将不得不对图的每个点(样本数)重复一次训练,以便为每个不同大小的体验回放获得最佳性能。当然,这是我最后的手段。

你觉得我应该怎么做?

编辑:我刚刚尝试了 L2 正则化。它的工作原理与 Dropout 差不多。

2个回答

最后,我通过独立于使用的训练数据集的大小保持恒定数量的训练迭代来简单地解决了这个问题。通过这种方式,我能够测试性能如何随着训练数据集大小的增加而变化,而不会增加训练迭代的次数以及训练时间过长和模型过度拟合的风险。我对小型和大型数据集进行了测试并发现了或多或少合适的迭代次数,以防止使用早停(不使用太多训练迭代)来防止过度拟合。

在 RL 中,这被称为探索-利用权衡,所以我认为你不能避免这种正则化神经网络,而是它学习的动作策略。您正在训练的代理正在学习解决特定任务,其策略是“过度拟合”。您可以通过多种方式解决这个问题,其中之一是通过使用 Q 值的分布来鼓励探索,例如 Softmax

p(a|s)=exp(βQ(a,s)aexp(βQ(a,s)),

或者通过应用 -greedy 动作选择,您可以选择概率为的随机动作,否则为最大 Q 值。还有很多其他的方法可以实现这一点,只是为了在谷歌学者上快速搜索“dqn 的探索策略”。ϵϵ