优势行动者-评论家 (A2C)
使用行动者-评论家方法减少方差
减少 Reinforce 算法方差并更快、更好地训练代理的解决方案是使用策略型和价值型方法的结合:行动者-评论家方法。
为了理解行动者-评论家,想象你在玩电子游戏。你可以和一个朋友一起玩,他会给你一些反馈。你就是行动者,你的朋友就是评论家。
一开始你不知道怎么玩,所以你随机尝试一些动作。评论家观察你的动作并提供反馈。
从这些反馈中学习,你会更新你的策略,并在玩游戏时变得更好。
另一方面,你的朋友(评论家)也会更新他们提供反馈的方式,以便下次能够更好地提供反馈。
这就是行动者-评论家背后的理念。我们学习了两种函数逼近
策略,控制代理如何行动
价值函数,通过衡量采取该动作的优劣程度来帮助更新策略
行动者-评论家过程
现在我们已经看到了行动者-评论家的整体情况,让我们深入了解行动者和评论家在训练过程中如何共同改进。
正如我们所见,在行动者-评论家方法中,有两个函数逼近(两个神经网络)
- 行动者,策略函数,由 θ 参数化
- 评论家,价值函数,由 w 参数化
让我们看看训练过程,以了解行动者和评论家是如何优化的
在每个时间步 t,我们获得当前状态来自环境,并将其作为输入传递到行动者和评论家。
我们的策略接收状态并输出一个动作.
- 评论家也接收该动作作为输入,并使用和,计算在该状态下采取该动作的价值:Q-值。
- 动作在环境中执行,会输出一个新的状态和一个奖励 .
- Actor 使用 Q 值更新其策略参数。
由于参数更新,Actor 会在 . 给定新的状态
Critic 然后更新其价值参数。
在 Actor-Critic (A2C) 中添加优势
我们可以通过 **使用优势函数作为 Critic 而不是动作价值函数** 来进一步稳定学习。
思路是优势函数计算动作相对于状态下其他可能动作的相对优势:**与状态的平均值相比,在状态下采取该动作有多好**。它从状态动作对中减去状态的平均值。
换句话说,此函数计算 **与在该状态下获得的平均奖励相比,我们在该状态下采取该动作会获得的额外奖励**。
额外奖励是在该状态的预期值之外的奖励。
- 如果 A(s,a) > 0:我们的梯度 **朝着那个方向推动**。
- 如果 A(s,a) < 0(我们的动作比该状态的平均值差),**我们的梯度朝相反方向推动**。
实施此优势函数的问题在于它需要两个价值函数——和. 幸运的是,我们可以使用 TD 误差作为优势函数的良好估计器。
< > 在 GitHub 上更新