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)

为什么要经验回放?

  • 网络是健忘的

参考文献

  • https://medium.freecodecamp.org/an-introduction-to-q-learning-reinforcement-learning-14ac0b4493cc