DQN全称 Deep Q Network. 中文大概是深度强化学习。之前以为深度学习是,深入学习的意思,虽然不知道具体怎么回事,但是感觉很吊很吊。。。其实就是强化学习的逻辑中引入了深度神经网络。后面会介绍原因
基础强化学习
承接之前的“Q-Learning基础强化学习算法”,上一篇提到基础强化学习就是建立一张大的Q值表,里面含有每个状态每个选择对应的Q值,在不断试错之后一张完整的Q值表就能指导后续的选择。
但是,Q-Learning的一个最基础的问题是,很多很多问题的状态太多,不能穷举。或者说,状态是连续的,不是离散的。 比如,汽车速度,0~100,那么其中的状态是无法穷举的。所以无法建立一张很大很大的Q-值表,而且就算建立起来,索引也会成为问题。
基于以上问题,我们能直观的看出,比如汽车速度 99.01和99.02 这两者实际上是差不多的,那么两者状态相近对应的选择也应该类似。
换句话说,我们需要一个工具。在我们提供一个感觉差不多的状态下,能给出一个感觉差不多的解。在之前一篇“机器学习的hello world”中提到神经网络就是专门解决这种凭感觉的问题。
DQN简介
DQN简单来说就是Q-Learning和深度神经网络的结合。
Q-Learning 再简单介绍下,就是收集一张涵盖所有状态下所有选择的Q值表。在训练完成后,我们输入状态,查询得到该状态下所有动作的Q值,选择最大的Q值。
那么神经网络的作用就是,输入状态值,输出该状态下所有的Q值。在我们试错训练很多次之后,神经网络将能够继承计算状态下 动作对应的Q值。
引入神经网络的第一个好处是,解决状态太多的问题,例如围棋盘面,例如汽车速度等等。 神经网络第二个好处是解决索引问题。 当我们建立一张很大的表格时,索引将非常费时。 但是对于神经网络来说,所有的信息都存储在每个神经元中,只要正向数据流转一遍就能得出结果。
总结
DQN其实就是Q-Learning和神经网络的结合。 神经网络对Q-Learning有很大的补充作用。并且,DQN可以用来玩小霸王游戏,DQN也是阿法狗Zero中很重要的一部分。
DQN简单应用
下面就是一个例子,OpenAI的一个游戏“Carpole”
Carpole就是大家小时候应该都玩过的游戏。一个棒子立在小车上,我们控制小车向左或者向右来保持棒子不倒。
简答来说,这个游戏就是,在某个状态下,我要采取什么动作? 所以在这个环境中我们的动作和状态是什么呢?
动作:向左 or 向右
状态:
车的位置
车的速度
杆子的角度(倾斜程度)
杆子顶端的速度
后续篇章,将继续讲解DQN算法及其应用代码。
领取专属 10元无门槛券
私享最新 技术干货