一、时序差分学习(Temporal Difference Learning)
强化学习中常用时序差分学习来更新模型,时序差分学习的一般流程是:
- 模型根据获取到的状态 决定采取动作 。
- 环境在执行动作 后会给出对应的奖励 和新的状态 。
- 根据 TD target 计算出 TD error , 然后使用 梯度下降 等方法更新模型来降低 TD error 的值。
- 回到1重复。
二、经验回放(Experience Replay)
原始的时序差分学习在实际的应用中有两个缺点:
- 经验浪费 从上面的流程可以看出,经验 在使用一次后就会被丢掉。但是事实上,这些经验可以重复利用的。这也是需要做经验回放的主要原因。
- 经验相关性太强 前后相邻的经验的相关性太强了。比如对游戏来说,上一帧的画面和下一帧的画面变化很小。实验证明这种相关性是有害的,不利于模型的训练。
经验回放则可以有效的解决上面的两个缺点。
经验回放的原理就是只保留最近的 条经验,每次训练时 随机均匀的 从这些经验中 不重复的 选取一条或多条经验来训练。
的大小通常在十万到百万之间,视情况而定。这个值对训练影响较大。 经验回放现在是深度强化学习的标准技巧之一。
三、优先经验回放(Prioritized Experience Replay)
对经验回放改进有很多,其中一个常见的是优先经验回放。
优先经验回放的原理是 用非均匀抽样代替均匀抽样 来抽取经验。
3.1 经验的重要性不同
模型在和环境交互时,获得的经验的重要性是不同的。
比如:在一个打怪升级的游戏中,大多数经验都是和小兵战斗,只有很少的经验是和BOSS战斗。这样就容易导致训练出来的模型容易战胜小兵,但是很难打赢BOSS。所以和BOSS战斗的经验比和小兵战斗的经验更为重要。
3.2 经验的抽样概率
对于越不熟悉的状态,模型预测出的 TD error 的绝对值就会越大,所以可以根据 TD error 的绝对值的大小来判断一条经验的重要性。即 TD error 的绝对值越大越重要。
将 TD error 对应到抽样概率的方式有两种:
-
经验抽样的概率 正比于 TD error 的绝对值加上一个很小的数 (避免概率为0)。
-
将所有经验的 TD error 的绝对值进行排序,大的靠前,小的靠后。 经验抽样的概率反比于排序后经验所处的位置。
3.3 调整学习率
因为抽样时是非均匀的,所以需要调整学习率来抵消不同抽样概率造成的偏差。
如果一条经验的抽样概率很大,那么它就会经常的被抽到用于更新模型,所以需要调小这条经验的学习率。反之亦然。
每条经验的学习率都需要乘以系数 ,其中 是经验回放池中经验的总条数, 是每条经验的抽验概率, 是一个超参数,值在0到1之间, 。
对于均匀抽样来说,每条经验概率相同, ,学习率系数 值的和为1。
对于非均匀抽样来说,抽样概率 越大,学习率系数 的值越小。论文中推荐开始时 值很小,后面逐步增长到1。
3.4 实现细节
需要将所有的经验 都计算出对应的 TD error。
对于刚刚收集到的经验,可以将其 TD error 的值设置为最大值。
每次使用经验后都需要更新对应的 TD error 。
参考:Experience Replay 经验回放论文:Reinforcement Learning for Robots Using Neural Networks 优先经验回放论文:Prioritized Experience Replay