了解 Proximal Policy Optimization 算法中模型的多次迭代更新

人工智能 强化学习 深度学习 政策梯度 演员批评方法 近端策略优化
2021-10-20 08:40:26

我有一个关于PPO 算法中网络/模型更新的一般性问题

如果我理解正确的话,在模型上使用从环境创建的数据(更新前的模型)对模型进行了多次权重更新迭代。现在,我认为在第一次迭代/优化步骤之后模型权重的更新不再正确,因为模型权重发生了变化,因此训练数据已经过时(因为模型现在会在环境中给出不同的动作,因此不同奖励)。

基本上,在算法的伪代码中,我不明白“优化代理 L ... with K epochs ...”这一行。如果更新是针对多个 epoch 进行的,那么在第一次优化迭代之后,学习到的数据已经过时了,因为模型的权重发生了变化。在其他算法中,如 A2C,只完成一个优化步骤,而不是K时代。

在此处输入图像描述

这是通过使用旧模型为多次迭代创建的数据对数据进行某种形式的近似或扩充,还是我在这里遗漏了什么?如果是,这个想法是在哪里首次引入或更好地描述的?哪里有(经验)证明这仍然会导致正确的权重更新?

1个回答

似乎在openai/baselines github issue中提出并回答了这个问题这个问题已经关闭了一段时间。

以下是@matthiasplappert 提供的答案,其中“竖起大拇指”最多:

澄清一下:PPO 是一种策略上的算法,所以你是正确的,多次检查相同的数据在技术上是不正确的。

但是,我们发现 PPO 实际上可以很好地执行此操作,并且我们仍然可以获得稳定的收敛。这可能是由于我们强制执行的近端信任区域受到限制,这意味着当多次遍历当前的转换集时,策略无论如何都不会发生太大变化,使其仍然大致符合策略。你当然可以摆脱这个,但你需要更多的样本。