引言
本文将对深度强化学习中经典算法DQN进行详细介绍,先分别介绍强化学习和Q-学习,然后再引入深度强化学习和DQN。本文所有参考资料及部分插图来源均列在文末,在文中不做额外说明。强化学习
讲强化学习先讲其适用的场景。强化学习多用在需要与环境交互的场景下,即给定一个环境的状态(State
),程序根据某种策略(Policy
)选出一个对应的行为(Action
),而执行这个Action
后环境又会发生改变,即状态会转换为新的状态S'
,且每执行完一个Action
后程序会得到一个激励值(Reward
),而程序就依据得到的激励值的大小调整其策略,使得在所有步骤执行完后,即状态到达终止状态(Terminal
)时,所获得的Reward
之和最大。
上面说的可能比较抽象,举个例子,假如我们的程序是一只小狗,现在我们让它坐下(给它一个State
),它如果听话(某种Policy)坐下(执行Action
),那么我们就给它一个鸡腿(正激励),而如果它不听话(某种Policy
)跑开了(执行另一种Action
),我们就罚它一顿不许吃饭(负激励),而在它执行完这个行为后,我们可以再次对它提出要求,比如让它站起来(新的State
),然后如此往复。小狗对我们给的每一个状态都要给出一个行为,而我们会在它每次给出行为后决定给它一个什么样的激励,且环境的状态在它执行完Action
后可能会发生变化,然后它需要对新环境再继续根据某种策略选择执行新的动作,从而得到新的激励。而我们训练的目的,就是使得总的激励值之和最大。
总结一下,在强化学习中,我们关注的有如下几点:
- 环境观测值/状态 State
- 动作选择策略 Policy
- 执行的动作/行为 Action
- 得到的奖励 Reward
- 下一个状态 S’
强化学习执行流程如上图所示,Agent
是我们的程序,它观察Environment
并获得state
,依据它的Policy
对state
做出action
,此时能得到一个reward
,且Environment
改变了,因此Agent
会得到一个新的state
,并继续执行下去。Q-Learning
Q学习算法是强化学习中的一种,更准确的说,是一种关于策略的选择方式。实际上,我们可以发现,强化学习的核心和训练目标就是选择一个合适的策略Policy
,使得在每个epoch
结束时得到的reward
之和最大。
Q学习的思想是:Q(S, A)
= 在状态S
下,采取动作A
后