强化学习中的经验回放


一、时序差分学习(Temporal Difference Learning)

强化学习中常用时序差分学习来更新模型,时序差分学习的一般流程是:

  1. 模型根据获取到的状态 $s_t$ 决定采取动作 $a_t$ 。
  2. 环境在执行动作 $a_t$ 后会给出对应的奖励 $r_t$ 和新的状态 $s_{t+1}$ 。
  3. 根据 TD target 计算出 TD error , 然后使用 梯度下降 等方法更新模型来降低 TD error 的值。
  4. 回到1重复。

二、经验回放(Experience Replay)

原始的时序差分学习在实际的应用中有两个缺点:

  1. 经验浪费
    从上面的流程可以看出,经验 $(s_r, a_t, r_t, s_{t+1})$ 在使用一次后就会被丢掉。但是事实上,这些经验可以重复利用的。这也是需要做经验回放的主要原因。
  2. 经验相关性太强
    前后相邻的经验的相关性太强了。比如对游戏来说,上一帧的画面和下一帧的画面变化很小。实验证明这种相关性是有害的,不利于模型的训练。

经验回放则可以有效的解决上面的两个缺点。

经验回放的原理就是只保留最近的 $n$ 条经验,每次训练时 随机均匀的 从这些经验中 不重复的 选取一条或多条经验来训练。

$n$ 的大小通常在十万到百万之间,视情况而定。这个值对训练影响较大。
经验回放现在是深度强化学习的标准技巧之一。

三、优先经验回放(Prioritized Experience Replay)

对经验回放改进有很多,其中一个常见的是优先经验回放。

优先经验回放的原理是 用非均匀抽样代替均匀抽样 来抽取经验。

3.1 经验的重要性不同

模型在和环境交互时,获得的经验的重要性是不同的。

比如:在一个打怪升级的游戏中,大多数经验都是和小兵战斗,只有很少的经验是和BOSS战斗。这样就容易导致训练出来的模型容易战胜小兵,但是很难打赢BOSS。所以和BOSS战斗的经验比和小兵战斗的经验更为重要。

3.2 经验的抽样概率

对于越不熟悉的状态,模型预测出的 TD error 的绝对值就会越大,所以可以根据 TD error 的绝对值的大小来判断一条经验的重要性。即 TD error 的绝对值越大越重要。

TD error 对应到抽样概率的方式有两种:

  1. 经验抽样的概率 $p_t$ 正比于 TD error $\delta_t$ 的绝对值加上一个很小的数 $\epsilon$ (避免概率为0)。

  2. 将所有经验的 TD error 的绝对值进行排序,大的靠前,小的靠后。 经验抽样的概率反比于排序后经验所处的位置。

3.3 调整学习率

因为抽样时是非均匀的,所以需要调整学习率来抵消不同抽样概率造成的偏差。

如果一条经验的抽样概率很大,那么它就会经常的被抽到用于更新模型,所以需要调小这条经验的学习率。反之亦然。

每条经验的学习率都需要乘以系数 $(n \cdot p_t)^{-\beta}$,其中 $n$ 是经验回放池中经验的总条数, $p_t$ 是每条经验的抽验概率, $\beta$ 是一个超参数,值在0到1之间, $\beta \in (0, 1)$。

对于均匀抽样来说,每条经验概率相同,$p_1 = \cdots = p_n = \frac{1}{n}$ ,学习率系数 $(n \cdot p_t)^{-\beta}$ 值的和为1。

对于非均匀抽样来说,抽样概率 $p_t$ 越大,学习率系数 $(n \cdot p_t)^{-\beta}$ 的值越小。论文中推荐开始时 $\beta$ 值很小,后面逐步增长到1。

3.4 实现细节

需要将所有的经验 $(s_r, a_t, r_t, s_{t+1})$ 都计算出对应的 TD error

对于刚刚收集到的经验,可以将其 TD error 的值设置为最大值。

每次使用经验后都需要更新对应的 TD error


参考:Experience Replay
经验回放论文:Reinforcement Learning for Robots Using Neural Networks
优先经验回放论文:Prioritized Experience Replay


文章作者: Kiba Amor
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 Kiba Amor !
  目录