直观解释为什么在 Deep Q 网络中使用体验重放?

人工智能 强化学习 q学习 dqn 经验回放
2021-11-08 07:11:15

我了解体验重放是出于数据效率的原因并用于消除数据序列中的相关性。这些相关数据序列究竟如何影响算法的性能?

1个回答

当它试图从相关数据中学习时,受到影响的是神经网络近似。直观地说,这是因为学习算法采用梯度步骤,假设它显示的示例代表了整个数据集。神经网络更新步骤使用小批量示例来计算其权重和偏差相对于成本函数的梯度。如果那个小批量没有被公平地采样,那么损失和梯度的预期值将不能代表整个人口。它们会产生偏差,并可能导致错误方向的参数更新步骤。

此外,如果您使用自举方法(任何形式的 TD 学习),则用于设置学习更新目标的值估计对估计器中的偏差很敏感。由于正反馈循环,这已经是可能导致不稳定的东西。从相关输入数据中添加另一个系统偏差来源只会使情况变得更糟。

你可以通过一个简单的非强化学习实验来获得一些经验。

目标:逼近函数y=x2范围中2<x<2. 选择这些数字是为了使神经网络的任务变得简单。

设置:在表单中生成训练数据xi,yi对于具有函数真实值的几千个样本点。可以选择添加一些噪音以使任务更难。保持数据集按顺序排列xi价值观。为回归创建一个简单的神经网络(例如 2 个具有 50 个神经元和 tanh 激活的隐藏层),并使用一个简单的优化器(例如 SGD)对其进行设置

运行:使用小型 minibatch(例如大小 10)训练网络两次。一次没有对每个时期的数据进行洗牌(或在小批量上使用任何洗牌算法),一次使用标准洗牌并分配给小批量。绘制每次运行的损失与时期的学习曲线。

您应该会发现有序的、非混洗的版本比使用一些随机化去相关数据时学习得慢得多。根据精确的超参数,有序版本甚至可能会随着距离收敛很远的损失而振荡。

当直接从轨迹学习时,正是这种效应,或者更微妙的版本,影响了 RL 与神经网络的结合。此外,bootstrap 方法中存在起始偏差,这种影响变得更糟。