我正在尝试学习用于强化学习的策略梯度方法,但我停留在分数函数部分。
在搜索函数中的最大或最小点时,我们取导数并将其设置为零,然后寻找保持该方程的点。
在策略梯度方法中,我们通过获取轨迹期望的梯度来做到这一点,我们得到:
在这里,我无法理解这种对数策略的梯度如何改变分布(通过其参数 θ)以在数学上增加其样本的分数?正如我上面解释的那样,我们不是在寻找使这个目标函数的梯度为零的东西吗?
我正在尝试学习用于强化学习的策略梯度方法,但我停留在分数函数部分。
在搜索函数中的最大或最小点时,我们取导数并将其设置为零,然后寻找保持该方程的点。
在策略梯度方法中,我们通过获取轨迹期望的梯度来做到这一点,我们得到:
在这里,我无法理解这种对数策略的梯度如何改变分布(通过其参数 θ)以在数学上增加其样本的分数?正如我上面解释的那样,我们不是在寻找使这个目标函数的梯度为零的东西吗?
你想要最大化的是
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)
是动力学给出的转移概率。
由于我们无法控制动态,只能控制策略,因此我们对其参数进行优化,并通过梯度上升来实现,这意味着我们采用梯度给出的方向。您图像中的方程式来自 log-trick df(x)/dx = f(x)*d(logf(x))/dx
。
在我们的例子f(x)
中p(tau;theta)
,我们得到了你的等式。然后,由于我们只能访问有限数量的数据(我们的样本),我们用期望来近似积分。
一步一步,您将(理想情况下)达到梯度为 0 的点,这意味着您达到了(局部)最优值。
您可以在此处找到更详细的说明。
编辑
非正式地,您可以考虑学习增加看到高回报概率的策略R(tau)
。通常,R(tau)
是奖励的累积总和。因此,对于每个状态-动作对,您可以最大化您在状态下执行并随后(s,a)
执行所获得的奖励总和。检查这个伟大的总结了解更多细节(图 1)。a
s
pi