文章目录
1. 深度强化学习(Deep Q-Network,DQN)问题引入
传统Q-learning方法难以处理真实场景下的高维数据,将大量的state和 Q Q Q value存储在内存中会导致计算复杂。于是有研究者想到利用深度神经网络(DNN)来高维数据的强化学习问题,其核心思想是利用价值函数的近似(Value Function Approximation)求解,通过深度神经网络来表示 Q Q Q值的近似分布。粗略地理解,可以认为利用深度神经网络(DNN)来代替Q-learning中的Q-table。下图描述了如何利用深度神经网络来进行强化学习(图片来源:Mnih, V., Kavukcuoglu, K., Silver, D., Rusu, A. A., Veness, J., Bellemare, M. G., … & Petersen, S. (2015). Human-level control through deep reinforcement learning. Nature, 518(7540), 529. 在线阅读)
从某种意义上,我们可以将深度神经网络(DNN)视为一个黑盒子。拿强化学习代理玩游戏作为应用场景案例,DNN将游戏状态作为输入并返回每个动作的Q值近似值,之后我们选择具有最大Q值的动作——就像传统的Q-learning方法一样。 为了使我们的神经网络能够根据环境进行预测,我们必须为它们提供输入和输出对进行训练,神经网络将通过迭代地更新参数来训练该数据以基于输入来近似输出。
为什么玩电子游戏没办法直接用Q-learning 来学习最佳路径呢?因为电子游戏的每一帧图片就可以是一种状态,游戏中的角色又可以有多种动作(上下左右,下蹲跳跃等等)。如果用Q表来记录每一个动作所对应的状态,那么这张Q表将大到无法想象。
—— from AI学习笔记——深度Q-Learning(Deep Q-Learing(DQN))
2. 问题建模
首先,我们按照深度学习范式来构建损失函数,如下所示:
(1) L i ( θ i ) = E s , a ∼ ρ ( ⋅ ) [ ( y i − Q ( s , a ; θ i ) ) 2 ] L_i\left ( \theta_i \right )=\mathbb{E}_{s,a\sim \rho \left ( \cdot \right )}\left [ \left ( y_i-Q\left ( s,a;\theta_i \right ) \right ) ^{2} \right ] \tag {1} Li(θi)=Es,a∼ρ(⋅)[(yi−Q(s,a;θi))2](1)
其中, i i i表示迭代次数, θ i \theta_i θi表示第 i i i次迭代时的Q-network的网络权重。 ρ ( s , a ) \rho (s,a) ρ(s,a)是状态序列 s s s和动作 a a a的概率分布,我们将其称之为行为分布(behaviour distribution)。 Q ( s , a ; θ i ) Q\left ( s,a;\theta_i \right ) Q(s,a;θi)表示Q-network中通过神经网络来拟合的Q值函数,即 Q ( s , a ; θ ) ≈ Q ∗ ( s , a ) Q\left ( s,a;\theta \right ) \approx Q^*\left ( s,a \right ) Q(s,a;θ)≈Q∗(s,a)。 y i y_i yi表示第 i i i次迭代的目标 Q Q Q值(target Q Q Q):
(2) y i = E s ′ ∼ ε [ r + γ ⋅ max a ′ Q ( s ′ , a ′ ; θ i − 1 ) ∣ s , a ] y_i=\mathbb{E}_{s' \sim \varepsilon }\left [ r+\gamma \cdot \text{max}_{a'} Q\left ( s',a';\theta_{i-1} \right ) \mid s,a \right ] \tag {2} yi=Es′∼ε[r+γ⋅maxa′Q(s′,a′;θi−1)∣s,a](2)
和深度学习方法一致,在第 i i i次迭代计算损失值时,我们采用的是第 i − 1 i-1 i−1次迭代的网络权重。上述公式(2)中, r + γ ⋅ max a ′ Q ( s ′ , a ′ ; θ i − 1 ) r+\gamma \cdot \text{max}_{a'} Q\left ( s',a';\theta_{i-1} \right ) r+γ⋅maxa′Q(s′,a′;θi−1)表示目标 Q Q Q值(它通过以前的网络权重进行计算), Q ( s , a ) Q\left( {s,a} \right) Q(s,a)表示当前的 Q Q Q值(它通过当前最新的网络权重进行计算)。这里,我们可以回顾Q-learning算法中的 Q Q Q值更新公式(学习率设置为1):
(3) Q ( s t , a t ) ← Q ( s t + 1 , a t ) ← r t + λ ⋅ max a Q ( s t + 1 , a ) ← r t + γ ⋅ max a Q ( s t + 1 , a ) \begin{aligned} Q\left( {
{s_t},{a_t}} \right) &\leftarrow Q\left( {
{s_{t + 1}},{a_t}} \right) \\ &\leftarrow {r_t} + \lambda \cdot \mathop {\max }\limits_a Q\left( {
{s_{t + 1}},a} \right) \\ & \leftarrow {r_t} + \gamma \cdot \mathop {\max }\limits_a Q\left( {
{s_{t + 1}},a} \right) \end{aligned} \tag {3} Q(st,at)←Q(st+1,at)←rt+λ⋅amaxQ(st+1,a)←rt+γ⋅amaxQ(st+1,a)(3)
通过公式(3)能够佐证,公式(2)中的 ( r + γ ⋅ max a ′ Q ^ ( s , a ′ ) ) \left( {r + \gamma \cdot \mathop {\max }\limits_{a'} \hat Q\left( {s,a'} \right)} \right) (r+γ⋅a′max