Deep Q­-Learning

Q-Learning

在 Q-Learning 中定义函数 $Q(s, a)$ 表示在当前状态 $s$ 下采取动作 $a$ 获得的最大有损奖励

$$ Q\left(s_{t}, a_{t}\right)=\max R_{t+1} $$

可以将 $Q(s, a)$ 理解为在一局游戏中,如果在状态 $s$ 下采取动作 $a$ 后,在游戏结束所能获得的最高分。即 Q-函数 表示在某一个状态下采取相应动作的质量

那么策略 $\pi(s)$ 就可以表示成在每个状态 $s$ 下选择动作 $a$ 的函数

$$\pi(s)=\operatorname{argmax}_{a} Q(s, a)$$

许多强化学习算法的基本思想都是通过迭代更新 Bellman 方程来对动作-值进行估计,最佳的得分奖励是由当前环境的即使奖励 $r$ 和下一个状态 $s^{\prime}$ 的最大奖励的加和。

$$ Q_{i+1}(s, a)=r+\gamma \max _{a^{\prime}} Q_{i}\left(s^{\prime}, a^{\prime}\right) $$

Q-Learning 的核心思想:用 Bellman 方程迭代近似估计 Q-函数。一种最简单的方式实现 Q-函数 的方式就是建立一个行为状态,列为动作的表格。

Q-learning 伪代码表示如下

其中 $\alpha$ 成为学习率,用于控制上一时刻的 Q-值 与下一时刻 Q-值 的差值对更新过程的影响,当 $\alpha=1$ 时,上式即为 Bellman 方程。

假设在上图中令机器人从起始位置往右移动 1 步,然后计算并更新 Q-值。

当 $i \rightarrow \infty$ 时,即可找到最佳动作值函数 $Q_{i+t} \rightarrow Q^{*}$。但是在实际当中,每个轨迹序列当中,动作值函数都是被单独估计,不具有任何的泛化的能力。比较常见的方式就是使用(如神经网络)线性或者非线性的估计函数来对动作值函数进行近似估计。

深度 Q 网络(Deep Q Network)

假设状态是一张 64*64 分辨率的图像,那么每个像素点用 8bit 的灰度值表示,那么状态 $s$ 就可能有 $256^{64 \times 64}$ 种可能,如果构造这么一张巨大无比的 Q-Table,那将是不现实的。

对于高度结构化的数据,正好适合用深度神经网络来对 Q 函数进行近似估计。输入状态 $s$ 和动作,通过网络,输出对应的 Q-值。另一种方式是在 DeepMind 文章中,只是输入当前的状态 $s$, 输出各个 Action 对应的 Q-值。

在 Google DeepMind 的 Paper 中使用了如下的网络结构来对 $\max _{a} \cdot Q\left(s^{\prime}, a^{\prime}\right)$ 进行近似估计

DeepMind 在文章中使用的网络模型如下。

Q 值可能是任意的实数,把对 Q 值的估计看作是机器学习中的回归问题,所以使用 平方误差损失(squared error loss) 作为优化的目标函数。

$$ L_{i}\left(\theta_{i}\right)=\mathbb{E}_{\left(s, a, r, s^{\prime}\right) \sim \mathrm{U}(D)}\left[\left(r+\gamma \max _{a^{\prime}} Q\left(s^{\prime}, a^{\prime} ; \theta_{i}^{-}\right)-Q\left(s, a ; \theta_{i}\right)\right)^{2}\right] $$

给定轨迹 $<s, a, r, s^{\prime}>$ ,使用神经网络替换 Q-Table 过程如下

  1. 输入当前状态 $s$,预测所有动作 $a$ 的 Q-值;
  2. 输入下一状态 $s$,计算最大 $\max _{a^{\prime}} Q\left(s^{\prime}, a^{\prime}\right)$
  3. 设置 Q 值优化目标为 $r+ \gamma \max _{a^{\prime}} Q\left(s^{\prime}, a^{\prime}\right)$
  4. 反向传播更新网络 weights;

目标 $\max _{a^{\prime}} Q$ 取决于神经网络中神经元的权重。监督学习在学习之前,待估计的目标是确定的。 在优化 $L_{i}\left(\theta_{i}\right)$ 时保持上一次迭代参数 $\theta_{i}^{-}$ 固定不变。

利用随机梯度下降优化损失函数

$$\nabla_{\theta_{i}} L\left(\theta_{i}\right)=\mathbb{E}_{s, a, r, s^{\prime}}\left[\left(r+\gamma \max _{a^{\prime}} Q\left(s^{\prime}, a^{\prime} ; \theta_{i}^{-}\right)-Q\left(s, a ; \theta_{i}\right)\right) \nabla_{\theta_{i}} Q\left(s, a ; \theta_{i}\right)\right]$$

经验回放(Exploration-Exploitation)

为什么要经验回放?

  • 网络是健忘的

参考文献