赞
踩
本文关注的核心是如何将 RL 算法扩展到连续的、高维的状态空间中(动作空间还是离散的)。过去的表格型方法(如 Q-learning 等),使用 Q-Table 存储所有 s s s 或 ( s , a ) (s,a) (s,a) 的价值,这在离散、低维的状态空间中没什么问题,但当状态空间非常复杂时,表格的大小会快速上升到无法接受的程度
这里关键有两个问题
针对这两个问题,作者使用以下方法解决
具体实现上,作者设计了一个三卷积层 + 两全连接层的端到端神经网络同时达成上述两个目标,对于某一个状态,输入游戏图像,输出各个动作的价值。注意,本文方法 DQN 仅适用与离散动作空间
使用神经网络参数化 Q 价值时,早期的一些工作将 history-action pair(其实就是
(
s
,
a
)
(s,a)
(s,a)) 作为网络输入,这种结构对于每一个可行动作都要单独做前向传递来计算 Q 值,从而导致计算成本与动作的数量成线性关系。比如 2005 年的 Neural Fitted Q Iteration – First Experiences with a Data Efficient Neural Reinforcement Learning Method 这篇工作就是这样
在本文中,作者使用了一个更加巧妙的结构,网络的输入是状态表示,每个可能的动作都有一个单独的输出单元给出其预测 Q 价值。这样我们就能通过一次前向传递计算出给的状态下的所有可行动作价值
这个网络称为深度Q网络 Deep Q Network (DQN)
,是本文的核心,本文算法也由此得名
训练不稳定
:要良好地估计价值函数,需要无限次地访问所有
s
s
s 或
(
s
,
a
)
(s,a)
(s,a),因此 agent 不得不把环境探索结合到其策略中,比如使用
ε
\varepsilon
ε-greedy 策略,这不但增加了不稳定性,且无法直接得到最优策略。更重要的是,on-policy 算法的探索是直接建立在其价值估计上的,而价值估计又来自探索经验,二者循环依赖,这会导致更强的风险寻求行为(比如某状态位置价值估计高了,就会进一步倾向于试探这附近的位置,有点正反馈的意味),使得训练不稳定数据相关性强
:由于我们使用轨迹中连续的 transition 作为训练样本,短期数据相关性是很强的(比如玩电子游戏,连续两帧画面之间非常相似),这违反了机器学习常见的 i.i.d 原则,在做梯度下降时,最近一段时间内的梯度方向总是相似,会导致更多震荡数据利用率低
:on-policy 要求必须使用当下行为策略采集的 transition 更新策略,因此过去的经验 transition 无法重用,所有数据用一次就扔掉了,有些当前不重要但后期重要的 transition 无法发挥最大作用,数据浪费严重在表格型 Q-learning 中,我们根据 Bellman Optimal Equation,通过 bootstrap 方式更新网络参数,即
Q
i
+
1
(
s
,
a
)
=
Q
i
(
s
,
a
)
+
α
[
r
+
γ
max
a
’
Q
i
(
s
′
,
a
′
)
−
Q
i
(
s
,
a
)
]
Q_{i+1}(s,a) =Q_i(s,a)+\alpha[r+\gamma \max_{a’}Q_i(s',a')-Q_i(s,a)]
Qi+1(s,a)=Qi(s,a)+α[r+γa’maxQi(s′,a′)−Qi(s,a)] 引入
θ
\theta
θ 参数化的神经网络作为价值函数逼近器,自然的想法是如下基于 TD error 设计 L2 损失
L
i
(
θ
i
)
=
E
s
,
a
,
r
[
(
E
s
′
[
y
∣
s
,
a
]
−
Q
(
s
,
a
,
θ
i
)
)
2
]
=
E
s
,
a
,
r
,
s
′
[
(
y
−
Q
(
s
,
a
,
θ
i
)
)
2
]
−
E
s
,
a
,
r
[
V
s
′
[
y
]
]
注:这里推导可以先把原始展开得到 E [ y ] 2 \mathbb{E}[y]^2 E[y]2,再根据期望-方差关系公式有 E [ y ] 2 = E [ y 2 ] + V [ y ] \mathbb{E}[y]^2 = \mathbb{E}[y^2]+\mathbb{V}[y] E[y]2=E[y2]+V[y]
但是这就引入了两个问题
在本文中,作者通过引入一个由
θ
−
\theta^-
θ− 参数化的独立的 目标网络 target network
来解决上述问题,该网络的结构、输入输出等和 DQN 完全一致,每隔一段时间,就把其网络参数
θ
−
\theta^-
θ− 更新为 DQN 的参数
θ
\theta
θ,其唯一用处就是给出 TD target
y
y
y,于是损失函数表示为(忽略无关的方差项)
L
i
(
θ
i
)
=
E
s
,
a
,
r
,
s
′
[
(
r
+
γ
max
a
′
Q
(
s
′
,
a
′
,
θ
i
−
)
−
Q
(
s
,
a
,
θ
i
)
)
2
]
L_i(\theta_i) = \mathbb{E}_{s,a,r,s'}\big[(r+\gamma \max_{a'}Q(s',a',\theta_i^-)-Q(s,a,\theta_i))^2\big]
Li(θi)=Es,a,r,s′[(r+γa′maxQ(s′,a′,θi−)−Q(s,a,θi))2] 梯度为
▽
θ
i
L
i
(
θ
i
)
=
E
s
,
a
,
r
,
s
′
[
(
r
+
γ
max
a
′
Q
(
s
′
,
a
′
,
θ
i
−
)
−
Q
(
s
,
a
,
θ
i
)
)
▽
θ
i
Q
(
s
,
a
,
θ
i
)
]
\triangledown_{\theta_i}L_i(\theta_i) = \mathbb{E}_{s,a,r,s'}\big[(r+\gamma \max_{a'}Q(s',a',\theta_i^-)-Q(s,a,\theta_i)) \triangledown_{\theta_i}Q(s,a,\theta_i)\big]
▽θiLi(θi)=Es,a,r,s′[(r+γa′maxQ(s′,a′,θi−)−Q(s,a,θi))▽θiQ(s,a,θi)] 工程中,使用随机梯度下降 SGD 来完成优化,另外当令
θ
i
−
=
θ
i
−
1
\theta_i^-=\theta_{i-1}
θi−=θi−1 时,退化为原始的 Q-Learning 更新形式
引入目标网络带来两个好处
不过事实上,作者这里并没有完全解决高估问题,因为选择动作时的最大化操作仍然会导致高估,另外目标网络的参数依然是来自 DQN 的,无法完全避免 Bootstrapping。本文发表一年后,即 2016 年在 AAAI 发表的 Deep Reinforcement Learning with Double Q-Learning 提出了 DDQN 方法,模仿 Double Q-learning 的思路进一步处理了高估问题,它做的改动其实非常小,观察 TD target 公式
y
=
r
+
γ
max
a
′
Q
(
s
′
,
a
′
,
θ
)
y=r+\gamma \max_{a'}Q(s',a',\theta)
y=r+γa′maxQ(s′,a′,θ) 它可以看作选择最优动作
a
∗
a^*
a∗ 和计算 TD target
y
y
y 两步
这里有点跑题了,其实本文作者根本没有分析价值高估的相关问题,只是说引入目标网络可以使训练更稳定
从算法角度看,本文方法可以分成两块看待
其实这篇文章的核心方法,包括进入神经网络,引入 experience replay 都不是新东西,只有 target network 算是原创,因此本文没有被人工智能顶会接受,而是利用亮眼的性能表现取巧地投了 Nature
这篇文章的方法还比较原始,后续出现了很多改进,比如
- Double-DQN:将动作选择和价值估计分开,避免价值过高估计
- Dueling-DQN:将Q值分解为状态价值和优势函数,得到更多有用信息
- Prioritized Replay Buffer:将经验池中的经验按照优先级进行采样
- Multi-Step Learning:使得目标价值估计更为准确
- Distributional DQN(Categorical DQN):得到价值分布
- NoisyNet:增强模型的探索能力
另外,引入函数近似后,Bellman backup 和 Bellman optimal backup 的收敛性都不能保证了,可以参考 强化学习拾遗 —— Bellman 迭代的收敛性。这是一个隐患,目前很多文章也都只是在离散环境下证明一下收敛
总之,DQN 拉开了深度强化学习的序幕,深度神经网络的强大性能也给 RL 领域带来了像当年 CV 领域一样巨大的性能提升。DQN 系列的工作占据了 DRL 领域的半壁江山,所以我把 DQN 作为 “RL经典” 系列的第一篇文章,以后的再慢慢写吧
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。