从零开始强化学习(五)——Deep Q-network(DQN)

五. Deep Q-network(DQN)

现实中强化学习面临的状态空间往往是连续的,存在无穷多个状态。这种情况下,就不能再使用表格对价值函数进行存储,采用价值函数近似(Value Function Approximation)的方式进行逼近

在连续的状态和动作空间中,可以用函数Q_\phi(s,a)来表示近似计算:
Q_\phi(s,a) \approx Q^\pi(s,a)
其中函数Q_\phi(s,a)通常是一个参数为\phi的函数,比如神经网络

5.1 状态价值函数(State Value Function)

衡量这个状态价值函数V^{\pi}(s),有两种不同的做法:MC-based的方法和TD-based的方法:

5.1.1 蒙特卡洛法
  • 方法:

    • 输入一个状态,输出接下来的累计奖励。是一个回归问题。网络的输出就是一个值,你希望在输入s_a的时候,输出的值跟 G_a越近越好,输入s_b的时候,输出的值跟G_b越近越好,把网络训练下去就是MC-based的方法
  • 问题:

    • 由于每次都要计算累积奖励,所以必须等待游戏结束才能更新网络,这样花的时间太长
    • 方差很大。本身具有随机性,累积奖励可以看成是一个随机变量


5.1.2 时序差分法
  • 方法:

    • 假设在某一个状态s_t,采取动作a_t得到奖励r_t ,跳到状态s_{t+1} ,则有:

    V^\pi(s_t) = V^\pi(s_{t+1})+r_t

    • 希望V^\pi(s_t)V^\pi(s_{t+1})相减的损失跟r_t相似,并以此更新V的参数

5.2 动作价值函数(State-action Value Function)

动作价值函数的输入是状态、动作对。表示在某一个状态采取某一个动作,都是用演员\pi,得到的累计奖励期望值
Q函数的两种写法:

  1. 输入是状态和动作,输出是一个标量
  2. 输入是状态,输出是多个值(只有离散动作才能使用)

方法:

  • 假设有一个Q函数和某一个策略\pi,根据策略\pi学习出的Q函数,保证可以找到一个\pi好的新的策略\pi',在用相同方法找它的Q函数以及新的更好的策略\pi'(s) = \arg \max\limits_a Q^\pi(s,a)

证明:为什么用Q^\pi(s,a)决定出来的\pi'一定比\pi

  1. V π ( s ) = Q π ( s , a ) V^\pi(s)=Q^\pi(s,a)V
  2. \max_a Q^\pi(s,a) = Q^\pi(s,\pi'(s))max

由1、2式可得:

  1. V^{\pi}(s) \leq Q^\pi(s,\pi'(s))
  2. Q^\pi(s,\pi'(s)) = E[r_t+V^\pi(s_{t+1})|s_t=s,a_t=\pi'(s)]

综合3、4可得:V^{\pi}(s) \leq E[r_t+r_{t+1}V^\pi(s_{t+2})|s_t=s,a_t=\pi'(s)]
=E[r_t+r_{t+1}+r_{t+2}+V^\pi(s_{t+3})|s_t=s,a_t=\pi'(s)]=E[r_t+r_{t+1}+r_{t+2}+\cdots|s_t=s,a_t=\pi'(s)]=V^{\pi'}(s)

即证毕,对于估计某一个策略的Q-function,接下来就可以找到另外一个策略\pi'比原来的策略还要更好


5.3 目标网络(target network)

在学习Q-function的时候,会用到TD的概念。那怎么用TD?在状态s_t,采取动作a_t以后,得到奖励r_t,然后跳到状态s_{t+1}。根据这个Q-function:
\mathrm{Q}^{\pi}\left(s_{t}, a_{t}\right) =r_{t}+\mathrm{Q}^{\pi}\left(s_{t+1}, \pi\left(s_{t+1}\right)\right)
但是实际上这样的一个输入并不好学习,因为假设这是一个回归问题,\mathrm{Q}^{\pi}\left(s_{t}, a_{t}\right)是网络的输出,r_{t}+\mathrm{Q}^{\pi}\left(s_{t+1}, \pi\left(s_{t+1}\right)\right)是目标,实际上目标是可变的。在做反向传播的时候,Q^{\pi}的参数会被更新,并会把两个更新的结果加在一起,这样会导致训练变得不太稳定

所以可以把其中一个Q网络,通常是会把右边这个Q网络固定住。在训练的时候只更新左边的Q网络的参数,而右边的Q网络的参数会被固定住。因为右边的**Q网络负责产生目标,所以叫目标网络**。因为目标网络是固定的,所以得到的目标r_{t}+\mathrm{Q}^{\pi}\left(s_{t+1}, \pi\left(s_{t+1}\right)\right)的值也是固定的。只调左边网络的参数,它就变成是一个回归问题。希望模型的输出的值跟目标越接近越好,可以最小化它的均方误差(mean square error)

在实现的时候,把目标网络固定,只调模型输出的网络。在把输出的网络更新几次以后,再去用更新的网络替换目标网络

5.4 探索(Exploration)

这个问题其实就是探索-利用窘境(Exploration-Exploitation dilemma)问题

当使用Q函数时,策略完全取决于Q函数。在采取动作的时候,会采取Q值最大的动作。这样可能会一直采取相同的动作,所以需要探索机制,避免一直采取相同的动作

5.4.1 ε-贪心(ε-greedy)
  • 定义:

    • 有1-ε的概率会按照Q函数决定动作,主要根据Q函数决定动作,比较少随机决定动作:
      \pi(a|s)= \begin{cases} \underset{a}{\operatorname{argmax}}Q(s,a)\ \ \ \ 1-ε\\ 随机\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ε \end{cases}

    • 通常ε会随时间递减。随着训练次数的增多可以减少探索

  • 对象:

    • 无法尝试Q值比较差的动作,可能的动作有:
      • 最大Q值对应动作
      • 随机动作
5.4.2 玻尔兹曼探索(Bolzman Exploration)
  • 定义:

    • 输出动作空间上的概率分布,根据概率分布采样选择动作(取指数 --> 归一化)
      P(a|s) = \frac{\exp(Q(s,a))}{\sum_a \exp(Q(s,a))}
  • 对象:

    • 根据Q值确定了动作空间的概率分布,可以通过采样选择任意动作

5.5 经验回放(Experience Replay)

思想:构建一个回访缓冲区(replay buffer),会将策略与环境互动收集的数据(状态-动作-奖励...)放到缓冲区中。循环迭代训练Q函数时,会从数据缓冲区随机挑一个批量(batch)出来更新Q函数。

迭代地去训练这个Q-function,在每次迭代里面,从这个buffer里面随机挑一个batch出来,根据这把经验去更新Q-function,就跟TD learning要有一个目标网络是一样的

特点:

  • 回访缓冲区内的经验可能来自不同策略
  • 异策略(off-policy)
  • 减少了跟环境做互动的次数,数据利用高效
  • 多样化的训练数据

5.6 DQN原理

DQN使用深度卷积神经网络近似拟合状态动作值函数Q(s,a),其网络结构如上图所示。DQN模型的输入是距离当前时刻最近的4帧图像,该输入经过3个卷积层和2个全连接层的非线性变化后,最终在输出层输出每个动作对应的Q值


算法:

  1. 初始化两个网络Q,\hat{Q},开始目标网络\hat{Q}等于Q
  2. 基于Q函数探索机制Q(ε,玻尔兹曼)选择动作,获得奖励,状态从s_t跳到s_{t+1}
  3. 将数据经验(s_t,a_t,r_{t+1},s_{t+1})塞到数据缓冲区中
  4. 从缓冲区中采样一批量的数据,根据数据计算目标:y=r_i+\max_a \hat{Q}(s_{i+1},a)
  5. 更新Q的参数使得Q(s_i,a_i)尽可能接近于y(回归)
  6. 每C步更新目标网络\hat{Q}=Q
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容