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

在这里插入图片描述

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

    =

    q

    t

    y

    t

    delta_t=q_t-y_t

    δt=qtyt

  • TD Learning:

    L

    (

    W

    )

    =

    1

    T

    t

    =

    1

    T

    δ

    t

    2

    2

    L(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为:

    (

    s

    t

    ,

    a

    t

    ,

    r

    t

    ,

    s

    t

    +

    1

    )

    (s_t,a_t,r_t,s_{t+1})

    (st,at,rt,st+1)

  • 经验(所有的transition)为:

    {

    (

    s

    1

    ,

    a

    1

    ,

    r

    1

    ,

    s

    2

    ,

    )

    ,

    .

    .

    .

    (

    s

    t

    ,

    a

    t

    ,

    r

    t

    ,

    s

    t

    +

    1

    )

    ,

    .

    .

    .

    ,

    s

    T

    ,

    a

    T

    ,

    r

    T

    ,

    s

    T

    +

    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

(

s

t

,

s

t

+

1

)

r(s_t,s_{t+1})

r(st,st+1)

2 经验回放

2.1 简介

  1. 一个transition为:

    (

    s

    t

    ,

    a

    t

    ,

    r

    t

    ,

    s

    t

    +

    1

    )

    (s_t,a_t,r_t,s_{t+1})

    (st,at,rt,st+1)

  2. 回放容器(replay buffer)为:存储n个transition
  3. 如果超过n个transition时,删除最早进入容器的transition
  4. 容器容量(buffer capacity)n为一个超参数:

    n

    1

    0

    5

    1

    0

    6

    n一般设置为较大的数,如10^5sim 10^6\具体大小取决于任务

    n105106

2.2 计算步骤

  1. 最小化目标为:

    L

    (

    W

    )

    =

    1

    T

    t

    =

    1

    T

    δ

    t

    2

    2

    L(W)=frac{1}{T}sum_{t=1}^{T} frac{delta_t^2}{2}

    L(W)=T1t=1T2δt2

  2. 使用随机梯度下降(SGD)进行更新:
  • 从buffer中随机抽样:

    (

    s

    i

    ,

    a

    i

    ,

    r

    i

    ,

    s

    i

    +

    1

    )

    (s_i,a_i,r_i,s_{i+1})

    (si,ai,ri,si+1)

  • 计算TD Error:

    δ

    i

    delta_i

    δi

  • 随机梯度为:

    g

    i

    =

    δ

    i

    2

    2

    W

    =

    δ

    i

    Q

    (

    s

    i

    ,

    a

    i

    ;

    W

    )

    W

    g_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

    α

    g

    i

    Wgets W-alpha g_i

    WWαgi

2.3 经验回放的优点

  1. 打破了序列相关性
  2. 重复利用过去的经验

3. 改进的经验回放(Prioritized experience replay)

3.1 基本思想

  1. 不是所有transition都同等重要
  2. TD error 越大,则transition更重要:

    δ

    t

    |delta_t|

    δt

3.2 重要性抽样(importance sampling)

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

3.2.1 抽样方式

  1. p

    t

    δ

    t

    +

    ϵ

    p_t propto |delta_t|+epsilon

    ptδt+ϵ

  2. transition依据TD error进行降序处理,rank(t)代表第t个transition:

    p

    t

    1

    r

    a

    n

    k

    (

    t

    )

    +

    ϵ

    p_t propto frac{1}{rank(t)}+epsilon

    ptrank(t)1+ϵ
    总而言之,TD error越大,被抽样的概率越大,通常按Mini-batch进行抽样。

3.2.2 学习率变换(scaling learning rate)

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

  • SGD:

    W

    W

    α

    g

    Wgets W-alpha cdot g

    WWαg

  • 均匀抽样:学习率对于所有transition都一样(转换因子为1):

    p

    1

    =

    p

    2

    =

    .

    .

    .

    =

    p

    n

    p_1=p_2=...=p_n

    p1=p2=...=pn

  • 非均匀抽样:高概率对应低学习率:

    (

    n

    p

    t

    )

    β

    β

    [

    0

    ,

    1

    ]

    (ncdot p_t)^{-beta}\ beta in [0,1]

    (npt)ββ[0,1]网络刚开始训练时,β设置较小,随着网络训练,逐渐增加β至1。

3.2.3 训练过程

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

    δ

    t

    delta_t

    δt

3.3 总结

transition sampling probabilities learning rates

(

s

t

,

a

t

,

r

t

,

s

t

+

1

)

(s_t,a_t,r_t,s_{t+1})

(st,at,rt,st+1)

p

t

δ

t

+

ϵ

p_t propto |delta_t|+epsilon

ptδt+ϵ

α

n

(

p

t

)

β

alpha cdot ncdot (p_t)^{-beta}

αn(pt)β

(

s

t

+

1

,

a

t

+

1

,

r

t

+

1

,

s

t

+

2

)

(s_{t+1},a_{t+1},r_{t+1},s_{t+2})

(st+1,at+1,rt+1,st+2)

p

t

+

1

δ

t

+

1

+

ϵ

p_{t+1}propto |delta_{t+1}|+epsilon

pt+1δt+1+ϵ

α

n

(

p

t

+

1

)

β

alpha cdot ncdot (p_{t+1})^{-beta}

αn(pt+1)β

(

s

t

+

2

,

a

t

+

2

,

r

t

+

2

,

s

t

+

3

)

(s_{t+2},a_{t+2},r_{t+2},s_{t+3})

(st+2,at+2,rt+2,st+3)

p

t

+

2

δ

t

+

2

+

ϵ

p_{t+2}propto |delta_{t+2}|+epsilon

pt+2δt+2+ϵ

α

n

(

p

t

+

2

)

β

alpha cdot ncdot (p_{t+2})^{-beta}

αn(pt+2)β

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

by CyrusMay 2022 04 10

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>