Actor-Critic 架构:政策如何更新?

数据挖掘 强化学习
2021-09-16 21:04:34

我正在浏览ddpg 基线代码,试图直观地了解演员和评论家网络的运作方式。

DDPG 有两个组成部分:作为确定性策略的参与者\pi和作为状态价值函数的批评者Q(s, a)更新actor的方式\pi是计算 的梯度Q(s, \pi(s))这个想法是,该策略可以被视为一个连续的等价物argmax,因此您尝试对其进行更新,例如在给定状态下采取最大化 Q 函数的操作。

这可以如下图所示。

在此处输入图像描述

该代码显示了创建的三个不同的神经网络。

  1. actor_tf = create_neural_net(observations) # Maps states to desired actions
  2. critic_tf = create_neural_net(observations, actions) # Updates value function
  3. critic_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 错误代表什么,它与更新策略有什么关系?

2个回答

您基本上有两个问题:

  1. 学习 Q 函数

  2. 学习政策

Q 函数告诉你一个动作的奖励程度 一个 将处于状态 s. 一旦你采取行动一个 并从状态转换 ss', 你得到奖励 r马上。采取行动是多么有益一个s 是收到的奖励的总和 r 和你最终进入的状态的 Q 值,因此你想要最小化

r+(s',一个',w)-(s,一个,w)

在哪里 w 是函数逼近器的参数和 一个' 在以下状态下您将采取的行动 s'. 这是 TD 误差,将其最小化将学习 Q 函数。

因此,TD 误差用于学习 Q 函数,与普通(深度)Q 学习中的方法基本相同。但是,虽然在普通(深度)Q 学习中,你会完全基于 Q 函数(加上一些随机性以免卡住),但在 actor-critic 上下文中,Q 函数只是一种手段结束训练策略本身。因此,学习到的 Q 函数然后通过学习策略参数作为策略的优化目标 使其输出动作 一个 最大化 (s,一个,w)(请参阅您的其他问题)。在这种情况下会弹出链式规则,因为您不是试图通过最小化一些错误来进行回归,而是试图最大化 关于其论点之一。

TD Error 用于直接更新critic 而不是actor。

演员在评论家的方向上更新,使用:

l=(s,一个,w)一个一个

跟进这个方程在这里真正意味着什么的问题。