我正在浏览ddpg 基线代码,试图直观地了解演员和评论家网络的运作方式。
DDPG 有两个组成部分:作为确定性策略的参与者\pi和作为状态价值函数的批评者Q(s, a)。更新actor的方式\pi是计算 的梯度Q(s, \pi(s))。这个想法是,该策略可以被视为一个连续的等价物argmax,因此您尝试对其进行更新,例如在给定状态下采取最大化 Q 函数的操作。
这可以如下图所示。
该代码显示了创建的三个不同的神经网络。
actor_tf = create_neural_net(observations) # Maps states to desired actionscritic_tf = create_neural_net(observations, actions) # Updates value functioncritic_with_actor_tf = create_neural_net(observations, actor_tf) # Used for policy updating
我的问题是如何更新政策,更具体地说是critic_with_actor_tf.
正如这里所解释的,
所以critic_with_actor_tf 表示遵循策略(参与者)( )的状态(此处)Q(s,\pi(s))中的动作状态值。这是用来计算actor梯度的:sobservation = statepia = \pi(s)
self.actor_loss = -tf.reduce_mean(self.critic_with_actor_tf)
因此,似乎通过减少 的均值来更新演员critic_with_actor_tf。
这就提出了一个问题,上图中显示的TD 错误代表什么,它与更新策略有什么关系?
