美文网首页
Deep Q-learning Network(DQN)

Deep Q-learning Network(DQN)

作者: 倒着念 | 来源:发表于2018-10-29 18:00 被阅读183次

    概述

    DQN其实是深度学习和强化学习知识的结合,也就是用Deep Networks框架来近似逼近强化学习中的Q value。其中,使用的Deep Networks有两种框架,分别如下图所示:

    框架1

    框架1的输入是State和Action,State可以是一个游戏画面,Action可以是向下走,开火等,通过Network输出的是在State的情况下采取Action的Q value。

    框架2

    框架2的输入是当前的State,通过Network输出的是在这个State的情况下,采取不同的Action所预测的Q value值,DQN paper中所采取的框架是框架2。

    DQN是由两个Network组成,一个是Evaluation Network就是我们用来预测不同action的Q value值,另一个则是Target Network,是用来模拟真实的Q value值。DQN的loss就是一个L2 regression的loss,其公式如下:

    loss function

    y就是Evaluation Network要预测的Q(st, at)的值,其中st和at是已知的实验数据。剩下的减去的那一部分则是Target Network逼近的真实的Q(st, at)的值,rt,st+1是已知的,因此我们将st+1代入到Target Network中求最大的Q(st+1, at+1)的值即可。

    Q-learning

    Q-learning我们用到的是时序差分的方法(即TD),公式如下所示:

    Q-learning formula

    因为,我们要通过Q value来寻找出最优的policy,所以我们应该求的是最大的Q value值,即:

    优化公示

    我们知道,TD和Monte Carlo方法的不同在于,TD是根据multiple step(1, 2, ....)来进行训练的,而Monte Carlo方法则是根据一个一个的episode进行训练的。因此,TD方法相对来说速度会快一些。

    Replay Buffer

    在训练我们的Network之前,我们首先要进行多次实验,将其st, at, rt, st+1这组数据存入Buffer中,因为存的数据次序具有序列相关性,所以我们在训练的时候为了让每个trajectory相对独立,于是便对存储的数据进行随机采样进行训练,这个思想就是Replay Buffer。

    Exploration

    因为在实验中,我们不可能得到所有的(state,action)pair的Q value值,如果我们一直采用Q value值最大的action往往会出现问题。因为,那些我们实验中没有采取过的动作的Q value值很有可能会大于我们实验中采取过的动作。因此,我们需要有一定的探索能力,而探索的方法有很多种,比如epsilon-greedy和boltsman exploration方法。

    epsilon-greedy方法是设置一个epsilon值,有1-epsilon的概率会不选用最大的Q value动作,而使用随机的动作;boltsman exploration方法相当于最后的输出加一层softmax层,根据概率分布选择相应的动作。

    Reference

    1. 李宏毅.DRL Lecture3

    2. https://github.com/MorvanZhou/PyTorch-Tutorial/blob/master/tutorial-contents/405_DQN_Reinforcement_learning.py

    3. Human-level control through deep reinforcement learning

    相关文章

      网友评论

          本文标题:Deep Q-learning Network(DQN)

          本文链接:https://www.haomeiwen.com/subject/hcabtqtx.html