第7章 n步时序差分(2) n步sarsa

n步sarsa

[!NOTE]

复习

SARSA(State–Action–Reward–State–Action)是一种 on-policy(同策略)的时序差分强化学习算法,用于学习在给定策略 π\piπ 下的动作价值函数(Q 函数)。目标是估计在当前策略 π\piπ 下,从状态 sss 采取动作 aaa 的预期累积回报,即 Qπ(s,a)Q^\pi(s, a)Qπ(s,a)。通过在线交互不断更新 QQQ 值,使得 Q(s,a)Q(s, a)Q(s,a) 逐渐逼近真实值。

SARSA 基于 TD(0) 更新规则,其更新公式如下:

Q(st,at)←Q(st,at)+α[rt+1+γQ(st+1,at+1)−Q(st,at)] Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha \left[ r_{t+1} + \gamma Q(s_{t+1}, a_{t+1}) - Q(s_t, a_t) \right] Q(st,at)Q(st,at)+α[rt+1+γQ(st+1,at+1)Q(st,at)]

其中:

  • sts_tst:当前状态
  • ata_tat:当前采取的动作(由当前策略 π\piπ 选择)
  • rt+1r_{t+1}rt+1:执行动作 ata_tat 后获得的即时奖励
  • st+1s_{t+1}st+1:执行动作后进入的下一个状态
  • at+1a_{t+1}at+1:在 st+1s_{t+1}st+1 下根据当前策略 π\piπ 选择的下一个动作
  • α∈(0,1]\alpha \in (0,1]α(0,1]:学习率
  • γ∈[0,1)\gamma \in [0,1)γ[0,1):折扣因子

SARSA 在更新时使用的是实际采取的下一个动作 at+1a_{t+1}at+1,而不是贪心选择的动作。

定义

在这里插入图片描述

n 步 Sarsa 是将 n 步时序差分方法与 Sarsa 算法结合,形成一种同轨策略下的控制方法。它扩展了原始的单步 Sarsa(即 Sarsa(0)),通过引入多步回报来加速学习关键在于将基本单元从“状态”变为“状态-动作”二元组;使用 ε-贪心策略进行动作选择;回溯图首尾均为动作(区别于状态价值方法)

对于 $ n \geq 1 $ 且 $ 0 \leq t < T - n $,n 步回报定义为:

Gt:t+n≐Rt+1+γRt+2+⋯+γn−1Rt+n+γnQt+n−1(St+n,At+n) G_{t:t+n} \doteq R_{t+1} + \gamma R_{t+2} + \dots + \gamma^{n-1} R_{t+n} + \gamma^n Q_{t+n-1}(S_{t+n}, A_{t+n}) Gt:t+nRt+1+γRt+2++γn1Rt+n+γnQt+n1(St+n,At+n)

当 $ t + n \geq T $ 时,使用完整回报:$ G_{t:t+n} = G_t $

更新当前经历的“状态-动作”对:

Qt+n(St,At)≐Qt+n−1(St,At)+α[Gt:t+n−Qt+n−1(St,At)] Q_{t+n}(S_t, A_t) \doteq Q_{t+n-1}(S_t, A_t) + \alpha \left[ G_{t:t+n} - Q_{t+n-1}(S_t, A_t) \right] Qt+n(St,At)Qt+n1(St,At)+α[Gt:t+nQt+n1(St,At)]

其余所有 $ (s, a) \neq (S_t, A_t) $ 的 Q 值保持不变。

算法实现

输入:无显式输入策略(策略由 Q 函数隐式定义)
参数:步长 α∈(0,1]\alpha \in (0,1]α(0,1],探索率 ε>0\varepsilon > 0ε>0,正整数 nnn
初始化:对所有 s∈S,a∈A(s)s \in \mathcal{S}, a \in \mathcal{A}(s)sS,aA(s),任意初始化 Q(s,a)Q(s, a)Q(s,a);策略 π\piπ 为基于当前 QQQ 的 ε-贪心策略

对每幕执行

  1. 初始化并存储初始状态 S0S_0S0(非终止状态)

  2. 根据 π(⋅∣S0)\pi(\cdot \mid S_0)π(S0) 选择并存储动作 A0A_0A0

  3. T←∞T \leftarrow \inftyT

  4. t=0,1,2,…t = 0, 1, 2, \ldotst=0,1,2, 执行:

    • t<Tt < Tt<T

      • 执行动作 AtA_tAt
      • 观察并存储奖励 Rt+1R_{t+1}Rt+1 和下一状态 St+1S_{t+1}St+1
      • St+1S_{t+1}St+1 为终止状态,则 T←t+1T \leftarrow t + 1Tt+1
      • 否则,根据 π(⋅∣St+1)\pi(\cdot \mid S_{t+1})π(St+1) 选择并存储动作 At+1A_{t+1}At+1
    • 计算 τ←t−n+1\tau \leftarrow t - n + 1τtn+1

    • τ≥0\tau \geq 0τ0

      • 计算部分回报:
        G←∑i=τ+1min⁡(τ+n, T)γi−τ−1Ri G \leftarrow \sum_{i=\tau+1}^{\min(\tau+n,\,T)} \gamma^{i-\tau-1} R_i Gi=τ+1min(τ+n,T)γiτ1Ri

      • τ+n<T\tau + n < Tτ+n<T,追加自举项:
        G←G+γnQ(Sτ+n,Aτ+n) G \leftarrow G + \gamma^n Q(S_{\tau+n}, A_{\tau+n}) GG+γnQ(Sτ+n,Aτ+n)

      • 更新动作价值函数:
        Q(Sτ,Aτ)←Q(Sτ,Aτ)+α[G−Q(Sτ,Aτ)] Q(S_\tau, A_\tau) \leftarrow Q(S_\tau, A_\tau) + \alpha \big[ G - Q(S_\tau, A_\tau) \big] Q(Sτ,Aτ)Q(S

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值