TD Value Learning

基于时序差分的价值学习

在策略评估时可以通过时序差分方法估计 vπ(s)v_{\pi}(s)。但是在环境模型未知时无法通过评估的 vπ(s)v_{\pi}(s) 进行策略提升(转移概率和奖励函数未知,无法计算 qπ(s, a)q_{\pi}(s,\ a)),因此可以利用时序差分方法直接估计 qπ(s, a)q_{\pi}(s,\ a) 并进行策略提升,最终学习到最优动作价值 q(s, a)q^{\star}(s,\ a),通过最优动作价值可以恢复出最优策略 π\pi^{\star}

SARSA

单步 SARSA

SARSA 算法通过时序差分和单步转移 (st, at, rt+1, st+1, at+1)(s_{t},\ a_{t},\ r_{t + 1},\ s_{t + 1},\ a_{t + 1}) 来直接对 qπ(s, a)q_{\pi}(s,\ a) 进行估计:

q(st, at)=q(st, at)+α[rt+1+γq(st+1, at+1)q(st, at)δt(1)]q(s_{t},\ a_{t}) = q(s_{t},\ a_{t}) + \alpha \Big[ \underset{\delta_{t}^{(1)}}{\underbrace{r_{t + 1} + \gamma q(s_{t + 1},\ a_{t + 1}) - q(s_{t},\ a_{t})}} \Big]

事实上对策略进行提升不需要基于完全估计的动作价值,在策略评估不完全的情况下即可进行贪婪的策略提升 π(s)π+(s)arg maxaqπ(s, a)\pi(s) \leftarrow \pi^{+}(s) \in \argmax_{a} q_{\pi}(s,\ a),SARSA 等算法交替地进行环境交互、策略评估和策略提升。

同时为了更加准确地估计动作价值,需要在序列中获得不同的状态价值对 (s, a)(s,\ a)。为了避免贪婪策略无法访问某些状态价值对,可以改进为 ϵ\epsilon-greedy 策略,即有 ϵ\epsilon 的概率在动作空间中进行随机采样:

π+(as)={ϵA+(1ϵ)aarg maxaq(s, a)ϵAaarg maxaq(s, a)\pi^{+}(a \mid s) = \left\{ \begin{matrix} \dfrac{\epsilon}{|\mathcal{A}|} + (1 - \epsilon) & a \in \argmax_{a} q(s,\ a) \\[5mm] \dfrac{\epsilon}{|\mathcal{A}|} & a \notin \argmax_{a} q(s,\ a) \end{matrix} \right.

需要注意的是,SARSA 算法中的 sts_{t} 为给定的状态,ata_{t} 基于 sts_{t} 采用行为策略采样得到,执行后 rt+1r_{t + 1}st+1s_{t + 1} 从环境中采样得到,而用于更新 qq 值的 at+1a_{t + 1} 的目标策略与行为策略相同,这种算法被称为同策略算法。

多步 SARSA

类似地,基于多步 TD 方法可以平衡估计的偏差和方差,加速 SARSA 算法的收敛速度,其更新方式为:

q(st, at)=q(st, at)+α[rt+1+γrt+2++γkq(st+k, at+k)q(st, at)δt(k)]q(s_{t},\ a_{t}) = q(s_{t},\ a_{t}) + \alpha \Big[ \underset{\delta_{t}^{(k)}}{\underbrace{r_{t + 1} + \gamma r_{t + 2} + \cdots + \gamma^{k} q(s_{t + k},\ a_{t + k}) - q(s_{t},\ a_{t})}} \Big]

SARSA(λ)

类似地,基于 TD(λ) 方法可以得到 SARSA(λ) 算法,其中资格迹需要变为 e(s, a)e(s,\ a) 的形式,更新方式为:

et+1(s, a)γλet(s, a)+1(s=st+1, a=at+1)e_{t + 1}(s,\ a) \leftarrow \gamma \lambda e_{t}(s,\ a) + \boldsymbol{1}(s = s_{t + 1},\ a = a_{t + 1})

每个时间步上 q(s, a)q(s,\ a) 的更新方式为 q(s, a)q(s, a)+αδtet(s, a)q(s,\ a) \leftarrow q(s,\ a) + \alpha \delta_{t} e_{t}(s,\ a)

Q-Learning

单步 Q-Learning

与 SARSA 不同的是,Q-Learning 的时序差分更新方式为:

q(st, at)q(st, at)+α[rt+1+γmaxaq(st+1, a)q(st, at)δt(1)]=q(st, at)+α[rt+1+γq(st+1, a^)q(st, at)]q(s_{t},\ a_{t}) \leftarrow q(s_{t},\ a_{t}) + \alpha \Big[ \underset{\delta_{t}^{(1)}}{\underbrace{r_{t + 1} + \gamma \max_{a} q(s_{t + 1},\ a) - q(s_{t},\ a_{t})}} \Big] = q(s_{t},\ a_{t}) + \alpha \Big[ r_{t + 1} + \gamma q(s_{t + 1},\ \hat{a}) - q(s_{t},\ a_{t}) \Big]

其中,sts_{t} 为给定的状态,ata_{t} 基于 sts_{t} 通过行为策略采样得到,执行后 rt+1r_{t + 1}st+1s_{t + 1} 从环境中采样得到,而用于更新 qq 值的 a^\hat{a} 的目标策略(arg maxaq(st+1, a)\argmax_{a} q(s_{t + 1},\ a))则不同于行为策略,这种算法被称为异策略算法。

多步 Q-Learning

类似地,基于多步 TD 方法得到多步 Q-Learning 算法,其更新方式为:

q(st, at)q(st, at)+α[rt+1+γrt+2++γkmaxaq(st+k, a)q(st, at)δt(k)]q(s_{t},\ a_{t}) \leftarrow q(s_{t},\ a_{t}) + \alpha \Big[ \underset{\delta_{t}^{(k)}}{\underbrace{r_{t + 1} + \gamma r_{t + 2} + \cdots + \gamma^{k} \max_{a} q(s_{t + k},\ a) - q(s_{t},\ a_{t})}} \Big]

Q(λ)

由于 Q-Learning 为异策略算法,在目标策略采样的 a^\hat{a} 不同于得到 st+1s_{t + 1} 后行为策略采样的 at+1a_{t + 1} 时需要对资格迹 e(s, a)e(s,\ a) 进行重置操作(置零),具体的更新方式为:

et+1(s, a)=[γλet(s, a)+1(s=st+1, a=a^)]I(at+1=a^)e_{t + 1}(s,\ a) = \Big[ \gamma \lambda e_{t}(s,\ a) + \boldsymbol{1}(s = s_{t + 1},\ a = \hat{a}) \Big] \cdot \mathbb{I}(a_{t + 1} = \hat{a})

每个时间步上 q(s, a)q(s,\ a) 的更新方式为 q(s, a)q(s, a)+αδtet(s, a)q(s,\ a) \leftarrow q(s,\ a) + \alpha \delta_{t} e_{t}(s,\ a)


TD Value Learning
http://example.com/2024/07/15/TDVL/
Author
木辛
Posted on
July 15, 2024
Licensed under