分数函数如何帮助策略梯度?

How does score function help in policy gradient?

我正在尝试学习用于强化学习的策略梯度方法,但我停留在分数函数部分。

在函数中搜索最大或最小点时,我们取导数并将其设置为零,然后寻找满足此方程的点。

在策略梯度方法中,我们通过轨迹期望的梯度来做到这一点,我们得到:

Objective function image

这里我无法理解这种对数策略的梯度如何改变分布(通过其参数 θ)以增加其样本的分数数学上?难道我们没有像我上面解释的那样寻找使这个 objective 函数的梯度为零的东西吗?

你想要最大化的是

J(theta) = int( p(tau;theta)*R(tau) ) 

积分超过 tau(轨迹),p(tau;theta) 是它的概率(即看到序列状态、动作、下一个状态、下一个动作……),它取决于环境的动态和策略(由 theta 参数化)。正式

p(tau;theta) = p(s_0)*pi(a_0|s_0;theta)*P(s_1|s_0,a_0)*pi(a_1|s_1;theta)*P(s_2|s_1,a_1)*...

其中P(s'|s,a)是由动力学给出的转移概率。

由于我们无法控制动态,只能控制策略,我们优化 w.r.t。它的参数,我们通过梯度上升来完成,这意味着我们采用梯度给定的方向。图片中的方程式来自 log-trick df(x)/dx = f(x)*d(logf(x))/dx.

在我们的例子中 f(x)p(tau;theta) 我们得到了你的等式。然后,由于我们只能访问有限数量的数据(我们的样本),我们用期望来近似积分。

一步接一步,您将(理想情况下)到达梯度为 0 的点,这意味着您达到了(局部)最优值。

你可以找到更详细的解释here

编辑

非正式地,您可以考虑学习增加看到高概率的策略 return R(tau)。通常,R(tau)是奖励的累计总和。因此,对于每个 state-action 对 (s,a),您可以最大化在状态 s 中执行 a 并随后执行 pi 所获得的奖励总和。查看 this 精彩摘要了解更多详情(图 1)。