欢迎访问 生活随笔!

生活随笔

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

编程问答

强化学习—— 经验回放(Experience Replay)

发布时间:2025/3/21 编程问答 45 豆豆
生活随笔 收集整理的这篇文章主要介绍了 强化学习—— 经验回放(Experience Replay) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

强化学习—— 经验回放(Experience Replay)

  • 1、DQN的缺点
    • 1.1 DQN
    • 1.2 DQN的不足
      • 1.2.1 经验浪费
      • 1.2.2 相关更新(correlated update)
  • 2 经验回放
    • 2.1 简介
    • 2.2 计算步骤
    • 2.3 经验回放的优点
  • 3. 改进的经验回放(Prioritized experience replay)
    • 3.1 基本思想
    • 3.2 重要性抽样(importance sampling)
      • 3.2.1 抽样方式
      • 3.2.2 学习率变换(scaling learning rate)
      • 3.2.3 训练过程
    • 3.3 总结

1、DQN的缺点

1.1 DQN

  • 近似最优动作价值函数:Q(s,a;W)∼Q⋆(s,a)Q(s,a;W)\sim Q^\star (s,a)Q(s,a;W)Q(s,a)
  • TD error:δt=qt−yt\delta_t=q_t-y_tδt=qtyt
  • TD Learning:L(W)=1T∑t=1Tδt22L(W)=\frac{1}{T}\sum_{t=1}^{T} \frac{\delta_t^2}{2}L(W)=T1t=1T2δt2

1.2 DQN的不足

1.2.1 经验浪费

  • 一个 transition为:(st,at,rt,st+1)(s_t,a_t,r_t,s_{t+1})(st,at,rt,st+1)
  • 经验(所有的transition)为:{(s1,a1,r1,s2,),...(st,at,rt,st+1),...,sT,aT,rT,sT+1}\{(s1,a1,r1,s2,),...(s_t,a_t,r_t,s_{t+1}),...,s_T,a_T,r_T,s_{T+1}\}{(s1,a1,r1,s2,),...(st,at,rt,st+1),...,sT,aT,rT,sT+1}

1.2.2 相关更新(correlated update)

通常t时刻的状态和t+1时刻的状态是强相关的。
r(st,st+1)r(s_t,s_{t+1})r(st,st+1)

2 经验回放

2.1 简介

  • 一个transition为:(st,at,rt,st+1)(s_t,a_t,r_t,s_{t+1})(st,at,rt,st+1)
  • 回放容器(replay buffer)为:存储n个transition
  • 如果超过n个transition时,删除最早进入容器的transition
  • 容器容量(buffer capacity)n为一个超参数:n一般设置为较大的数,如105∼106具体大小取决于任务n一般设置为较大的数,如10^5\sim 10^6\\具体大小取决于任务n105106
  • 2.2 计算步骤

  • 最小化目标为:L(W)=1T∑t=1Tδt22L(W)=\frac{1}{T}\sum_{t=1}^{T} \frac{\delta_t^2}{2}L(W)=T1t=1T2δt2
  • 使用随机梯度下降(SGD)进行更新:
    • 从buffer中随机抽样:(si,ai,ri,si+1)(s_i,a_i,r_i,s_{i+1})(si,ai,ri,si+1)
    • 计算TD Error:δi\delta_iδi
    • 随机梯度为:gi=∂δi22∂W=δi⋅∂Q(si,ai;W)∂Wg_i=\frac{\partial \frac{\delta_i^2}{2}}{\partial W}= \delta_i \cdot \frac{\partial Q(s_i,a_i;W)}{\partial W}gi=W2δi2=δiWQ(si,ai;W)
    • 梯度更新:W←W−αgiW\gets W-\alpha g_iWWαgi

    2.3 经验回放的优点

  • 打破了序列相关性
  • 重复利用过去的经验
  • 3. 改进的经验回放(Prioritized experience replay)

    3.1 基本思想

  • 不是所有transition都同等重要
  • TD error 越大,则transition更重要:∣δt∣|\delta_t|δt
  • 3.2 重要性抽样(importance sampling)

    用非均匀抽样替代均匀抽样

    3.2.1 抽样方式

  • pt∝∣δt∣+ϵp_t \propto |\delta_t|+\epsilonptδt+ϵ
  • transition依据TD error进行降序处理,rank(t)代表第t个transition:pt∝1rank(t)+ϵp_t \propto \frac{1}{rank(t)}+\epsilonptrank(t)1+ϵ
    总而言之,TD error越大,被抽样的概率越大,通常按Mini-batch进行抽样。
  • 3.2.2 学习率变换(scaling learning rate)

    为了抵消不同抽样概率造成的学习偏差,需要对学习率进行变换

    • SGD:W←W−α⋅gW\gets W-\alpha \cdot gWWαg
    • 均匀抽样:学习率对于所有transition都一样(转换因子为1):p1=p2=...=pnp_1=p_2=...=p_np1=p2=...=pn
    • 非均匀抽样:高概率对应低学习率:(n⋅pt)−ββ∈[0,1](n\cdot p_t)^{-\beta}\\ \beta \in [0,1](npt)ββ[0,1]网络刚开始训练时,β设置较小,随着网络训练,逐渐增加β至1。

    3.2.3 训练过程

  • 如果一个transition最近被收集,还未知其TD Error,将其TD Error设为最大值,即具有最高的优先级。
  • 每次从replay buffer中选取出一个transition,然后更新其TD Error:δt\delta_tδt
  • 3.3 总结

    transitionsampling probabilitieslearning rates
    (st,at,rt,st+1)(s_t,a_t,r_t,s_{t+1})(st,at,rt,st+1)pt∝∣δt∣+ϵp_t \propto |\delta_t|+\epsilonptδt+ϵα⋅n⋅(pt)−β\alpha \cdot n\cdot (p_t)^{-\beta}αn(pt)β
    (st+1,at+1,rt+1,st+2)(s_{t+1},a_{t+1},r_{t+1},s_{t+2})(st+1,at+1,rt+1,st+2)pt+1∝∣δt+1∣+ϵp_{t+1}\propto |\delta_{t+1}|+\epsilonpt+1δt+1+ϵα⋅n⋅(pt+1)−β\alpha \cdot n\cdot (p_{t+1})^{-\beta}αn(pt+1)β
    (st+2,at+2,rt+2,st+3)(s_{t+2},a_{t+2},r_{t+2},s_{t+3})(st+2,at+2,rt+2,st+3)pt+2∝∣δt+2∣+ϵp_{t+2}\propto |\delta_{t+2}|+\epsilonpt+2δt+2+ϵα⋅n⋅(pt+2)−β\alpha \cdot n\cdot (p_{t+2})^{-\beta}αn(pt+2)β

    本文内容为参考B站学习视频书写的笔记!

    by CyrusMay 2022 04 10

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

    总结

    以上是生活随笔为你收集整理的强化学习—— 经验回放(Experience Replay)的全部内容,希望文章能够帮你解决所遇到的问题。

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