强化学习-chapter7-时间差分学习-2-Qlearning

接上文:https://blog.youkuaiyun.com/Rsbstep/article/details/146640732?spm=1011.2124.3001.6209

TD learning of optimal action values: Q-learning

Sarsa 能够估计给定策略的动作值,它必须与策略改进步骤相结合,才能找到最优策略。
Q-learning可以直接估计最优动作值,进而得到最优策略。

算法描述

  1. Q-learning 更新公式
    Q-learning算法为
    qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−(rt+1+γmax⁡a∈Aqt(st+1,a))],qt+1(s,a)=qt(s,a),∀(s,a)≠(st,at), \begin{align*} q_{t+1}(s_t, a_t) &= q_t(s_t, a_t) - \alpha_t(s_t, a_t) \Big[ q_t(s_t, a_t) - \big( r_{t+1} + \gamma \max_{a \in \mathcal{A}} q_t(s_{t+1}, a) \big) \Big], \\ q_{t+1}(s, a) &= q_t(s, a), \quad \forall (s,a) \neq (s_t,a_t), \end{align*} qt+1(st,at)qt+1(s,a)=qt(st,at)αt(st,at)[qt(st,at)(rt+1+γaAmaxqt(st+1,a))],=qt(s,a),(s,a)=(st,at),
  • 符号含义
    • qt(st,at)q_t(s_t, a_t)qt(st,at):时刻 ttt,状态 sts_tst 下执行动作 ata_tat 的动作值(Q值)。
    • αt(st,at)\alpha_t(s_t, a_t)αt(st,at):学习率,控制每次更新的步长。
    • rt+1r_{t+1}rt+1:执行动作 ata_tat 后,从状态 sts_tst 转移到下一状态 st+1s_{t+1}st+1 获得的即时奖励。
    • γ\gammaγ:折扣因子,衡量未来奖励的重要性。
    • max⁡a∈Aqt(st+1,a)\max_{a \in \mathcal{A}} q_t(s_{t+1}, a)maxaAqt(st+1,a):对下一状态 st+1s_{t+1}st+1 下所有可选动作 aaa 的Q值取最大值,代表对未来最优动作的估计。
  • 更新逻辑
    • qt+1(st,at)q_{t+1}(s_t, a_t)qt+1(st,at) 的更新由“当前Q值”减去“学习率 × 误差”构成。误差是当前Q值与 TD目标 的差值。TD目标为 rt+1+γmax⁡a∈Aqt(st+1,a)r_{t+1} + \gamma \max_{a \in \mathcal{A}} q_t(s_{t+1}, a)rt+1+γmaxaAqt(st+1,a),它融合了即时奖励和对未来最优状态的预估,体现了Q-learning直接逼近最优策略的特性。
  • 非更新部分
    • 对于非 (st,at)(s_t, a_t)(st,at) 的状态-动作对 (s,a)(s, a)(s,a),Q值不更新,即 qt+1(s,a)=qt(s,a)q_{t+1}(s, a) = q_t(s, a)qt+1(s,a)=qt(s,a)
  1. 与Sarsa的TD目标差异

    • Q-learning:TD目标取未来状态所有动作Q值的最大值 max⁡a∈Aqt(st+1,a)\max_{a \in \mathcal{A}} q_t(s_{t+1}, a)maxaAqt(st+1,a),属于离线策略(不依赖当前策略选择的动作,直接向最优策略逼近)。
    • Sarsa:TD目标使用下一状态实际执行动作 at+1a_{t+1}at+1 的Q值 qt(st+1,at+1)q_t(s_{t+1}, a_{t+1})qt(st+1,at+1),属于在线策略(基于当前策略生成的动作更新,更保守)。

    两者核心区别在于对未来动作的处理:Q-learning追求最优动作,Sarsa依赖当前策略的动作,这导致Q-learning更激进地探索最优策略,而Sarsa更贴合当前策略的执行路径。

  2. 从数学角度看,Q-learning做了什么?
    它旨在求解
    q(s,a)=E[Rt+1+γmax⁡aq(St+1,a)∣St=s,At=a],∀s,a. q(s, a) = \mathbb{E}\left[ R_{t+1} + \gamma \max_{a} q(S_{t+1}, a) \Big| S_t = s, A_t = a \right], \quad \forall s, a. q(s,a)=E[Rt+1+γamaxq(St+1,a)St=s,At=a],s,a.
    这是用动作值表达的贝尔曼最优性方程。

off-policy与on-policy

在进一步学习 Q-learning 之前,我们首先介绍两个重要概念:同策略学习(on-policy learning)和异策略学习(off-policy learning)。

在时序差分(TD)学习任务中存在两种策略:

  • 行为策略(behavior policy) 用于生成经验样本。
  • 目标策略(target policy) 持续向最优策略更新。

同策略(On-policy)与异策略(Off-policy)的对比:

  • 行为策略目标策略相同时,这类学习称为 同策略学习(on-policy)
  • 当两者不同时,这类学习称为 异策略学习(off-policy)

off-policy学习的优势:

  • 它可以基于其他任意策略生成的经验样本搜索最优策略。
  • 作为一种重要的特殊情况,行为策略可以被选为探索性策略。例如,如果我们想估计所有状态-动作对的动作值,我们可以使用探索性策略生成能充分多次访问每个状态-动作对的回合。

Sarsa是on-policy

  • 首先,Sarsa 旨在求解给定策略 πππ 的贝尔曼方程:
    qπ(s,a)=E[R+γqπ(S′,A′)∣s,a],∀s,a. q_\pi(s, a) = \mathbb{E}\big[ R + \gamma q_\pi(S', A') \mid s, a \big], \quad \forall s, a. qπ(s,a)=E[R+γqπ(S,A)s,a],s,a.
    其中 R∼p(R∣s,a)R \sim p(R \mid s, a)Rp(Rs,a)S′∼p(S′∣s,a)S' \sim p(S' \mid s, a)Sp(Ss,a)A′∼π(A′∣S′)A' \sim \pi(A' \mid S')Aπ(AS)

    • R∼p(R∣s,a)R \sim p(R \mid s, a)Rp(Rs,a):奖励 RRR 服从“在状态 sss 下执行动作 aaa 时”的概率分布 p(R∣s,a)p(R \mid s, a)p(Rs,a)。即给定状态 sss 和动作 aaa,奖励 RRR 的出现概率由 p(R∣s,a)p(R \mid s, a)p(Rs,a) 描述。
    • S′∼p(S′∣s,a)S' \sim p(S' \mid s, a)Sp(Ss,a):下一个状态 S′S'S 服从“在状态 sss 下执行动作 aaa 时”的状态转移概率分布 p(S′∣s,a)p(S' \mid s, a)p(Ss,a)。即执行动作 aaa 后,从状态 sss 转移到下一状态 S′S'S 的概率由 p(S′∣s,a)p(S' \mid s, a)p(Ss,a) 决定。
    • A′∼π(A′∣S′)A' \sim \pi(A' \mid S')Aπ(AS):下一个动作 A′A'A 服从策略 π\piπ 在状态 S′S'S 下的动作选择概率分布。即策略 π\piπ 根据当前状态 S′S'S,以特定概率选择动作 A′A'A
  • 其次,算法为
    qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−(rt+1+γqt(st+1,at+1))], q_{t+1}(s_t, a_t) = q_t(s_t, a_t) - \alpha_t(s_t, a_t) \Big[ q_t(s_t, a_t) - \big( r_{t+1} + \gamma q_t(s_{t+1}, a_{t+1}) \big) \Big], qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)(rt+1+γqt(st+1,at+1))],
    其需要 (st,at,rt+1,st+1,at+1)(s_t, a_t, r_{t+1}, s_{t+1}, a_{t+1})(st,at,rt+1,st+1,at+1)

    • 若给定 (st,at)(s_t, a_t)(st,at),则 rt+1r_{t+1}rt+1st+1s_{t+1}st+1 不依赖任何策略!
    • at+1a_{t+1}at+1 是根据 πt(st+1)\pi_t(s_{t+1})πt(st+1) 生成的!
  • πt\pi_tπt 既是目标策略,也是行为策略。

蒙特卡洛学习是on-policy

  • 首先,蒙特卡洛(MC)方法旨在求解
    qπ(s,a)=E[Rt+1+γRt+2+⋯∣St=s,At=a],∀s,a. q_\pi(s, a) = \mathbb{E}\big[ R_{t+1} + \gamma R_{t+2} + \dots \mid S_t = s, A_t = a \big], \quad \forall s, a. qπ(s,a)=E[Rt+1+γRt+2+St=s,At=a],s,a.
    其中样本是根据给定策略 π\piπ 生成的。
  • 其次,蒙特卡洛方法的实现为
    q(s,a)≈rt+1+γrt+2+… q(s, a) \approx r_{t+1} + \gamma r_{t+2} + \dots q(s,a)rt+1+γrt+2+
  • (该方法中)使用一个策略生成样本,这些样本进一步用于估计该策略的动作值。基于动作值,我们可以改进策略。

Q-learning是off-policy

  • 首先,Q-learning旨在求解贝尔曼最优性方程
    q(s,a)=E[Rt+1+γmax⁡aq(St+1,a)∣St=s,At=a],∀s,a. q(s, a) = \mathbb{E}\left[ R_{t+1} + \gamma \max_{a} q(S_{t+1}, a) \Big| S_t = s, A_t = a \right], \quad \forall s, a. q(s,a)=E[Rt+1+γamaxq(St+1,a)St=s,At=a],s,a.
  • 其次,算法为
    qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−[rt+1+γmax⁡a∈Aqt(st+1,a)]] q_{t+1}(s_t, a_t) = q_t(s_t, a_t) - \alpha_t(s_t, a_t) \left[ q_t(s_t, a_t) - \left[ r_{t+1} + \gamma \max_{a \in \mathcal{A}} q_t(s_{t+1}, a) \right] \right] qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)[rt+1+γaAmaxqt(st+1,a)]]
  • 该算法需要 (st,at,rt+1,st+1)(s_t, a_t, r_{t+1}, s_{t+1})(st,at,rt+1,st+1)
    • 若给定 (st,at)(s_t, a_t)(st,at),则 rt+1r_{t+1}rt+1st+1s_{t+1}st+1 不依赖任何策略!
  • sts_tst 生成 ata_tat 的行为策略可以是任意策略。目标策略将收敛到最优策略。

Q-learning算法的实现

虽然Q 学习是off-policy的,它既可以以off-policy方式实现,也可以以on-policy方式实现。

on-policy版本

对每个情节(episode),执行以下操作:
  如果当前状态 sts_tst 不是目标状态,执行:
    收集经验 (st,at,rt+1,st+1)(s_t, a_t, r_{t+1}, s_{t+1})(st,at,rt+1,st+1):根据 πt(st)\pi_t(s_t)πt(st) 采取动作 ata_tat,生成 rt+1,st+1r_{t+1}, s_{t+1}rt+1,st+1
    更新 Q 值: qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−[rt+1+γmax⁡aqt(st+1,a)]]q_{t+1}(s_t, a_t) = q_t(s_t, a_t) - \alpha_t(s_t, a_t) \Big[ q_t(s_t, a_t) - \big[ r_{t+1} + \gamma \max_a q_t(s_{t+1}, a) \big] \Big]qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)[rt+1+γmaxaqt(st+1,a)]]
    更新策略:
      若 a=arg⁡max⁡aqt+1(st,a)a = \arg\max_a q_{t+1}(s_t, a)a=argmaxaqt+1(st,a),则
       πt+1(a∣st)=1−ϵ∣A∣(∣A∣−1)\pi_{t+1}(a \mid s_t) = 1 - \frac{\epsilon}{|\mathcal{A}|}(|\mathcal{A}| - 1)πt+1(ast)=1Aϵ(A1)
      否则
       πt+1(a∣st)=ϵ∣A∣\pi_{t+1}(a \mid s_t) = \frac{\epsilon}{|\mathcal{A}|}πt+1(ast)=Aϵ

off-policy版本

对于由 πb\pi_bπb 生成的每个episode {s0,a0,r1,s1,a1,r2,… }\{s_0, a_0, r_1, s_1, a_1, r_2, \dots\}{s0,a0,r1,s1,a1,r2,},执行:
  对于该情节的每个步骤 t=0,1,2,…t = 0, 1, 2, \dotst=0,1,2,,执行:
    更新q值:
       qt+1(st,at)=qt(st,at)−αt(st,at)[q(st,at)−[rt+1+γmax⁡aqt(st+1,a)]]q_{t+1}(s_t, a_t) = q_t(s_t, a_t)-\alpha_t(s_t, a_t) \Big[ q(s_t, a_t) - \big[ r_{t+1} +\gamma \max_a q_t(s_{t+1}, a) \big] \Big]qt+1(st,at)=qt(st,at)αt(st,at)[q(st,at)[rt+1+γmaxaqt(st+1,a)]]
    更新目标策略:
      若 a=arg⁡max⁡aqt+1(st,a)a = \arg\max_a q_{t+1}(s_t, a)a=argmaxaqt+1(st,a),则 πT,t+1(a∣st)=1\pi_{T,t+1}(a \mid s_t) = 1πT,t+1(ast)=1
      否则 πT,t+1(a∣st)=0\pi_{T,t+1}(a \mid s_t) = 0πT,t+1(ast)=0

Q-learning的例子

任务描述:

  • 这些示例中的任务是为所有状态找到最优策略。
  • 奖励设置为 rboundary=rforbidden=−1r_{\text{boundary}} = r_{\text{forbidden}} = -1rboundary=rforbidden=1,且 rtarget=1r_{\text{target}} = 1rtarget=1。折扣率为 γ=0.9\gamma = 0.9γ=0.9,学习率为 α=0.1\alpha = 0.1α=0.1
    真实情况:一个最优策略以及对应的最优状态值。
    在这里插入图片描述
    行为策略与生成的经验(10510^5105步):
    在这里插入图片描述
    off-policy Q-learning找到的策略:
    在这里插入图片描述
    探索的重要性:10510^5105步的episode。如果策略的探索性不足,生成的样本质量就会欠佳。
    在这里插入图片描述
    在这里插入图片描述

综合对比

我们介绍的所有算法都可以用一个统一的表达式表示:
qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−qˉt], q_{t+1}(s_t, a_t) = q_t(s_t, a_t) - \alpha_t(s_t, a_t) \big[ q_t(s_t, a_t) - \bar{q}_t \big], qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)qˉt],
其中 qˉt\bar{q}_tqˉt 是时序差分(TD)目标。不同的 TD 算法有不同的 qˉt\bar{q}_tqˉt

AlgorithmExpression of qˉt\bar{q}_tqˉt
Sarsaqˉt=rt+1+γqt(st+1,at+1)\bar{q}_t = r_{t+1} + \gamma q_t(s_{t+1}, a_{t+1})qˉt=rt+1+γqt(st+1,at+1)
n-step Sarsaqˉt=rt+1+γrt+2+⋯+γnqt(st+n,at+n)\bar{q}_t = r_{t+1} + \gamma r_{t+2} + \cdots + \gamma^n q_t(s_{t+n}, a_{t+n})qˉt=rt+1+γrt+2++γnqt(st+n,at+n)
Expected Sarsaqˉt=rt+1+γ∑aπt(a∣st+1)qt(st+1,a)\bar{q}_t = r_{t+1} + \gamma \sum_a \pi_t(a \mid s_{t+1}) q_t(s_{t+1}, a)qˉt=rt+1+γaπt(ast+1)qt(st+1,a)
Q-learningqˉt=rt+1+γmax⁡aqt(st+1,a)\bar{q}_t = r_{t+1} + \gamma \max_a q_t(s_{t+1}, a)qˉt=rt+1+γmaxaqt(st+1,a)
Monte Carloqˉt=rt+1+γrt+2+…\bar{q}_t = r_{t+1} + \gamma r_{t+2} + \dotsqˉt=rt+1+γrt+2+

通过设置 αt(st,at)=1\alpha_t(s_t, a_t) = 1αt(st,at)=1,蒙特卡洛方法也可以用这个统一表达式表示,因此 qt+1(st,at)=qˉtq_{t+1}(s_t, a_t) = \bar{q}_tqt+1(st,at)=qˉt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值