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