揭开深度增强学习的神秘面纱

版权声明:本文翻译整理自:https://www.nervanasys.com/demystifying-deep-reinforcement-learning/

2013年,一家位于伦敦的小公司DeepMind发表了一篇论文“Playing Atari with Deep Reinforcement Learning”,文中展示了如何训练计算机去玩Atari游戏。计算机仅仅通过观察游戏屏幕,在游戏得分增加时获得一个奖赏,就取得相当不错的游戏成绩。用同样的模型去玩另外7种不同的游戏,其中3种游戏电脑甚至超过了人类的水平。

该研究被认为是迈向通用人工智能的第一步,因为人工智能能够在各种复杂的环境下生存,而不仅仅是局限于某一个领域,比如下棋。文章发表后DeepMind很快被Google重金收购,并成为深度学习的明星公司。2年后的2015年他们改进了算法,在Nature杂志上发表了文章“Human-level control through deep reinforcement learning”。这这篇文章中,他们使用一个相同的模型去玩49种不同的游戏,半数游戏均取得了超越人类的水平。(译者注:2017年初,DeepMind利用深度增强学习等技术开发的围棋AI AlphaGo横扫人类顶尖棋手,取得了60连胜的成绩)。

目前为止,深度监督学习与非监督学习已经得到广泛的研究和应用,而深度增强学习还显得有些神秘。本文试图揭开深度增强学习神秘的面纱,理解其背后的原理。本文的针对的是有一定机器学习或神经网络基础,但还没有时间深入了解深度增强学习的读者。


增强学习

我们用一款叫做“Breakout”的游戏来说明。在这个游戏中,你将通过左右移动底部的球拍来接住并反弹球体,并击中顶部的砖块。一旦顶部的砖块被击中,它将消失,同时你的分值会增加——你获得了一个奖励(reward)。

揭开深度增强学习的神秘面纱
 

现在假设你要教会一个神经网络去玩这个游戏。神经网络的输入应该是游戏截屏,输出应该是3个动作(左、右或者发射)。这可以理解为一个分类任务,对于每个游戏截屏,需要选择一个动作,左、右或者发射。这个想法直截了当,但是你需要大量的训练数据。当然,你可以找一个游戏专家进行成千上万次的试验,从而获取游戏数据。但这不是我们人类的学习方式,我们不需要别人成千上万次的告诉我应该怎么做,我们只需要进行少量的尝试就可以学会这项游戏。

这就是增强学习要解决的任务。增强学习介于监督学习和非监督学习之间。监督学习的每一个训练样本都有标签(目标值),而非监督学习恰恰相反,没有任何标签。增强学习的标签是稀疏和延时的——即奖励(reward)。仅仅依靠这些奖励,模型就能学会在环境中进行学习并做出正确的动作。

这只是一种直观的感觉,在实践中还面临很多挑战。例如在“Breakout”游戏中,你击中了砖块获得了奖励。但在这之前,球拍可能移动了很多次,但是你不知道具体是哪次移动对这次击中的贡献最大。这被称为“信用分配问题(credit assignment problem”。

一旦你找到一种可以获得一定奖励的策略,你会选择固守这个策略呢,还是再进行其他探索,以期获得更大的奖励?还是以Breakout游戏为例,一个简单的策略是将球拍移到最左边不动,由于球落到左边的概率大于右边,你会轻易的在游戏结束前获得10分。那么问题来了,你是满足于这10分了还是想要更多? 这被称为“探索-利用困境(explore-exploit dilemma”——你是继续挖掘利用现有策略还是探索其他可能是更好的策略。

增强学习其实也是人类及其他动物学习的重要方式。父母的鼓励、学校的分数、工作的薪水都可以看作各种形式的奖励(reward)。信用分配问题和探索-利用困境在工作和生活中无处不在。所以这个模型对我们非常重要,而游戏为我们探索这个模型提供和很好的环境。


马尔科夫决策过程

现在的问题是,我们如何来形式化的表述和推导增强学习的模型。最常见的方式的把他看作一个马尔科夫决策过程。

假设你是一个个体(agent),处在一个环境(environment 中(例如Breakout游戏)。这个环境在某一时刻有一个确定的状态(state (例如球拍的位置,球的位置和角度,砖的数量和位置等等),个体可以做出一个特定的动作(action)(例如左移或者右移球拍)。这些动作可能会获得一个奖励(reward(例如积分增加,积分减少可以看作是负奖励)。这个动作使环境转移到下一个状态,然后个体再次做出一个动作,循环往复直到游戏结束。动作可能有很多个,我们选择动作的规则称为策略(policy。环境可能是随机的,这意味着下一个状态可能是随机的(比如Breakout游戏丢失一个球后,新开的球的位置和方向都是随机的)

揭开深度增强学习的神秘面纱
 

状态、动作和状态转换的规则的集合构成一个马尔科夫过程。一段过程可以构成一个序列:


揭开深度增强学习的神秘面纱

这里si表示状态,ai 表示动作,ri+1表示 执行这个动作后获得的奖励。这个序列结束于一个终止状态(例如,游戏结束画面)。马尔科夫决策过程的假设是下一个状态si+1只取决于当前的状态si及动作ai,而与之前的状态和动作无关。(译者注:以下棋为例,下一步该怎么落子,仅仅观察当前的棋局做出决定就可以了,不需要关心是怎么走到当前这个地步的)。


未来奖励的折扣

从长远考虑,我们不仅要关心暂时的奖励,还要关心未来的可能奖励,加在一起才是总的奖励。

给定一个马尔科夫决策过程,我们可以容易的计算出总的奖励:

揭开深度增强学习的神秘面纱

t时刻开始往后,未来的总奖励可以表示为:

揭开深度增强学习的神秘面纱

但是我们的环境经常是随机的,同样的动作可能不会得到同样的回报。越是往后,我们越不确定我们能获得不少奖励。所以,对于未来的奖励,通常的做法是乘上一个0-1之间的折扣因子,表示我们对未来的信心。

揭开深度增强学习的神秘面纱

这里 γ 是折扣因子,范围(0,1)

容易发现,这是一个递推式,可以写成:

揭开深度增强学习的神秘面纱

如果我们设γ=0,那么意味着我们只关心眼前利益,是短视的。如果要在当前和未来做一个平衡,我们需要把γ设为一个小数,如0.9。如果我们的环境是确定的,也就是说同样的动作会获得同样的奖励,那么可以设置γ=1.

一个好的策略应该是选择一个可以使得未来奖励最大化的动作。


Q学习

Q学习中,我们定义了一个函数 Q(s, a)表示我们在状态s下执行动作a所获得的最大的未来奖励。对于在t时刻有:

揭开深度增强学习的神秘面纱

Q(s, a)可以理解为:在状态s下执行动作a,当游戏结束的时候,我们可能获得的最大分数。之所以叫Q函数,是因为它表示了在特定状态下一个动作a的质量(quality)。

这真是个费解的定义。我们只知道当前的状态和动作,并不知道未来的动作及奖励,怎么能知道未来的分数呢?我们确实不能。不过,我们可以假设它是存在的。闭上眼睛,默念5次:Q(s, a)存在,Q(s, a)存在,Q(s, a)存在,…有感觉了吗?

如果你还不确定,那么想想Q函数的巨大作用。假设你在一个状态中纠结是采取动作a或者b,你想要在游戏结束后获得最大的分数。一旦你拥有了Q函数,问题就好办了,你直接采用Q值最高的那个动作就可以了!

揭开深度增强学习的神秘面纱

这里 π 表示策略,表示选择动作的规则。

我们如何来获取Q函数呢?对于一个转换<<i>s, a, r, s’>,类似于之前的计算未来得分的公式,我们把Q函数写成递推的形式:

揭开深度增强学习的神秘面纱

s’,  a’表示表示在状态s下执行动作a后的状态及该状态下的所有可能动作。

这就是著名的Bellman方程。很有逻辑,当前状态和动作下的未来最大奖励等于当前的奖励加上下一个状态的未来最大奖励

Q学习的核心思想就是通过Bellman方程来迭代求解Q函数。最简单的Q函数是实现一个表格,以状态为行,动作为列。Q学习的核心算法如下:

揭开深度增强学习的神秘面纱

这里α 是学习率,表示每次更新多少比例的差值,如果 α=1就是Bellman方程。

我们用来更新Q[s,a] maxa’ Q[s’,a’]只是一个近似的估计,在学习早期它可能根本就是错的。然而随着迭代次数的增加,它会变得越来越精确。通过足够次数的迭代更新,Q函数会收敛到真实的Q值。

 

深度Q网络

Breakout游戏中,环境可以用球拍的位置、球的位置及方向和砖块的存在与否来表示。但是这种直观的表示是游戏特异的,不同的游戏有不同的表示方法。我们能都找到一种通用的表示方法?容易想到,游戏截屏的像素点包含了所有的位置信息,除了速度和方向。如果把连续的几张截屏放在一起,方向和速度也都有了。

如果我们采用DeepMind在论文中使用的图像处理方法,截取最后4张视频截图,重采样为84×84256阶灰度图,那么我们会得到25684x84x4≈ 1067970个游戏状态,这意味着我们的Q值表有1067970行,这比已知宇宙中所有的原子数目还大!这样的数据量是无法接受的。我们需要找到游戏状态的低维度表示。

该深度神经网络出马了。深度神经网络特别是深度卷积神经网络擅长于提取图像的特征。我们用一个神经网络来表示Q函数,它的输入可以是截屏图像和动作,输出对应的Q值。另外一种方法是只接受截屏图像作为输入,输出所有动作的Q值。后一种是较好的方法,我们只需要前向计算一遍神经网络,就可以得出所有动作的Q值,然后选择Q值最高的动作来执行,并进行相应的Q值更新。

 揭开深度增强学习的神秘面纱


 

DeepMind使用的网络结构如下:

揭开深度增强学习的神秘面纱

这是一个典型的卷积神经网络结构,3个卷积层再连接2个全连接层。熟悉图像识别的读者可能会发现这里没有池化层(pooling layers),这是因为池化层引入了平移不变性,也就是说网络对识别对象在图像中的位置不敏感。这一特点在图像识别中非常有用,但是对于游戏来说,物体的位置信息是至关重要的。

神经网络的输入是484×84的灰度图像,输出是所有可能的动作(18个)的Q值。Q值可以是任意实数,所以这是一个回归问题,可以用简单的均方误差函数作为损失函数:

揭开深度增强学习的神秘面纱

给定一个转换 <<i> s, a, r, s’ >, 通过以下的方式更新Q值:

1、        使用当前的状态s通过神经网络计算出所有动作的Q

2、        使用下一个状态s’通过神经网络计算出  Q(s’, a’)并获取最大值max a’ Q(s’, a’).

3、        将该动作a的目标Q值设为 r + γmax a’ Q(s’, a’),对于其他动作,把目标Q值设为第1步返回的Q值,使误差为0

4、        使用反向传播来更新Q网络权重。

 

经验回放

由于训练集是有相关性的,实践中发现使用一个非线性神经网络来近似Q函数会使输出不稳定。一个重要的技巧是经验回放experience replay)。在游戏的过程中,所有的经验<<i> s, a, r, s’ >都被存储在一个经验缓存之中。训练神经网络的时候,从经验缓存中随机抽取一个小数据集(minibatch)来进行训练。这就打破了训练集之间的相关性,提高了网络的性能。


探索-利用

Q学习试图解决信用分配问题:通过奖励的及时回传,定位了获得奖励的关键决策点。但是探索-利用问题还没有解决。

在开始观察的时候,Q网络是随机初始化的,它输出的Q值也是随机的,我们选择Q值最大的动作来执行,当然也是随机的,相当于自由“探索”。当迭代次数增加,Q值开始收敛,自由探索的成分减小,我们总是选择Q值大的动作来执行,Q值小的动作没有被执行的机会。这是一种“贪婪”的算法,只选择目前的最佳方法,没有考虑全局。

解决这个问题的一个简单办法是使用 ε-贪婪探索,按照ε的概率随机探索1-ε的概率按照最高Q值“贪婪”的执行动作。DeepMindε 初始值设为1,然后逐渐减小到0.1并固定。在开始的时候进行完全的随机探索,然后探索的概率逐渐减少至一个小的固定值。


深度Q学习的算法描述

带有经验回放的Q学习算法

This gives us the final deep Q-learning algorithm with experience replay:

揭开深度增强学习的神秘面纱

DeepMind使用了很多技巧来提高模型的性能,但是已经超出本文内容的范围。

这个算法最激动人心的是它能学习任何事物。想想吧,Q函数是随机初始化的,它开始的输出完全是“垃圾”,然而我们使用这些“垃圾”(下一个状态的最大Q值)作为目标来训练神经网络,仅仅是偶尔加入一个小的奖励值,能学到有意义的结果吗?事实上,他做到了。

后记

自从深度Q学习被提出来以后,有很多改进的算法,比如Double Q-learningPrioritized Experience ReplayDueling Network Architecture and extension to continuous action space 等。可以通过查看 NIPS 2015 deep reinforcement learning workshop  ICLR 2016 (搜索reinforcement)获取最新的进展. 但是,Google拥有深度Q学习的专利权。

常言道,所谓人工智能就是那些我们还没有搞明白的东西,一旦知道了它的工作原理,就感觉不再智能了。但是深度Q学习还是继续吸引着我。观看他们解决了一个新的游戏,就像看见一个荒野中的动物,通过奖励进行自我学习。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值