文章目录
DQN
连续状态和动作空间带来的维度爆炸,说明了使用表格形式存储**状态值函数(state value function)–V(s)或状态动作值函数(state-action value function: Q-function)–Q(s, a)**存在很大的局限性。
值函数近似(Value Function Approximation)
利用函数直接拟合状态值函数
或状态动作值函数
,减少了对存储空间的需求。用如下公式表示:
Q
ϕ
(
s
→
,
a
→
)
≈
Q
π
(
s
,
a
)
Q_\phi(\overrightarrow {s},\ \overrightarrow{a}) \approx Q^π(s, \ a)
Qϕ(s, a)≈Qπ(s, a)
- s, a分别是状态s和动作a的向量表示
- 函数Qø(s, a)通常是一个参数为ø的函数,比如
神经网络
,输出为一个标量,称为Q网络(Q-network)
Q-learning
是value-based
的方法。在value-based方法里,要学习的不是一个策略,而是一个critic(评论家)
,它的作用就是用来评估某个策略π到底好不好,即Policy Evaluation
State Value Function
critic都要绑定一个actor
定义
actor–π看到state–s之后一直到游戏结束时的奖励的期望值,称为**(state value function)–V(s)**
State Value Function Estimation
MC(Monte-Carlo)-based
让演员actor去和环境做互动,critic统计各种状态出现后直到游戏结束时的累计奖励,求期望。
但不可能会见过所有的状态,特别是以图像作为输入的情况。实际上Vπ(s)是一个网络,它可以预估那些从未出现的状态,类似于regression problem
,拟合各种状态s下得到的累计奖励G。

MC最大的问题是每次状态接下来的动作都是不确定的,这些不确定性累计起来会导致G的方差很大。
TD(Temporal-difference)-based
在MC-based方法中每次都要把游戏玩完,但有些游戏很耗时。这种情况就会采取TD-based的方法。
根据 state value function 的定义:
V
π
(
s
t
)
=
V
π
(
s
t
+
1
)
+
r
t
V^\pi(s_t) = V^\pi(s_{t+1}) + r_t
Vπ(st)=Vπ(st+1)+rt
希望学出来的网络能够使相邻两个状态的差值接近rt
State-action Value Function(Q-function)
定义
在状态s强制采取动作a,之后任由π玩下去得到的累计奖励的期望值–Qπ(s, a)
表示方法
如上两种结构图所示:
- 输入(state,action),输出标量Qπ(s, a)
- 输入state,输出每种action对应的Q值
Policy Improvement
当获取了Q-function之后,就可以做强化学习。我们就可以决定某状态下到底要选取什么动作。
并且一定能找到一个比π更好的策略π’,即Vπ’(s) ≥ Vπ(s)。有一种π’的动作选取策略为:
π
′
(
s
)
=
arg max
a
Q
π
(
s
,
a
)
\pi'(s) = \underset{a}{\operatorname{arg\,max}}Q^\pi(s,a)
π′(s)=aargmaxQπ(s,a)
根据定义有:
V
π
(
s
)
=
Q
π
(
s
,
π
(
s
)
)
≤
max
a
Q
π
(
s
,
a
)
=
Q
π
(
s
,
π
′
(
s
)
)
V^\pi(s) = Q^\pi(s,\pi(s)) \le \underset{a}{\operatorname{max}} Q^\pi(s,a) = Q^{\pi}(s,\pi'(s))
Vπ(s)=Qπ(s,π(s))≤amaxQπ(s,a)=Qπ(s,π′(s))
π’在第一步选取的动作带来的r就比π大,之后每一步都这么选,肯定更大。
Q
π
(
s
,
π
′
(
s
)
)
=
E
[
r
t
+
V
π
(
s
t
+
1
)
∣
s
t
=
s
,
a
t
=
π
′
(
s
t
)
]
≤
E
[
r
t
+
Q
π
(
s
t
+
1
,
π
′
(
s
t
+
1
)
)
∣
s
t
=
s
,
a
t
=
π
′
(
s
t
)
]
=
E
[
r
t
+
r
t
+
1
+
V
(
s
t
+
2
)
∣
s
t
=
s
,
a
t
=
π
′
(
s
t
)
]
≤
…
≤
E
[
r
t
+
r
t
+
1
+
r
t
+
2
+
…
∣
s
t
=
s
,
a
t
=
π
′
(
s
t
)
]
=
V
π
′
(
s
)
Q^{\pi}(s,\pi'(s)) = \operatorname{E}[r_t + V^\pi(s_{t+1}) \mid s_t = s,a_t = \pi'(s_t)] \le \operatorname{E}[r_t + Q^\pi(s_{t+1},\pi'(s_{t+1})) \mid s_t = s,a_t = \pi'(s_t)] \\ = \operatorname{E}[r_t + r_{t+1} + V(s_{t+2}) \mid s_t = s,a_t = \pi'(s_t)] \le … \le \operatorname{E}[r_t + r_{t+1} + r_{t+2} + … \mid s_t = s,a_t = \pi'(s_t)] = V^{\pi'}(s)
Qπ(s,π′(s))=E[rt+Vπ(st+1)∣st=s,at=π′(st)]≤E[rt+Qπ(st+1,π′(st+1))∣st=s,at=π′(st)]=E[rt+rt+1+V(st+2)∣st=s,at=π′(st)]≤…≤E[rt+rt+1+rt+2+…∣st=s,at=π′(st)]=Vπ′(s)
Tip1: Target Network

可以看成是一个regression problem
,但若Qπ(st, at)和Qπ(st+1, π(st+1))同时进行网络参数的更新,那么target(即label)不是固定的,肯定比较难训练。
因此,如上图所示,只是最初的时候分别产生Qπ(st, at)和Qπ(st+1, π(st+1))两个网络是一样的,左边的网络更新N次之后再将右边的网络更新成和左边一样的。说白了就是更新频率不一样。
注意目标值的动作是π(st+1) = argmaxa(Qπ(st+1, a)),所以如果某动作稍微扰动后变大使得目标网络倾向于选择它,导致要学习的目标变大,就会造成DQN的Q-estimation过大的问题.
Tip2: Exploration
为了解决探索-利用窘境(Exploration-Exploitation dilemma
Policy Gradient里面其实是在一大堆迹
里面采样动作,所以所有可能的动作都是有机会被选中的。
但使用Q-funtion时所采取的动作是使得Q最大的action,举例说明:若初始使所有state-action pair 的Q都等于0,那么一旦我在某状态下采取动作action_1得到了正的奖励,那么Q(state, action_1)的值就比所有其他的动作都要大,就会倾向于选择这个动作。但实际上其他的动作从来没有选到过,根本不知道好坏。
有两种方法解决这个问题:Epsilon Greedy
和 Boltzmann Exploration

Epsilon Greedy
以1-ε的概率选择最大的Q,但是也有小概率会随机选择其他的动作。并且随着训练时间的增加逐渐减小ε的值。
Boltzmann Exploration
根据每个动作的概率去选择具体要执行什么动作,当然是概率越高被选到的几率越大。
取指数的原因是Q有正有负。
Tip3: Experience Replay
说明:
- buffer的一个experience代表在状态st采取动作at得到的奖励rt和下一个状态st+1
- buffer里面存了很多种不同的π互动时的数据。例如每个π互动1k次,但是buffer可以存5w次互动的数据
- 当buffer满了之后就把原先老的经验丢掉
- 每次更新π的时候:都是从buffer里面随机采样一批数据,据此得到Q-function,然后更新π,因此是off-policy
好处:
- 过去的经验存在buffer里面可以重复利用,数据利用率高,并且十分节省互动的时间(占强化学习的大头)
- 用于更新π的数据并非来自同一个策略互动收集到的数据,有利于数据的多样性
Algorithm-DQN
DQN 使用深度卷积神经网络近似拟合状态动作值函数 Q(s, a),其网络结构如上图所示。DQN 模型的输入是距离当前时刻最近的 4 帧图像,该输入经过 3 个卷积层和 2 个全连接层的非线性变化后,最终在输出层输出每个动作对应的 Q 值。

整体来说,DQN 与 Q-learning 的目标价值
以及价值的更新方式
都非常相似,主要的不同点在于:
- DQN 将 Q-learning 与深度学习结合,用深度网络来近似动作价值函数,而 Q-learning 则是采用表格存储;
- DQN 采用了经验回放的训练方法,从历史数据中随机采样,而 Q-learning 直接采用下一个状态的数据进行学习。
经验
- 在 Atari 游戏里面,一般 mini-batch 设置为 32
- Experience replay 用在新问题上一般为 106