深度Q网络:防止灾难性遗忘与提升学习稳定性
1. 防止灾难性遗忘:经验回放
在随机模式下,学习效果并不理想,没有明显的有效学习迹象。如果强化学习只能进行记忆式学习或微弱学习,那它的价值就会大打折扣。
1.1 灾难性遗忘
当尝试在随机模式下训练模型时,会遇到一个名为“灾难性遗忘”的问题。这是在线训练中基于梯度下降的训练方法的一个重要问题。在线训练是指在玩游戏时每移动一步就进行一次反向传播。
例如,在游戏1中,玩家位于坑和目标之间,目标在右,坑在左。玩家随机向右移动并到达目标,算法会更新权重以学习这个高价值的状态 - 动作对。而在游戏2中,玩家同样位于坑和目标之间,但目标在左,坑在右。由于之前向右移动获得了正奖励,玩家再次向右移动,结果掉进了坑,获得 -1 奖励。此时,算法可能会再次进行反向传播来更新状态 - 动作值,但由于这个状态 - 动作与之前学习的非常相似,可能会覆盖之前学习到的权重,导致无法正确学习。
1.2 经验回放
对于游戏的第一种变体,由于目标是固定的,可能不需要担心灾难性遗忘问题,模型也能成功学会玩游戏。但在随机模式下,就需要实现经验回放。
经验回放的工作流程如下:
1. 在状态 s 下,采取动作 a,观察新状态 st+1 和奖励 rt+1。
2. 将其作为元组 (s, a, st+1, rt+1) 存储在列表中。
3. 持续将每个经验存储在列表中,直到列表达到指定长度(可自行定义)。
4. 当经验回放内存填满后,随机选择一个子集(同样需要自行定义子集大小)。
5. 遍历这个子集,计算每个子集的值更新,并将其存储在目标数组(如 Y)
超级会员免费看
订阅专栏 解锁全文
1533

被折叠的 条评论
为什么被折叠?



