Deep q Learning (dqn)

阅读量:

使用神经网络来替代 Q-Learning 中的 Q-Function,来估计状态 - 动作的价值

Deep Q-Learning (DQN)_figure_1.png

WHY

针对状态空间很大无法对状态 - 动作进行一一对应建立 Q-table 的情况

WHAT

对图像进行裁剪及灰度化,减少状态空间的复杂度以节省训练时间。将 4 帧画面结合以便获得时间上的信息。

Deep Q-Learning (DQN)_figure_2.png

HOW

使用深度神经网络来估计每个状态下不同动作的 Q 值,通过损失函数来更新神经网络的权重

Deep Q-Learning (DQN)_figure_3.png

DQN 有两个阶段:

  1. 取样(Sampling):记录观察到的场景数据在重放内存中
  2. 训练(Training):随机选取一小批场景数据,并使用梯度下降的方法进行训练

Deep Q-Learning (DQN)_figure_4.png

实例

HOW GOOD

重放机制提高利用已有场景的效率

  1. 通过创建重放缓存,记录部分已有场景的样本,使其能在训练过程中被重复利用。使得 Agent 可以对相同的场景进行重复学习。
  2. 防止 Agent 在学习新场景时,忘记先前出现的场景,并减少场景之间的相关度。

固定 Q-Target 使训练更加稳定

由于使用相同的权重来估计 Q-target 和 Q-value,Q-target 同样会产生偏移。因此使用一个独立的网络并使用固定的参数来估计 Q-target,每经过一定的训练次数,复制训练用 DQN 网络中的参数至估计用的 DQN 网络。

Double DQN

上文图中 DQN 算法即为 Double DQN 算法伪代码,Target DQN 中的参数每经过一定的训练次数后更新,在训练过程中使用 Target DQN 计算奖励值,并根据梯度下降更新 Training DQN 的参数。通过使用 Double DQN 可以有效降低网络的过拟合。

ref.

#待整理笔记

反向链接

到头儿啦~

局部关系图