在连续动作空间 PPO 中生成“新日志概率”

人工智能 强化学习 喀拉斯 目标函数 政策梯度 近端策略优化
2021-10-22 06:38:44

我有一个概念性的问题要问大家,希望我能清楚地表达出来。我正在 Keras 中构建一个 RL 代理,使用连续 PPO 来控制连接到平移/倾斜炮塔的激光以进行目标跟踪。我的问题是如何更新新政策。我目前的实现如下

  1. 进行观察(从激光到目标的平移和倾斜距离)
  2. 将观察传递给输出均值的参与者网络(现在的标准是固定的)
  3. 我从具有步骤 2 的平均输出的高斯采样
  4. 应用命令并观察奖励(到目标的 1/L2 距离)
  5. 收集 N 步经验、计算优势和旧对数概率,
  6. 培养演员和评论家

我的问题是这个。我有我的旧日志概率(考虑到参与者网络生成的手段所采取的行动的概率),但我不明白新概率是如何生成的。在第一个小批量开始时,我的新策略与旧策略相同,因为它们是相同的神经网络。鉴于在 model.fit 函数中我传递了相同的一组观察结果来生成“y_pred”值,并且我传递了作为“y_true”值所采取的实际操作,新策略应该生成与我的旧的。使网络更新的唯一(轻微)变化来自熵奖励,但我的分数 np.exp(new_log_probs-old.log_probs) 几乎相同 1,因为策略是相同的。

我是否应该使用一对类似于 DDQN 的网络,因此用于生成数据的网络和用于训练的网络之间的策略存在一些初始差异?

1个回答

PPO 中的想法是您希望多次重用批次来更新当前策略。但是,您不能以常规的演员批评方式盲目地更新,因为您的策略可能离最佳点太远了。

这意味着您epoch对同一批次的轨迹重复步骤 6. 的次数。通常epoch在 3 到 30 之间,但它是您需要调整的超参数。对于第一次重复,新旧策略相同,所以它们的比率应该是1。第一次更新后,新的概率会因为更新的策略而改变,而你仍然需要使用旧的概率给你一个不同于 1 的比率。在这些epoch更新步骤中,旧概率将保持不变,而您的新概率将不断变化。