随后我们用随机梯度下降的方法去最小化最小均方差 (MSE),一般这个方法在优化的过程中都会奏效的。如果每一个状态和动作都有一个单独的值,那么在这个方法下,价值函数会收敛到一个最优值。不幸的是,由于我们使用的是神经网络,会有两个问题出现: 采样之间的相关性:加入我是一个四处走动的机器人,通过实际数据来学习。我将算法中的每一步视为采取行动的状态,如此一来,这些状态和动作就会和上一次执行的动作非常接近。也就是说,我们采取的方法中存在很强的相关性。 我们从中学习到的目标依赖于目标本身,因此这些都是非平稳的动态。正是由于非平稳动态的存在,我们的近似函数会螺旋式失控,并且导致我们的算法崩溃。 如果我们继续使用神经网络,上述两个问题是不会被解决的。 为了实现稳定的深度强化学习,我们引入的第一个方法是被称为 DQN 的深度强化网络。如下面的 PPT 所描述的,这在 Q 学习的基础上引入了根本的提升。其中的思想非常简单:通过让代理从自己的经历中构建数据集,消除非平稳动态中的所有相关性。然后从数据集中抽取一些经历并进行更新。 在解释完前面的东西之后,David Silver 给大家举了一个他们 DeepMind 团队的一个例子:Atari 游戏。他们训练出了一个能够将 Atari 游戏玩的很好的系统。相信下面的插图能够有助于读者理解代理和环境(包括状态、动作以及奖励)之间的关系 Atari 中的 DQN 从状态 s 中端对端地学习 Q 价值函数Q(s,a)。 输入状态 s 是最近 4 帧的原始像素组成的堆栈 输出的 Q 价值函数 Q(s,a) 用于 18个操纵杆/按钮的位置 奖励就是每一步动作所对应的得分的变化 这是一个卷积神经网络 (CNN) 网络结构和超参数在所有的游戏中都是固定不变的。 采用深度 Q 网络的 Atari 的 Demo: Nature 上关于深度 Q 网络 (DQN) 论文:
GoogleDeep Mind 团队深度 Q 网络 (DQN) 源码:
我们之前也介绍过一次深度 Q 网络 (DQN) : 继 Nature 上发表深度 Q 网络之后,有好多关于 DQN 的改进。但 David 主要关注以下三点: 双深度 Q 网络(Double DQN): 要理解第一个改进,我们首先必须明白 Q 学习中存在的一个问题。问题就踹 MAX 算子上。事实上那样得到的近似值不足以做出决定,并且这个偏差可能在实际应用中导致一系列问题。因此,为了解决这个问题,我们用了两个深度 Q 网络把评价动作的方式分解为两个路径。一个深度 Q 网络用来选择动作,另一个用来评价动作,这在实践中确实很有帮助。 确定优先级的经历回放: 第二个改进就是我们做经历回放的方式。旧方法做经历回放的时候会给所有的经历附一个相同的权重。然而相等的权重并不是一个好的思想,如果给所有的经历给一个优先级,你可能做得更好一些。我们仅仅采用了以此误差的绝对值,它表示在一个时刻的某一个特定状态有多么好或者多么差。那些你并没有很好的理解的经历才是所有的经历中你最想回放的。因为需要更多的更新来矫正你的键值。 决斗网络(DuelingNetwork) (责任编辑:本港台直播) |