Deep Reinforcement Learning 基础知识(DQN方面)

Posted songrotek

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Deep Reinforcement Learning 基础知识(DQN方面)相关的知识,希望对你有一定的参考价值。

Introduction

深度增强学习Deep Reinforcement Learning是将深度学习与增强学习结合起来从而实现从Perception感知到Action动作的端对端学习的一种全新的算法。简单的说,就是和人类一样,输入感知信息比如视觉,然后通过深度神经网络,直接输出动作,中间没有hand-crafted工作。深度增强学习具备使机器人实现完全自主的学习一种甚至多种技能的潜力。

虽然将深度学习和增强学习结合的想法在几年前就有人尝试,但真正成功的开端是DeepMind在NIPS 2013上发表的Playing Atari with Deep Reinforcement Learning一文,之后DeepMind在Nature上发表了改进版的DQN文章,引起了广泛的关注。而Hinton,Bengio及Lecun三位大神在Nature上发表的Deep Learning 综述一文最后也将Deep Reinforcement Learning作为未来Deep Learning的发展方向。

Deep Reinforcement Learning因为具备真正实现AI的潜力,受到了Google等企业的关注。DeepMind 50多人的团队被Google以4亿美元的价格收购。而15年12月份刚刚由Elon Musk牵头成立的OpenAI,则一开始就获得了10亿美元的投资,而OpenAI中的好几位成员都来自UC Berkerley的Pieter Abbeel团队。

Pieter Abbeel团队紧随DeepMind之后,采用另一种方法直接实现了机器人的End-to-End学习,其成果也引起了大量的媒体报道和广泛关注。今年的NIPS 2015 更是由Pieter Abbeel及DeepMind的David Silver联合组织了Deep Reinforcement Learning workshop。可以说,目前在Deep Reinforcement Learning取得开拓性进展的主要集中在DeepMind和UC Berkerley团队。

为了深入地理解Deep Reinforcement Learning, 需要具备两大背景知识:

  • 深度学习特别是CNN卷积神经网络(由于感知Perception大多来自于视觉信息)
  • 增强学习基础知识

本文将介绍理解Deep Q-network所需要的增强学习的背景知识。

What is Reinforcement Learning 增强学习是什么

在人工智能领域,一般用Agent来表示一个具备行为能力的物体,比如机器人,无人车,人等等。那么增强学习考虑的问题就是Agent和环境environment$E$之间交互的任务。比如一个机械臂要拿起一个手机,那么机械臂周围的物体包括手机就是环境,机械臂通过外部的比如摄像头来感知环境,然后机械臂需要输出动作来实现拿起手机这个任务。再举玩游戏的例子,比如我们玩极品飞车游戏,我们只看到屏幕,这就是环境,然后我们输出动作(键盘操作)来控制车的运动。

那么,不管是什么样的任务,都包含了一系列的动作action,观察Observation还有反馈值Reward。所谓的Reward就是Agent执行了动作与环境进行交互后,环境会发生变化,变化的好与坏就用reward来表示。如上面的例子。如果机械臂离手机变近了,那么reward就应该是正的,如果玩赛车游戏赛车越来越偏离跑道,那么reward就是负的。接下来这里用了Observation观察一词而不是环境那是因为Agent不一定能得到环境的所有信息,比如机械臂上的摄像头就只能得到某个特定角度的画面。因此,只能用Observation来表示Agent获取的感知信息。

技术分享

上面这张图(来自David Silver)可以很清楚的看到整个交互过程。事实上,这就是人与环境交互的一种模型化表示。在每个时间点time-step Agent都会从可以选择的动作集合A中选择一个a_t执行.这个动作集合可以是连续的比如机器人的控制也可以是离散的比如游戏中的几个按键。动作集合的数量将直接影响整个任务的求解难度,因此DeepMind才从玩最简单的游戏做起。

那么知道了整个过程,任务的目标就出来了,那就是要能获取尽可能多的reward。没有目标,控制也就无从谈起,因此,获取reward就是一个量化的标准,reward越多,就表示执行得越好。每个时间片,Agent都是根据当前的观察来确定下一步的动作。每次的观察就作为Agent的所处的状态state,因此,状态State和动作Action存在映射关系,也就是一个state可以对应一个action,或者对应不同动作的概率(常常用概率来表示,概率最高的就是最值得执行的动作)。那么state到action的过程就称之为一个策略Policy。当然,也可以是之前的一系列的状态动作集合到action的映射,在下一节我们会看到只要当前状态就行)一般用π表示,也就是需要找到以下关系:

a=π(s)

π(a|s)

其中a是action,s是state。

增强学习的任务就是找到一个最优的策略policy从而使reward最多。

我们一开始并不知道最优的策略是什么,因此往往从随机的策略开始,使用随机的策略进行试验,就可以得到一系列的状态,动作和反馈:

{s1,a1,r1,s2,a2,r2,...,at?1,st}

这就是一系列的样本Sample。增强学习的算法就是需要根据这些样本来改进policy,从而使得得到的样本中的reward更好。由于这种让reward越来越好的特性,所以这种算法就叫做增强学习Reinforcement Learning。

MDP(Markov Decision Process)马尔科夫决策过程

由于增强学习的样本是一个时间序列,因此将增强学习的问题模型化,就引入了MDP。

所谓的MDP,是基于这样一种假设:

The future is independent of the past given the present

也就是,一个状态St是Markov当且仅当

P(st+1|st)=P(st+1|s1,...,st)

P为概率。

简单的说就是下一个状态仅取决于当前的状态和当前的动作。注意这里的状态是完全可观察的全部的环境状态
由MDP的假设,如果这个世界就是MDP的,如果再加上一个假设,每个动作都是由完全的环境(比如人的每个细胞导致的精神状态,意识)决定,那么有一个初始状态,后继状态就是全部确定的。当然,现实情况环境一般不完全可观察,然后有一些随机性stochastic是人类无法确定的。

绝大多数的增强学习都可以模型化为MDP的问题。

因为前面我们看到,我们要根据当前的状态来决定动作。而且由MDP我们知道我们只要使用当前的状态进行估计。但是,这里注意本节考虑的状态是完全可观察。对于部分可观察的状态,那么只能进行估计。

既然一个状态对应一个动作,或者动作的概率,而有了动作,下一个状态也就确定了。这就意味着每个状态可以用一个确定的值来进行描述。可以由此判断一个状态是好的状态还是不好的状态。比如,向左边走就是悬崖,悬崖肯定不是好的状态,再走一步可能就挂了,而向右走就是黄金,那么右边的状态就是好的状态。

那么状态的好坏其实等价于对未来回报的期望。因此,引入回报Return来表示某个时刻t的状态将具备的回报:

Gt=Rt+1+λRt+2+...=k=0λkRt+k+1

上面有一个λ是discount factor折扣因子,就是说一般当下的反馈是比较重要的,时间越久,影响越小。

那么实际上除非整个过程结束,否则显然我们无法获取所有的reward来计算出每个状态的Return,因此,再引入一个概念估值函数Value Function,用value function v(s)来表示一个状态未来的潜在价值。这就是变成是向左看感觉那么是悬崖然后左边的状态的估值就低。

从定义上看,value function就是回报的期望:

v(s)=E[Gt|St=s]

Bellman Equation

定义出value function代表问题解决了一半,接下来就是如何求解value function的问题。实际上发现,只要从定义出发,就可以找到解决办法: