前期回顾
强化学习经典算法笔记(零):贝尔曼方程的推导
强化学习经典算法笔记(一):价值迭代算法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′,收到环境给出的回报
- 将序列 < s , a , r , s ′ > <s,a,r,s'> <s,a,r,s