任何人都可以清楚地解释如何计算强化学习中的优势函数吗?

时间:2018-02-02 16:15:24

标签: deep-learning reinforcement-learning

我很难理解如何在演员评论设置中获取数据来计算优势。

我知道model.transform(dataset).show() // +----------------+----------+ // | items|prediction| // +----------------+----------+ // |[aaa, bbbb, eee]| []| // |[bbbb, ccc, eee]| [aaa]| // | [aaa, bbbb]| [eee]| // +----------------+----------+ 。获得状态值估计A(s,a) = Q(s,a) - V(s)似乎很简单,但是如果策略只输出概率,我们如何估计V(s)

谢谢!

2 个答案:

答案 0 :(得分:1)

Q函数取决于每个未来状态的奖励值的可用性。 Q(s,a)是采取行动a并评估新状态V(s')的结果s'的价值。因此,净优势将是a P(a) * V(s'(a))的所有操作的总和,其中s'(a)是通过从a采取行动s达到的状态。

请记住,这只是一个值估计值;这是培训迭代证明其价值的地方。你继续迭代,直到值收敛到稳定的马尔可夫模型。

答案 1 :(得分:0)

您应该使用评论而不是演员来估算 Q(s,a)

请记住,在 actor-critic (行为者批评)设置(例如A2C)中,参与者会在状态{{1}下,输出所有行动的概率分布}。从此分发中,您将对要在环境中执行的操作s进行采样。然后,环境将给您奖励a和下一个状态r

经过s'步骤之后,您将使用 critic (批判者)来估算状态值 N,并计算出优势< / strong>指出您的操作比平均水平要好多少。借助这一优势,您将更新策略( actor ),以提高/降低在状态V(s)采取行动a的可能性。

因此,要在此框架中使用 advantage函数,您可以使用注释器来估算s,这是每对动作状态的值。然后,您可以通过以下方式估算Q(s,a)

enter image description here

您可以看看这个answer和这个post来获得更好的主意。请注意,要估算V(s),您的评论家网络应具有Q(s,a)输出单位,而不是|A|情况下的输出单位。您还可以尝试其他选项作为优势功能。

请记住,优势函数的唯一目的是告诉您的模型在状态V(s)下采取/采取行动a的概率以多少增加/减少。如果比平均水平好,则增加;否则,减少。

paper是很好的参考。