在尝试实现我自己的 PPO(近端策略优化器)时,我遇到了两种不同的实现:
用标准探索
- 收集轨迹时间步长,通过使用以策略为中心的分布和逐步训练的标准变量进行探索
- 训练策略函数脚步
- 训练价值函数脚步
例如,OpenAI 的实现。
熵探索
- 收集轨迹时间步长,直接使用策略函数
- 同时训练策略和价值函数步骤,两个模型的共同损失,以及用于探索目的的额外熵奖励。
比如官方论文中描述的PPO算法。
这两种算法的优缺点是什么?
这是 PPO 特有的,还是一般来说这是关于策略梯度算法的经典问题?
在尝试实现我自己的 PPO(近端策略优化器)时,我遇到了两种不同的实现:
例如,OpenAI 的实现。
比如官方论文中描述的PPO算法。
这两种算法的优缺点是什么?
这是 PPO 特有的,还是一般来说这是关于策略梯度算法的经典问题?
这两种实现可能比你想象的更接近。
简而言之:
PPO 有两个部分:训练期间的平局有噪音(有学习的标准偏差),有助于探索新的有希望的行动/政策。并且在损失函数中添加了一个术语,旨在防止噪声崩溃,以帮助确保探索继续进行,并且我们不会陷入糟糕的(局部)平衡。
事实上,对于连续动作,您在 Ex 中描述的损失函数中的熵术语。2,只有当动作是随机的时才有意义,即当动作选择有一些标准偏差时,就像你在Ex中描述的那样。1.
更多详情:
一方面,PPO(至少对于连续行动)训练一个中心/确定性价值(比如平均策略或接近平均数),以最有利可图的行动路径为目标。另一方面,随之而来的是一个标准偏差,使动作在确定性值周围随机抽取,并带有噪声。这是您在示例 1中描述的部分。噪声有助于探索新路径并根据这些采样路径上的奖励更新策略。熵本身是对抽签噪声的度量,因此也是策略训练标准差值的间接指标。
现在,随着训练的进行,熵趋于衰减,也就是说,随机抽取逐渐变得不那么随机。这可能有利于奖励最大化——实际上最好的抽奖是为了奖励最大化——但它不利于政策的进一步改进:随着对新行动路径的探索消退,改进可能会停止或放缓。
这就是熵鼓励x * entropy
的用武之地。PPO 预见到在损失函数中包含熵:我们使用熵系数(例如 0.01)将损失减少x
,激励学习网络增加标准偏差(或者,不让它们掉太多)。这部分是您在示例 2中描述的内容。
进一步说明:
在利用过程中,我们通常会关闭噪音(隐含假设action std = 0
)并选择确定性操作:在正常情况下,这会增加收益;我们正在选择我们的最佳行动估计,而不是围绕它的随机值。
人们在提到模型entropy
与entropy coefficient
添加到损失函数时并不总是准确的。
其他具有连续动作的 RL 算法也倾向于使用具有标准偏差/熵的噪声 drwas。