跳转至

8.3-基于值函数的时序差分算法:行动值估计

8.2节介绍了状态值估计问题,本节将阐述如何估计行动值。具体将介绍基于值函数的Sarsa算法和基于值函数的Q-learning算法,这是因为许多内容可以直接由上一节的内容推广而来。

8.3.1基于函数近似的Sarsa算法

通过将算法\((8.13)\)中的状态值替换为行动值,可以很容易地从式\((8.13)\)推导出基于值函数的Sarsa算法。

具体来说,设 \(q_\pi(s, a)\)由 行动值函数\(\hat{q}(s, a, w)\)近似表示,将式(8.13)中的 \(\hat{v}(s, w)\)替换为 \(\hat{q}(s, a, w)\)即可得到

\[w_{t+1}=w_{t}+\alpha_{t}\left[r_{t+1}+\gamma\hat{q}(s_{t+1},a_{t+1},w_{t})-\hat{q}(s_{t},a_{t},w_{t})\right]\nabla_{w}\hat{q}(s_{t},a_{t},w_{t}).\tag{8.35}\]

\((8.35)\)式的分析与\((8.13)\)式类似,此处从略。当使用线性函数时,我们有

\[\hat{q}(s,a,w)=\phi^T(s,a)w,\]

其中\(\phi(s, a)\)是一个特征向量。此时\(\nabla_w \hat{q}(s, a, w) = \phi(s, a)\)

\((8.35)\)只能用来估计状态值,即做策略评价。我们可以将其与策略改进步骤相结合以学习最优策略,详细步骤总结于算法\(8.2\)中。需要注意的是,准确估计某一个给定策略的行动值需要运行\((8.35)\)足够多的次数。不过算法\(8.2\)在仅执行一次\((8.35)\)后就立即切换至策略改进步骤,这与表格型Sarsa算法类似,也是广义策略迭代(generalized policy iteration)。此外,算法\(8.2\)的实现旨在寻找从预设状态出发到目标状态的最优策略,因此它并不需要为所有状态找到最优策略。当然,也可以稍微修改该算法所有状态的最优策略。

\(8.9\)展示了一个例子。其中的任务要求智能体从左上角状态出发,找到一条能抵达目标位置的最优策略。如图所示,随着策略的不断改进,每个回合的奖励回报逐渐增加,而且每个回合的长度也逐渐缩短。本案例中,选取的线性特征向量为5阶傅里叶基函数,其数学表达式如式\((8.18)\)所示。

\(8.9\):采用值函数的Sarsa算法。参数设置为:\(\gamma=0.9\)\(\varepsilon=0.1\),边界奖励 \( r_{\text{boundary}} \) =禁区奖励 \( r_{\text{forbidden}} \) = −10,目标奖励 \( r_{\text{target}} \) =1,学习率\(\alpha=0.001\)

算法8.2: 基于值函数的Sarsa

8.3.2 基于函数近似的Q-learning

基于表格Q-learning也可以推广到基于函数的Q-learning算法的情况。其更新规则为

\[w_{t+1}=w_{t}+\alpha_{t}\left[r_{t+1}+\gamma\max_{a\in\mathcal{A}(s_{t+1})}\hat{q}(s_{t+1},a,w_{t})-\hat{q}(s_{t},a_{t},w_{t})\right]\nabla_{w}\hat{q}(s_{t},a_{t},w_{t}).\tag{8.36}\]

上述更新规则与式\((8.35)\)中的Sarsa算法非常类似,区别在于将式\((8.35)\)中的\(\hat{q}(s_{t+1}, a_{t+1}, w_t)\)替换为\(\max_{a \in \mathcal{A}(s_{t+1})} \hat{q}(s_{t+1}, a, w_t)\)

与表格形式类似,\((8.36)\)也是Off-policy方式实现,因此可以按照On-policy的模式或者Off-policy的模式来实现。算法\(8.3\)给出了On-policy的版本。Off-policy的版本将在下一节介绍深度Q-learning时展示。

\(8.10\)展示了一个例子,其中任务要求寻找能使智能体从左上角状态抵达目标状态的最优策略。如图所示,基于线性函数的Q-learning能够成功学习到最优策略。该例子使用了5阶的傅里叶基函数。

算法\(8.3\):基于值函数Q-learning(On-policy版本)

\(8.10\):基于线性函数的Q-learning算法。参数设置为:\(\gamma =0.9\)\(\epsilon =0.1\)\(r_{\text{boundary}} = r_{\text{forbidden}} = -10\)\(r_{\text{target}} =1\),且学习率\(\alpha =0.001\)

一些读者可能注意到,在算法\(8.2\)和算法\(8.3\)中,虽然值以函数形式表示,但策略\(\pi(a|s)\)仍以表格形式呈现。这意味着这些方法仍假设状态和动作空间是有限的。在第\(9\)章中我们将看到,策略同样可以表示为函数,以便处理连续的状态和行动空间。


评论