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

2023-10-31

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获取的感知信息。

rl

上面这张图(来自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,...,at1,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]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Deep Reinforcement Learning 基础知识(DQN方面) 的相关文章

随机推荐

  • failed to create cublas handle: CUBLAS_STATUS_ALLOC_FAILED

    failed to create cublas handle CUBLAS STATUS ALLOC FAILED 问题出现原因及解决办法 在使用tensorflow的gpu运行程序时 因为gpu已被其他python脚本占用或自己程序重复调
  • python爬虫实操

    本次我们将爬取Ajax动态加载数据并进行简单数据分析 其主要方式是找到数据的json包 将其保存到本地目录 进行数据分析 文章目录 一 业务分析 二 步骤 1 找到数据 2 抓取数据 3 分析数据 总结 一 业务分析 目标网站 NBA中国官
  • java基础一

    java基础复习总结一 01 01 计算机基础知识 计算机概述 了解 A 什么是计算机 计算机在生活中的应用举例 计算机 Computer 全称 电子计算机 俗称电脑 是一种能够按照程序运行 自动 高速处理海量数据的现代化智能电子设备 由硬
  • CentOS7增加或修改SSH端口号

    第一步 修改SSH配置文件 注意是sshd config而不是ssh config 多了个d vim etc ssh sshd config 找到 Port 22 把两行的 号即注释去掉 修改成 Port 22 Port 50500 SSH
  • 用gSOAP开发Web Service程序

    http www cppblog com noswimfish archive 2010 09 07 126074 aspx gSOAP是一个绑定SOAP XML到C C 语言的工具 使用它可以简单快速地开发出SOAP XML的服务器端和客
  • LAPACK 求矩阵的逆

    original source http stackoverflow com questions 3519959 computing the inverse of a matrix using lapack in c Function in
  • 一个奇怪的问题:tomcat 栈溢出 StackOverflowError错误

    一个栈溢出错误 ava lang StackOverflowError at org apache catalina core ApplicationHttpRequest AttributeNamesEnumerator findNext
  • 关于Maven如何打Zip包

    1 通常我们使用Maven来打包Jar包 当我们需要打包成Zip包的时候就需要用到maven assembly plugin插件了 通过这个插件 不仅可以将源码打包 也能选择将一些特殊文件也打包进去 比如Build生成的Jar包
  • spark on yarn 完全分布式_从MR到Spark再到Ray,谈分布式编程的发展

    作为和Spark同出一脉的Ray 目前三个合伙人也创立了公司 叫Anyscale 参考这篇新闻 Anyscale raises 20 6 million to simplify writing AI and ML applications
  • ant 实践应用

    ant其实并非原生的Linux命令 但它 是一个使用广泛 功能强大的跨平台 构建工具程序 尤其是进行Java开发时 许多开源的Java项目都使用ant作为构建工具 ant 是apache自由软件基金会的一款开源软件 是java项目推崇的一款
  • 如何用golang快速构建一个CLI小工具02 - 解析文件

    如何用golang快速构建一个CLI小工具02 解析文件 在上一篇文章中 我们构建了一个叫autoSeletor的子命令用来随机选择我们输入的字符数组 在这篇中 我们来给我们的这个子命令加点功能 解析文件 我们希望通过文件的方式来作为输入
  • sqli-labs靶场搭建过程及报错解决方法

    下载后放在www目录下 我这里用的是phpstudy pro 修改数据库密码 运行时结果是这样的 查了好多资料说是php的版本不能超过5 5 我看了一下 也没超过5 5啊 然后我就去修改靶场代码 都修改了依旧报错 折腾好久后发现php的版本
  • 科大讯飞教育BG技术支持实习面试流水账(留给有缘人)

    这个岗位对于技术要求不是这么多 更多的是语言表达能力 1 科大讯飞在我们学校有宣讲 而我当时没有投 等过了段时间之后 其他的不是很满意 从某招聘软件上投的 面试官就问了这个问题 然后我的回答是 当时投了别的公司 对那些岗位不是很满意 于是想
  • Firefox上实现跨域访问

    IE浏览器可以在 工具 gt Internet 选项 gt 安全 gt 自定义级别 中启用 跨域浏览窗口和框架 通过域访问数据源 Firefox上如何设置呢 从 about config 里设置 signed applets codebas
  • 后端(一):Tomcat

    我们之前的前端是被我们一笔带过的 那不是我们要讲的重点 而这里的后端则是重点 本章先来认识认识后端的基础 Tomcat 是什么 我们先来聊聊什么叫做tomcat 我们熟悉的那个是汤姆猫 这和我们Java世界中的Tomcat 不是同一只猫 来
  • linux 杂记 怎么解决 cuda 10.1 跑 cuda8下的代码 error

    一个问题 error home dell cache Python Eggs correlation package 0 1 py2 7 linux x86 64 egg tmp correlation package ext corr c
  • 【满分】【华为OD机试真题2023 JAVA&JS】简单的解压缩算法

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 简单的解压缩算法 知识点栈 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 现需要实现一种算法 能将一组压缩字符串还原成原始字符串 还原规则如下 1 字符后面加数
  • obj : error LNK2019: 无法解析的外部符号 "public: __thiscall B::B(void)" (??0B@@QAE@XZ),该符

    今天在写类的简单实现时突然遇见这样的问题 最后发现是因为自己忘记实现构造函数的析构函数 class B public A public B B 出现该错误 obj error LNK2019 无法解析的外部符号 public thiscal
  • Linux Shell脚本字符串命令中的管道符处理

    问题 Linux shell字符串命令 等于包含多条命令 中的管道符 需用eval来求值 否则管道符 会被当做普通字符串来处理 输出非期望的结果 bin bash CMD ls l home if s 1 then CMD CMD grep
  • Deep Reinforcement Learning 基础知识(DQN方面)

    Introduction 深度增强学习Deep Reinforcement Learning是将深度学习与增强学习结合起来从而实现从Perception感知到Action动作的端对端学习的一种全新的算法 简单的说 就是和人类一样 输入感知信