欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

强化学习—— TD算法(Sarsa算法+Q-learning算法)

发布时间:2025/3/21 编程问答 31 豆豆
生活随笔 收集整理的这篇文章主要介绍了 强化学习—— TD算法(Sarsa算法+Q-learning算法) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

强化学习—— TD算法(Sarsa算法+Q-learning算法)

  • 1. Sarsa算法
    • 1.1 TD Target
    • 1.2 表格形式的Sarsa算法
    • 1.3 神经网络形式的Sarsa算法
  • 2. Q-learning算法
    • 2.1 TD Target
    • 2.2 表格形式的Q-learning算法
    • 2.3 神经网络形式的Q-learning算法(DQN)
  • 3. Saras和Q-learning的区别
  • 4. Multi-step TD Target
    • 4.1 Sarsa的Multi-step TD Target
    • 4.2 Q-learning的Multi-step TD Target

1. Sarsa算法

1.1 TD Target

  • 回报函数的定义为:
    Ut=Rt+γRt+1+γ2Rt+2+⋅⋅⋅Ut=Rt+γ(Rt+1+γRt+2+⋅⋅⋅)Ut=Rt+γUt+1U_t=R_t+\gamma R_{t+1}+\gamma^2 R_{t+2}+\cdot \cdot \cdot\\ U_t=R_t+\gamma (R_{t+1}+\gamma R_{t+2}+\cdot \cdot \cdot)\\ U_t = R_t+\gamma U_{t+1}Ut=Rt+γRt+1+γ2Rt+2+Ut=Rt+γ(Rt+1+γRt+2+)Ut=Rt+γUt+1
  • 假设t时刻的回报依赖于t时刻的状态、动作以及t+1时刻的状态:Rt←(St,At,St+1)R_t \gets (S_t,A_t,S_{t+1})Rt(St,At,St+1)
  • 则动作价值函数可以定义为:Qπ(st,at)=E[Ut∣at,st]Qπ(st,at)=E[Rt+γUt+1∣at,st]Qπ(st,at)=E[Rt∣at,st]+γE[Ut+1∣at,st]Qπ(st,at)=E[Rt∣at,st]+γE[Qπ(St+1,At+1)∣at,st]Qπ(st,at)=E[Rt+γQπ(St+1,At+1)]Q_\pi(s_t,a_t)=E[U_t|a_t,s_t]\\ Q_\pi(s_t,a_t)=E[R_t+\gamma U_{t+1}|a_t,s_t]\\Q_\pi(s_t,a_t)=E[R_t|a_t,s_t]+\gamma E[U_{t+1}|a_t,s_t]\\ Q_\pi(s_t,a_t)=E[R_t|a_t,s_t]+\gamma E[Q_\pi(S_{t+1},A_{t+1})|a_t,s_t]\\ Q_\pi(s_t,a_t) = E[R_t + \gamma Q_\pi(S_{t+1},A_{t+1})]Qπ(st,at)=E[Utat,st]Qπ(st,at)=E[Rt+γUt+1at,st]Qπ(st,at)=E[Rtat,st]+γE[Ut+1at,st]Qπ(st,at)=E[Rtat,st]+γE[Qπ(St+1,At+1)at,st]Qπ(st,at)=E[Rt+γQπ(St+1,At+1)]
  • 依据蒙特卡洛近似:yt=rt+γQπ(st+1,at+1)y_t= r_t + \gamma Q_\pi(s_{t+1},a_{t+1})yt=rt+γQπ(st+1,at+1)
  • TD学习的目标:yt≈Qπ(st,at)y_t \approx Q_\pi(s_t,a_t)ytQπ(st,at)

1.2 表格形式的Sarsa算法

  • 学习动作价值函数Qπ(s,a)Q_\pi(s,a)Qπ(s,a)
  • 假设动作和状态的数量有限。
  • 则需要学习下列表格信息:
S\Aa1a_1a1a2a_2a2a3a_3a3a4a_4a4
s1s_1s1Q11Q_{11}Q11
s2s_2s2
s3s_3s3
s4s_4s4

计算步骤为:

  • 观测到一个transition,即:(st,at,rt,st+1)(s_t,a_t,r_t,s_{t+1})(st,at,rt,st+1)
  • 依据策略函函数对动作进行抽样:at+1∼π(⋅∣st+1)a_{t+1}\sim \pi(\cdot|s_{t+1})at+1π(st+1)
  • 查表得到TD Target:yt=rt+γQπ(st+1,at+1)y_t = r_t+\gamma Q_\pi(s_{t+1},a_{t+1})yt=rt+γQπ(st+1,at+1)
  • TD error为:δt=Qπ(st,at)−yt\delta_t=Q_\pi(s_t,a_t)-y_tδt=Qπ(st,at)yt
  • 更新表格:Qπ(st,at)←Qπ(st,at)−α⋅δtQ_\pi(s_t,a_t)\gets Q_\pi(s_t,a_t) - \alpha \cdot \delta_tQπ(st,at)Qπ(st,at)αδt
  • 1.3 神经网络形式的Sarsa算法

    • 用神经网络近似动作价值函数:q(s,q;W)∼Qπ(s,a)q(s,q;W)\sim Q_\pi(s,a)q(s,q;W)Qπ(s,a)
    • 神经网络作为裁判去评判动作
    • 参数W需要学习
    • TD Target为:yt=rt+γ⋅q(st+1,at+1;W)y_t = r_t+\gamma \cdot q(s_{t+1},a_{t+1};W)yt=rt+γq(st+1,at+1;W)
    • TD error为:δt=q(st,at;W)−yt\delta_t = q(s_t,a_t;W)-y_tδt=q(st,at;W)yt
    • loss 为:12⋅δt2\frac{1}{2}\cdot \delta_t^221δt2
    • 梯度为:δt⋅∂q(st,at;W)∂W\delta_t \cdot \frac{\partial q(s_t,a_t;W)}{\partial W}δtWq(st,at;W)
    • 进行梯度下降:W←W−α⋅δt⋅∂q(st,at;W)∂WW\gets W - \alpha \cdot \delta_t \cdot \frac{\partial q(s_t,a_t;W)}{\partial W}WWαδtWq(st,at;W)

    2. Q-learning算法

    Q-learning用来学习最优动作价值函数:Qπ⋆(s,a)Q_\pi^\star (s,a)Qπ(s,a)

    2.1 TD Target

    Qπ(st,at)=E[Rt+γ⋅Qπ(St+1,At+1)]Q_\pi(s_t,a_t) = E[R_t+\gamma \cdot Q_\pi(S_{t+1},A_{t+1})]Qπ(st,at)=E[Rt+γQπ(St+1,At+1)]
    将最优策略函数计为:π⋆\pi^\starπ
    则:Q⋆(st,at)=Qπ⋆(st,at)=E[Rt+γ⋅Qπ⋆(St+1,At+1)]Q^\star(s_t,a_t)=Q_{\pi^\star}(s_t,a_t)= E[R_t+\gamma \cdot Q_{\pi^\star}(S_{t+1},A_{t+1})]Q(st,at)=Qπ(st,at)=E[Rt+γQπ(St+1,At+1)]
    t+1时刻的动作按下式进行计算:At+1=argmaxaQ⋆(st+1,a)A_{t+1}=\mathop{argmax}\limits_{a} Q^\star (s_{t+1},a)At+1=aargmaxQ(st+1,a)
    则最优动作价值函数可作如下近似:Q⋆(st,at)=E[Rt+γ⋅maxaQ⋆(St+1,a)]≈rt+maxaQ⋆(st+1,a)Q^\star(s_t,a_t)=E[R_t+\gamma \cdot \mathop{max}\limits_{a}Q^\star(S_{t+1},a)]\\ \approx r_t+\mathop{max}\limits_{a}Q^\star(s_{t+1},a)Q(st,at)=E[Rt+γamaxQ(St+1,a)]rt+amaxQ(st+1,a)

    2.2 表格形式的Q-learning算法

    S\Aa1a_1a1a2a_2a2a3a_3a3a4a_4a4
    s1(找出此行最大的Q)s_1(找出此行最大的Q)s1(Q)Q11Q_{11}Q11
    s2s_2s2
    s3s_3s3
    s4s_4s4

    计算步骤为:

  • 观测到一个transition,即:(st,at,rt,st+1)(s_t,a_t,r_t,s_{t+1})(st,at,rt,st+1)
  • TD Target为:yt=rt+maxaQ⋆(st+1,a)y_t=r_t+\mathop{max}\limits_{a}Q^\star(s_{t+1},a)yt=rt+amaxQ(st+1,a)
  • TD error为:δt=Q⋆(st,at)−yt\delta_t=Q^\star(s_t,a_t)-y_tδt=Q(st,at)yt
  • 更新表格:Q⋆(st,at)←Q⋆(st,at)−α⋅δtQ^\star(s_t,a_t)\gets Q^\star(s_t,a_t) - \alpha \cdot \delta_tQ(st,at)Q(st,at)αδt
  • 2.3 神经网络形式的Q-learning算法(DQN)

  • 观测到一个transition,即:(st,at,rt,st+1)(s_t,a_t,r_t,s_{t+1})(st,at,rt,st+1)
  • TD Target为:yt=rt+maxaQ(st+1,a;W)y_t=r_t+\mathop{max}\limits_{a}Q(s_{t+1},a;W)yt=rt+amaxQ(st+1,aW)
  • TD error为:δt=Q(st,at;W)−yt\delta_t=Q(s_{t},a_t;W)-y_tδt=Q(st,atW)yt
  • 参数更新:W←W−α⋅δt⋅∂Q(st,at;W)∂WW\gets W - \alpha \cdot \delta_t \cdot \frac{\partial Q(s_t,a_t;W)}{\partial W}WWαδtWQ(st,at;W)
  • 3. Saras和Q-learning的区别

  • Sarsa学习动作价值函数: Qπ(s,a)Q_\pi(s,a)Qπ(s,a)
  • Actor-Critic中的价值网络为用Sarsa训练的
  • Q-learning训练最优动作价值函数:Q⋆(s,a)Q^\star(s,a)Q(s,a)
  • 4. Multi-step TD Target

    • one-step仅使用一个reward:rtr_trt
    • multi-step 使用m个reward:rt,rt+1,...,tt+m−1r_t,r_{t+1},...,t_{t+m-1}rt,rt+1,...,tt+m1

    4.1 Sarsa的Multi-step TD Target

    yt=∑i=0m−1λirt+i+λmQπ(st+m,at+m)y_t = \sum_{i=0}^{m-1}\lambda^i r_{t+i} + \lambda^mQ_\pi(s_{t+m},a_{t+m})yt=i=0m1λirt+i+λmQπ(st+m,at+m)

    4.2 Q-learning的Multi-step TD Target

    yt=∑i=0m−1λirt+i+λmmaxaQ⋆(st+m,a)y_t = \sum_{i=0}^{m-1}\lambda^i r_{t+i} + \lambda^m\mathop{max}\limits_{a}Q^\star(s_{t+m},a)yt=i=0m1λirt+i+λmamaxQ(st+m,a)
    本文为参考B站学习视频书写的笔记!
    by CyrusMay 2022 04 08

    我们在小孩和大人的转角
    盖一座城堡
    ——————五月天(好好)——————

    总结

    以上是生活随笔为你收集整理的强化学习—— TD算法(Sarsa算法+Q-learning算法)的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。