Dropout 本质上引入了更多的方差。在监督学习环境中,这确实通常有助于减少过度拟合(尽管我相信 dropout 也已经变得不那么流行了。近年来比之前几年更流行;不过我不是 100% 肯定,这不是我的主要专业领域)。
在强化学习中,额外的方差并不是我们真正想要的。我们得到的学习信号已经趋向于存在大量的方差,并且这种方差已经趋向于成为学习稳定性和/或学习速度的主要问题。例如:
- 行动选择的随机性导致我们观察到的回报差异
- 环境本身可能存在固有的随机性,导致我们的观察出现额外的差异(某些环境是不确定的)
- 与监督学习设置不同,在强化学习中,我们实际上经常使用自己的预测作为损失函数/训练信号的一部分。例如,在时间差分学习(如 Q-learning / DQN)中,我们更新的目标看起来像r+maxa′Q(s′,a′). 在那个期限内,只有r是一个真实的观察(就像我们在监督学习中使用的那样),另一个术语是我们自己的预测。在学习过程中,后面的部分(我们自己的预测)会随着时间而变化。这是一个“移动目标”问题,可以看作是我们学习信号中的附加方差。
Deep RL 算法的许多重要部分(没有这些部分,我们的训练过程在经验上会变得不稳定和崩溃)非常适合减少这种差异。例如,专门引入了 DQN 中的 Target Networks 来减少移动目标问题。从这个角度来看,如果我们再次通过其他方式(例如 dropout)添加更多的人为方差,这会损害性能/破坏学习的稳定性也就不足为奇了。
是否有其他机制可以尝试处理过度拟合?或者在许多 RL 示例中这无关紧要吗?例如,在“突围”游戏中获得最终高分可能只有一种真正的方法,所以您不妨准确地了解这一点,而无需一概而论?
在当前的大多数(深度)强化学习研究中,过拟合确实不被视为问题。绝大多数 RL 研究包括在一种环境中进行训练(例如 Cartpole、Breakout,或者 Pacman 中的一个特定级别,或者在一个特定的迷宫中导航等),并且要么在该学习过程中不断评估性能,要么评估在同样的环境中经过这样的学习过程后的表现。
如果我们将该评估方法与监督学习中发生的情况进行比较……我们基本上是在评估训练集的性能*。在监督学习中,这绝对是不可接受的,但在 RL 中,它被视为可以接受的,并且更多的是规则而不是例外。有人说这只是当前 RL 研究中的一个问题,需要改变。也可以说这不一定是问题。如果我们真的能够在与我们希望稍后部署它的环境完全相同的环境中训练代理……那么,它过度拟合该环境有什么问题?
因此,当我们使用上述评估方法时,确实我们过度拟合了一个特定的环境,但根据我们的评估标准,过度拟合是好的而不是坏的。很明显,这种方法不会导致代理能够很好地泛化;如果你一直训练一个代理在一个特定的迷宫中导航,那么它很可能在训练后无法导航另一个迷宫。
*注意:在我看来,事实比我们在 RL 中真正“评估训练集”要微妙得多。例如,请参阅这个不错的推文线程:https ://twitter.com/nanjiang_cs/status/1049682399980908544
我创建了一个模拟货币价格的环境和一个使用 DQN 的简单代理,它试图了解何时买卖。从一组特定的数据中训练它超过近一百万个时间步长,这些数据包含一个月的 5 分钟价格数据,它似乎过拟合了很多。如果我随后根据不同月份的数据评估代理和模型,则表现不佳。所以听起来像是经典的过拟合。
请注意,您在此处描述的评估方法确实不再适合更“常见”的评估方法。你有概念漂移的问题,环境不稳定。这意味着过度拟合对您来说可能是个问题。
不过,我不确定辍学是否会有所帮助(这仍然是可能造成伤害的额外差异)。首先,您要确保有某种方法可以跟踪输入中的时间/月,这样您至少有机会学习随着时间的推移而自我调整的策略。如果您在“训练阶段”和“评估阶段”之间有一个清晰、坚实的边界,并且您知道概念漂移会跨越该边界(您知道您的环境在训练阶段与评估阶段的行为不同)......您真的不希望仅从训练阶段的经验中学习在评估阶段仍然表现良好的策略。我怀疑你必须摆脱那个清晰、坚实的界限。你' 我还想在整个评估阶段继续学习。这使您的学习算法能够在变化的环境中实际收集经验并适应它。