强化学习经典算法笔记(六):深度Q值网络 Deep Q Network

前期回顾

强化学习经典算法笔记(零):贝尔曼方程的推导
强化学习经典算法笔记(一):价值迭代算法Value Iteration
强化学习经典算法笔记(二):策略迭代算法Policy Iteration
强化学习经典算法笔记(三):蒙特卡罗方法Monte Calo Method
强化学习经典算法笔记(四):时间差分算法Temporal Difference(Q-Learning算法)
强化学习经典算法笔记(五):时间差分算法Temporal Difference(SARSA算法)

强化学习经典算法笔记——深度Q值网络

  到这里,我们终于来到了深度强化学习的领域了,之前的算法都是经典RL算法,它们和DRL的关系好比是机器学习和深度学习的关系。深度神经网络的引入极大地提升了强化学习算法的效率和能力,使强化学习的研究进入了新的阶段。

简介

  深度强化学习的经典之作是2015年DeepMind发表在Nature的DQN论文《Human-Level Control Through Deep Reinforcement Learning》。本篇博客就讲一讲DQN的基本框架思想,并用代码实现它。

  DQN属于Q-Learning算法,也是一种Value-Based算法,并不直接学习一个Policy,而是学习Critic,也就是学习如何评价当前状态的好坏,进而根据Q值选取最佳的action。因此可以将DQN中的神经网络看做是一个复杂的Q-function,本质上,它和前几篇中提到的Q-table干的事是一样的,只不过神经网络的函数拟合能力很强,它能胜任更复杂的RL任务。

  我个人观点,深度强化学习的框架大致可以分为两部分,一部分是感知(Sensoring),另一部分是决策(Decision Making)。

  DRL往往需要学习一个感知算法,感知真实环境的各种信息。有的感知器输出一个标量,反映当前环境或状态动作对的好坏;有的感知器则是对真实环境进行建模,将当前状态抽象成一个隐层特征,用于后续的决策算法使用,这类算法有DeepMind的World Model和PlaNet系列,我们以后都会讲到。

  感知算法是对真实环境的总结和特征提取,要想做出决策,还需要一个决策算法。比如DQN中的 ϵ − g r e e d y \epsilon-greedy ϵgreedy算法,虽然是一个比较简单的policy算法,直接采取具有最大Q值的动作作为当前策略,但是我们也可以看做是一个决策算法,它利用了上一步的感知器对环境的感知信息。

  再比如,AlphaGo系列算法中,CNN负责对当前棋盘状态提取特征,给出当前胜算(也就是评估当前状态好坏),接着蒙特卡洛树搜索算法根据CNN输出的Q值计算子结点的U值,进行棋盘搜索,完成决策。

  从感知和决策的角度审视深度强化学习,深度神经网络的引入提升了感知和决策两方面的效果。我们在这一篇主要讲神经网络对感知能力的提升,而将神经网络用于决策的内容放到后面去讲。但是,将神经网络用于强化学习早已有之,不过效果一直不好,直到DQN引入了几个核心技术,才将性能大大提升,即

  • 卷积神经网络 CNN
  • 目标网络 Target Network
  • 经验回放 Experience Replay

  DQN应该是第一个采用原始图像作为CNN输入进行训练的,也应该是第一个将CNN在RL发挥巨大威力的算法。DQN中的CNN采用和AlexNet类似的结构。

  目标网络是DQN的一大贡献。我们知道,与环境交互具有极大的随机性,XXXXXXXXXXXXXXXXX

  经验回放是DQN的另一贡献。我们知道,一个episode是一个时间关联性很强的(状态-动作-回报)序列,如果直接拿若干个episode的序列数据来训练CNN,XXXXXXXXXXXXXXXXXXXXXXX

现在让我们看看DQN完整的算法

以下操作执行N个Episode:

  • 将游戏画面 s s s进行预处理,送入CNN,输出每个动作的Q值
  • 根据 ϵ − g r e e d y \epsilon-greedy ϵgreedy算法计算应该采取的动作 a = a r g m a x ( Q ( s , a , θ ) ) a=argmax(Q(s,a,\theta)) a=argmax(Q(s,a,θ))
  • 执行动作 a a a,转移到下一状态 s ′ s' s,收到环境给出的回报
  • 将序列 &lt; s , a , r , s ′ &gt; &lt;s,a,r,s&#x27;&gt; <s,a,r,s
Prioritized Replay 是 Deep Q-Network (DQN) 中的一种重要改进算。在传统的 DQN 算中,模型训练是基于经验回放技术的。简单来说,就是将之前的一些观察和动作的经验随机地从经验池中抽取出来进行训练。但是,这种随机抽样并没有考虑到每个经验的重要性。有些经验虽然出现的次数很少,但是对模型的训练影响很大。因此,如果我们能够对经验进行优先级的排序,就能够更加有效地训练模型。 在 Prioritized Replay 算中,我们使用了一个优先级队列来对经验进行排序。每个经验的优先级是根据其对模型训练的贡献来计算的。具体来说,每个经验的优先级为: $P_i = |\delta_i| + \epsilon$ 其中 $|\delta_i|$ 表示当前状态下真实 Q 值与估计 Q 值之差的绝对值,$\epsilon$ 是一个很小的常数,避免了某些经验的优先级为 0。这个公式的意思是,我们更倾向于选择那些真实 Q 值与估计 Q 值之差较大的经验进行训练。 在进行经验回放时,我们根据经验的优先级从优先级队列中抽取出经验。我们还需要一个重要的参数 $\alpha$,它表示优先级的重要程度。在优先级队列中,每个经验的优先级 $P_i$ 都会被赋予一个权重 $w_i$,它表示该经验在训练中的重要性。这个权重的计算公式为: $w_i = (\frac{1}{N} \frac{1}{P_i})^{\alpha}$ 其中 $N$ 是经验池中经验的总数,$\alpha$ 是一个超参数,控制优先级的重要程度。这个公式的意思是,优先级较高的经验在训练中得到的权重也较高,从而更加有效地更新模型。 需要注意的是,在 Prioritized Replay 算中,我们对经验进行了优先级排序,但是这并不意味着我们只选择优先级高的经验进行训练。为了保证训练的稳定性,我们还需要引入一个随机因素,以一定的概率从优先级较低的经验中进行抽样。 总之,Prioritized Replay 算通过对经验进行优先级排序,从而更加有效地训练模型。它是 DQN 算的一个重要改进,被广泛地应用于深度强化学习领域。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值