【强化学习】用于真实机器人的高效深度强化学习算法、全面解读深度强化学习

2018 年 12 月 27 日 产业智能官

来源Bair 编译:T.R


伯克利和谷歌大脑的研究人员近日发表了全新的强化学习算法:柔性致动/评价(soft actor-critic,SAC)。作者表示,作为目前高效的model-free算法,十分适用于真实世界中的机器人任务学习。在这篇文章中,将详细比较SAC与前沿强化学习算法的性能,并利用多个实际任务作为例子来展示最新算法的能力。这一算法还包含完整详细的源码实现供研究者学习和使用。


适用于真实机器人的深度强化学习


真实世界中理想的强化学习算法应该具有什么样的特性呢?与虚拟和实验室环境相比,真实情况将为算法带来一系列挑战。包括通信和数据流连续中断、低延时的推理、为避免设备机械损伤需要尽可能平滑连续的运动等,这些都为算法本身及其实现带来了更多的要求。

研究人员通常希望应用在真实世界中的算法具有以下优点:


· 样本效率。在真实世界中学习技能是耗时的任务,对于每一个新任务的学习都需要多次试错,学习一个新技能所需的总时间会十分可观,所以良好的样本复杂度是一个优秀算法的先决条件。


· 对超参数不敏感。真实世界中研究人员希望避免参数调整,而最大化交叉熵的强化学习提供了一个鲁棒的学习框架来最小化超参数调节的需求。


· Off-policy学习。解耦策略(off-policy)学习意味着可以使用其他任务场景收集的数据来学习,例如在准备新任务时只需要调整参数和奖励函数,而解耦策略则允许复用已经收集好的数据来训练算法。

SAC是一个解耦策略(off-policy)和自由模型(model-free)深度强化学习算法。它不仅涵盖了上述优点,同时其样本效率足够在几小时内解决真实世界的机器人学习问题。此外其超参数十分鲁棒,只需要单一的超参数集就可以在不同的模拟环境中获得良好的表现。更为重要的是这一算法的实现还包含了以下特点,为真实世界的机器人学习提供了重要的作用:


· 异步采样;需要足够快的推理来最小化控制环中的延时,同时也希望在执行过程中进行训练。所以在实际情况中数据采样和实际训练应该由独立的线程或进程运行;


· 停止/假设训练;真实硬件中将会面临一系列错误情况,需要考虑数据流连续中断的情况;


· 运动平滑.典型的高斯探索(exploration)将会导致致动器产生抖动,这会对硬件造成不利的影响甚至损伤驱动器和机械结构,所以在实际中研究人员使用了探索的时域相关性来有效缓解这一问题。

SAC


SAC基于最大熵强化学习框架,其中的熵增目标如下所示:



其中是状态和行动,期望则包含了策略和来自真实系统的动力学性能。换句话说,优化策略不仅最大化期望(第一项),同时还最大化期望的熵(第二项)。其中的参数α平衡了这两项对于结果的影响,当α为0时上式就退化为传统的预期回报目标函数。研究人员认为可以将上述目标函数视为熵约束的最大化预期回报,通过自动学习α参数来代替超参数。

我们可以从多个角度解释这一目标函数。既可以将熵看作是策略的先验,也可以将其视为正则项,同时也可以看作是探索(最大化熵)和利用(最大化回报)间的平衡。

SAC通过神经网络参数化高斯策略和Q函数来最大化这一目标函数,并利用近似动力学编程来进行优化。基于这一目标函数研究人员推导出了更好的强化学习算法,使其性能更加稳定,并且达到足够高的样本效率来应用到真实机器人中。

模拟基准


为了评价新型算法的表现,研究人员首先在仿真环境中利用标准的基准任务来对SAC进行了评测,并与深度确定性策略梯度算法(DDPG),孪生延迟深度确定性策略梯度算法(TD3),邻近策略优化(PPO)等算法进行了比较。几种算法在三种基本的模拟移动任务上进行了性能比较,分别是豹,蚂蚁和人形。


三种移动仿真任务


下图描述了几个算法在三个不同任务中的表现,其中实线表示算法的平均回报而阴影则描述了算法表现的范围,包含了最好和最坏的表现。SAC算法在下图中由蓝色表示,可以看到它的效果最好。更重要的是在最坏的情况下,它还可以保持较好的表现(这意味着在某些极端糟糕的情况下还能保持鲁棒性)。



真实世界中的深度强化学习


为了检验算法在真实世界中的能力,研究人员在不依赖仿真或者试教的情况下从零开始让机器人学习解决三个任务。第一个任务中利用了小型四足机器人米诺陶,它拥有八个直驱致动器。其运动空间由摆角和每条腿的延伸部分构成,将运动映射到期望的电机位置,并利用PD控制器进行跟踪。其观测数据包括电机角度、滚转角度、俯仰角度以及基体的角速度。这一任务中欠驱动的机器人需要精巧地平衡腿部接触力大小来实现移动。没有训练过的机器人将会失去平衡并摔倒,摔倒太多次的试错将会损坏机器人,所以样本效率是算法的关键。下面展示了学习后的算法表现,虽然在平面上对机器人进行的训练,但在测试时的不同崎岖、动态的地形上也获得的较好的结果。这主要来源于SAC学习到了鲁棒的策略,训练时的熵最大化使得策略可以很好地泛化这些地形的扰动而无需额外的训练过程。


适应多种路况的米诺陶


第二个项目是利用三指灵巧手来旋转一个阀门的任务。其中机械手有9个自由度,由9个舵机控制。学习出的策略将向PID控制器发送关节的目标角度来实现控制。为了感知到阀的位置,机器人需要机遇下图中右下角的原始RGB图像来获取信息。机器人的目标是将阀带有颜色的一边旋转到下图所示的位置。阀由一个独立的电机控制,并按照均匀分布每次初始化到不同的位置(电机的位置同时也为训练提供了基准)。这将强制策略从原始的RGB中学习到阀当前的朝向。这一任务也由于需要同时感知RGB图像和对九个自由度的控制而增加了难度。


转动阀门的灵巧手


在最后的任务中,研究人员将训练7自由度的Sawyer来堆叠乐高块。策略接收的信号包括关节的角度的速度以及末端执行器的力作为输入,同时输出每个关节的力矩来控制机器人。这个任务中最大的挑战在于需要先准确的对好积木间的位置,随后再用力克服插入的摩擦来安放积木。


堆乐高的Sawyer


SAC算法对于上面三个任务都给出了较快的解决:其中米诺陶全地形行走和Sawyer码积木只用了两个小时的训练时间,而灵巧手拧阀门则使用了20个小时。如果直接把阀门的角度告诉机器人而不是通过图像去学习,则只需要三个小时就能学会。而之前的PPO算法则需要7.4小时才能通过角度学会拧阀门。

实用化的DeepRL


SAC算法是深度强化学习实用化的关键一步,虽然在更具挑战的场景和更大规模的情况下使用还需要很多的工作和研究,但SAC给出的结果已经让真实世界中的机器人向期待的目标迈出了关键的一步,这对于强化学习在机器人领域的实用化具有十分重要的意义。

如果小伙伴们想了解更多,请移步项目主页:
https://sites.google.com/view/sac-and-applications

同时,研究人员们还将大部分著名的机器人强化学习算法打包成了一个工具包rlkit,其中就包含了本文的SAC算法。开源不久目前已经在git上收获了384颗星。



可以直接利用conda运行配置环境就可以直接开始愉快的玩耍了。
https://github.com/vitchyr/rlkit
此外还有一个利用PyTorch实现SAC的版本:
https://github.com/rail-berkeley/softlearning以及:https://github.com/haarnoja/sac



ref:
paper:

https://drive.google.com/file/d/1J8gZXJN0RqH-TkTh4UEikYSy8AqPTy9x/view
turorial and review:

https://arxiv.org/pdf/1805.00909.pdf
lab:

http://rail.eecs.berkeley.edu/people.html
model free\off police:

https://www.zhihu.com/question/57159315
https://www.zhihu.com/question/64369408




全面解读深度强化学习:从基础概念到AlphaGo


机器之心原创

作者:Duke Lee

参与:马亚雄、吴攀、吴沁桐、Arac Wu

强化学习在与之相关的研究者中变得越来越流行,尤其是在 DeepMind 被 Google 收购以及 DeepMind 团队在之后的 AlphaGo 上大获成功之后。在本文中,我要回顾一下 David Silver 的演讲。David Silver 目前任职于 Google DeepMind 团队。他的演讲可以帮助我们获得对强化学习(RL)和深度强化学习(Deep RL)的基本理解,这不是一件特别难的事。

David Silver 的演讲视频可在这里查看:http://techtalks.tv/talks/deep-reinforcement-learning/62360/

在这个演讲视频中,David 做了对深度学习(DL)和强化学习(RL)的基本介绍,并讨论了如何将这两种学习方法结合成一种方法。有三种不同的可以结合深度学习和强化学习的方法:基于价值(value-based)、基于策略(policy-based)以及基于模型(model-based)的方法。在这个演讲中,David 提供了许多他们自己的实验的实例,最后以对 AlphaGo 的简单讨论结束了演讲。

概览

演讲分为五个部分:

  • 介绍深度学习

  • 介绍强化学习

  • 基于价值的深度强化学习

  • 基于策略的深度强化学习

  • 基于模型的深度强化学习

然而,当我看完讲座、理解了各个主题之后,便决定在上述的演讲结构中引入一个新的部分——做一个深度强化学习(Deep RL)的概述。这篇文章将会按照如下组织:

  • 介绍深度学习

  • 介绍强化学习

  • 深度强化学习概述

  • 基于价值的深度强化学习

  • 基于策略的深度强化学习

  • 基于模型的深度强化学习

希望上述的文章结构能够帮助大家更好地理解整个主题。我会重点关注演讲视频中的重点,并尽可能去解释一些问题的复杂概念。我也会给出我自己的观点、建议以及一些可以帮助到大家的参考资料。

在深入研究更加复杂的强化学习(RL)主题之前,我会尽可能提供一些关于深度学习和强化学习的基本知识,因为对不了解这两个主题的基本知识的人而言,这个演讲是有一定难度的。希望这些基本知识可以帮助大家。如果你对自己的知识非常有信心,那么,你可以跳过文章的前两部分。

深度学习介绍

什么是深度学习?

深度学习是表征学习的通用框架,它有以下特点:

  • 给定一个目标(objective)

  • 学习能够实现目标的特征

  • 直接的原始输入

  • 使用最少的领域知识

深度学习(deep learning)的意思就是深度表征(deep representation)。

如图所示,一个深度表征由很多函数组成,它的梯度可以通过链式法则来反向传播。

「深(deep)」的程度可以由函数或者参数的数量来推断。计算机硬件以及算法的发展使得计算机能够在合适的时间范围内完成上图所述的函数的计算,这是深度学习异军突起背后的原因。

反向传播(backpropagation)算法在解决深度问题中起着至关重要的作用。对任何一个想学习深度学习的人而言,理解反向传播是很重要的。

请不要混淆深度神经网络与深度学习。深度学习是一项实现机器学习的技术 [3]。它仅仅是一种机器学习的方法。而深度神经网络通常被人们用来理解深度表征。

深度神经网络通常包括以下内容:

线性变换、非线性激活函数、以及关于输出的损失函数,例如均方差和对数似然值。

我们用随机梯度下降的方法来训练神经网络。

如上图所示,按照能够使得损失函数 L(W) 减小的方向去调整参数 W.

实践中一个常用的有效方法就是权值共享(Weight Sharing),它是减少参数数量的关键。有两种神经网络能够实现权值共享,即循环神经网络(Recurrent Neural Network)和卷积神经网络(ConvolutionalNeural Network)。

如上图所示,循环神经网络在时间步长之间共享权值,卷积神经网络在空间区域共享权值。

强化学习简介

什么是强化学习?

在这个讲座中,David给出了一张图表明强化学习在不同领域中的复杂地位,如下图所示:

尽管我们在机器学习社区中广泛使用强化学习,但强化学习不仅仅是一个人工智能术语。它是许多领域中的一个中心思想,因此图片的标题是「强化学习的多个方面(Many Face of Reinforcement Learning)」。事实上,许多这些领域面临着与机器学习相同的问题:如何优化决策以实现最佳结果。

这就是决策科学(scienceof decision-making)。在神经科学中,人类研究人脑并发现了一种遵循著名的强化算法的奖励系统。在心理学中,人们研究的经典条件反射和操作性条件反射,也可以被认为是一个强化问题。类似的,在经济学中我们研究理性博弈论;在数学中我们研究运筹学;在工程学中我们研究优化控制。所有的这些问题都可以被认为一种强化学习问题—它们研究同一个主题,即为了实现最佳结果而优化决策。

强化学习是一个由行为心理学启发的机器学习领域 [4]。举个例子,一个学生名叫 Mike,如果他今天阅读了一篇与强化学习相关的论文,他将会在昨天的分数的基础上获得 1 分的奖励(称作正反馈)。如果他打了一整天的篮球,他的分数将会被扣掉 1 分(称为负反馈)。因而,如果 Mike 想每天都想获得更多的奖励(正反馈),他会每天都去学习。

「本质上,这些都是闭环系统,因为学习系统的行为会影响它之后的输入。此外,(1) 学习系统没有像很多其它形式的机器学习方法一样被告知应该做出什么行为;(2) 相反,必须在尝试了之后才能发现哪些行为会导致奖励的最大化;(3) 在大多数有趣并且有挑战性的例子中,当前的行为可能不仅仅会影响即时奖励,还会影响下一步的奖励以及后续的所有奖励。这三个特征是强化学习中最重要的三个区分特征,作为闭环系统的本质、没有关于该采取什么行动和后续的包括奖励信号和完成学习的时间的直接指示。」[2]

强化学习和标准监督学习的区别就在于从来不呈现正确的输入/输出对,也不存在次优化的行为被显式地修正。此外,还关注在线性能。在线性能涉及在对未知领域的探索和当前领域知识的利用之间寻求一个平衡。[4]

我们曾经介绍过强化学习:

  • 深度 | 深度学习漫游指南:强化学习概览

并且还有一个视频演示:

前面说了一下什么是强化学习的问题,那么,我们为什么要关注强化学习呢? 简而言之,强化学习是一个通用的决策框架。实际上我们关心的是开发一个能够在现实世界中做出决策的代理(agent)。我们不仅想给它算法并让它采取行动。我们还想让代理做决策。而强化学习可以让代理学会做决策。

  • 强化学习用于具有行动能力的代理

  • 每一个动作(action)都能影响代理将来的状态(state)

  • 通过一个标量的奖励(reward)信号来衡量成功

  • 目标:选择一系列行动来最大化未来的奖励

在每一个时刻 t,代理会执行一个动作 at, 收到一个观测信号 Ot, 收到一个标量奖励 rt。外界环境会收到一个动作 at, 发出一个观测信号 Ot+1,发出一个奖励信号 rt+1。

由于每个问题都有其各自不同的特点,所以,为了实现「通用」的目标,我们需要找到它们的共同点和一些规律性的东西。希望大家可以在没有解释的情况下理解上图的内容。图中的大脑是我们所说的代理,图中的地球是代理所处的环境。任何时刻,当代理执行一个动作 at 之后,它将会收到对环境的观测量 Ot 以及来自环境的奖励 rt,同时,收到动作 at 之后,环境会发出下一个观测量 Ot+1,以及奖励 rt+1。这就引入了一个新的概念:状态。

如上图所示,状态是所有经历(experience)的总和,经历就是上图中的第一个序列函数。某时刻 t 的状态 st 是该时刻以及之前所有时刻的所有观测量、奖励以及动作序列的函数。但是,当代理所处的环境具有一种我们所说的完全可观测性之后,就有了上图中的第二个状态函数——某时刻的状态仅仅是该时刻的观测值 Ot 的函数,这样一来,整个经历似乎具备了某种类似于马尔可夫性的性质。

然后,就有了三个新的想法:策略(policy)、价值函数(value function)和模型(model)。

一个强化学习系统的主要组成

一个强化学习的代理可能包含一个或多个下述的组成:

  • 策略:代理的行为函数

  • 价值函数 (Value function):评价一个状态或者行为的好坏及其程度

  • 模型(Model):代理对环境的表征

策略指的是代理的行为,它是从状态到行为的映射。包括确定策略和随机策略。

确定策略:a =π(s)

随机策略:π(a|s)= P[a|s]

价值函数

价值函数是对未来奖励的预测,表示在状态 s 下,执行动作 a 会得到多少奖励?

Q 价值函数表示奖励总值的期望。表示在给定一个策略π,贴现因子γ,和状态 s 下,执行动作 a,获得奖励的综合的期望是多少?

Q 价值函数还能够分解为上图描述的贝尔曼方程。

贝尔曼方程,以其提出者 Richard Bellman 命名,也被称作动态规划方程。它是与动态规划有关的数学优化相关的优化问题的必要条件 [5]。

优化价值函数就是使得价值函数达到可实现的最大值。以此为条件就会得到整个问题的最优解,以及相应的最优策略π*。

模型:

整个模型就是从经历中学习的过程。

由于我们已经定义了强化学习代理的三个组成部分,所以不难理解,优化其中的任何一个都会得到一个较好的结果。

有三种实现强化学习的途径,分别基于不同的原则。即:基于价值的强化学习,基于策略的强化学习,以及基于模型的强化学习。

  • 基于价值的强化学习,需要估计 Q 价值函数的最大值 Q*,这是在任意策略下能够得到的最大 Q 价值函数。

  • 基于策略的强化学习,直接搜索最佳的策略π*,这将得到能够最大化未来奖励的策略π*。

  • 基于模型的强化学习,构建一个环境的模型,用模型进行诸如前向搜索的规划。

深度强化学习(DeepReinforcement Learning)

什么是深度强化学习?简言之,就是强化学习+深度学习。

将强化学习和深度学习结合在一起,我们寻求一个能够解决任何人类级别任务的代理。强化学习定义了优化的目标,深度学习给出了运行机制——表征问题的方式以及解决问题的方式。强化学习+深度学习就得到了能够解决很多复杂问题的一种能力——通用智能。

DeepMind 中深度强化学习的例子有:

  • 游戏:Atari 游戏、扑克、围棋

  • 探索世界:3D 世界、迷宫

  • 控制物理系统:操作、步行、游泳

  • 与用户互动:推荐、优化、个性化

那么,我们如何结合强化学习和深度学习呢?

  • 用深度神经网络来代表

  • 价值函数

  • 策略

  • 模型

  • 用随机梯度下降来优化损失函数

下面的三部分,我们分别讨论三种结合强化学习和深度学习的方法。

基于价值的深度强化学习

基于价值的深度强化学习的基本思想就是建立一个价值函数的表示,我们称之为 Q 函数。

其中:

  • s =状态

  • a =动作

  • w =权值

正如我们在上边图片中看到的一样,基本上就是一个黑盒子,将状态和动作作为输入,并输出 Q 和一些权值参数。

我们会用到基于 Q学习的基本方法。这种方法会想出我们需要的损失函数,而且是以贝尔曼方程作为开始的。

如上图所示,我们等号右边作为优化的目标。现在逐步解释这个算法:将左侧的内容移到等号右边。

随后我们用随机梯度下降的方法去最小化最小均方差 (MSE),一般这个方法在优化的过程中都会奏效的。如果每一个状态和动作都有一个单独的值,那么在这个方法下,价值函数会收敛到一个最优值。不幸的是,由于我们使用的是神经网络,会有两个问题出现:

  1. 采样之间的相关性:加入我是一个四处走动的机器人,通过实际数据来学习。我将算法中的每一步视为采取行动的状态,如此一来,这些状态和动作就会和上一次执行的动作非常接近。也就是说,我们采取的方法中存在很强的相关性。

  2. 我们从中学习到的目标依赖于目标本身,因此这些都是非平稳的动态。正是由于非平稳动态的存在,我们的近似函数会螺旋式失控,并且导致我们的算法崩溃。

如果我们继续使用神经网络,上述两个问题是不会被解决的。

为了实现稳定的深度强化学习,我们引入的第一个方法是被称为 DQN 的深度强化网络。如下面的 PPT 所描述的,这在 Q 学习的基础上引入了根本的提升。其中的思想非常简单:通过让代理从自己的经历中构建数据集,消除非平稳动态中的所有相关性。然后从数据集中抽取一些经历并进行更新。

在解释完前面的东西之后,David Silver 给大家举了一个他们 DeepMind 团队的一个例子:Atari 游戏。他们训练出了一个能够将 Atari 游戏玩的很好的系统。相信下面的插图能够有助于读者理解代理和环境(包括状态、动作以及奖励)之间的关系

Atari 中的 DQN

  • 从状态 s 中端对端地学习 Q 价值函数Q(s,a)。

  • 输入状态 s 是最近 4 帧的原始像素组成的堆栈

  • 输出的 Q 价值函数 Q(s,a) 用于 18个操纵杆/按钮的位置

  • 奖励就是每一步动作所对应的得分的变化

这是一个卷积神经网络 (CNN)

网络结构和超参数在所有的游戏中都是固定不变的。

采用深度 Q 网络的 Atari 的 Demo:

  • Nature 上关于深度 Q 网络 (DQN) 论文:

    http://www.nature.com/articles/nature14236

  • GoogleDeep Mind 团队深度 Q 网络 (DQN) 源码:

    http://sites.google.com/a/deepmind.com/dqn/

  • 我们之前也介绍过一次深度 Q 网络 (DQN) :重磅 | 详解深度强化学习,搭建 DQN 详细指南(附论文)

继 Nature 上发表深度 Q 网络之后,有好多关于 DQN 的改进。但 David 主要关注以下三点:

双深度 Q 网络(Double DQN):

要理解第一个改进,我们首先必须明白 Q 学习中存在的一个问题。问题就踹 MAX 算子上。事实上那样得到的近似值不足以做出决定,并且这个偏差可能在实际应用中导致一系列问题。因此,为了解决这个问题,我们用了两个深度 Q 网络把评价动作的方式分解为两个路径。一个深度 Q 网络用来选择动作,另一个用来评价动作,这在实践中确实很有帮助。

确定优先级的经历回放:

第二个改进就是我们做经历回放的方式。旧方法做经历回放的时候会给所有的经历附一个相同的权重。然而相等的权重并不是一个好的思想,如果给所有的经历给一个优先级,你可能做得更好一些。我们仅仅采用了以此误差的绝对值,它表示在一个时刻的某一个特定状态有多么好或者多么差。那些你并没有很好的理解的经历才是所有的经历中你最想回放的。因为需要更多的更新来矫正你的键值。

决斗网络(DuelingNetwork)

第三个改进就是把Q 网络分成两个信道。一部分用来计算当你忽略了一些动作的时候你会得到多少奖励(幻灯片中的action-independent),另一部分用来计算实际中当你采取了某一个特定的动作之后你会做得多么好。然后将两个网络的计算结果求和。然后取两者的总和。正如前面视频中演示的,如果你把这个结果正则化,结果会发现这两个通道会闪烁,因为它们有不同的扩展(scaling)属性。将两个网络分开,去帮助神经网络学习更多的东西,这实际上是很有帮助的。

它们通过在Google 利用下面的结构(Gorila)来让系统加速,这很适合海量数据。

Gorila 结构运行在很多不同的机器上,这让它们可以共同运行深度 Q 网络。我们有许多个代理并行运行的实例,有我们环境的许多不同的实例,这些环境都是基于许多不同的机器,这样便能让我们在力所能及的情况下生成尽可能多的经历。

这些经历被存放在一个分布式的经历回放记忆(experience replay memory)中。本质上就是将所有并行的代理的经历收集起来并且以分布式的方式存储。我们由很多学习器能够在这些经历中并行采样。一旦你有了这个经历回放的缓存,我们可以从中读取很多不同的东西并且将其应用于系统的更新上。然后,从那些学习器返回的参数更新将被共享到我们存储的分布式神经网络中,然后在实际上运行在这些机器上的每个代理共享。

那么,在没有Google 的资源的情况下,我们如何做才能加速强化学习呢?可以使用异步强化学习:

  • 利用标准 CPU 的多线程

  • 将一个代理的多个实例并行执行

  • 线程间共享网络参数

  • 并行地消除数据地相关性

  • 经历回放的可替代品

  • 在单个机器上进行类似于 Gorila 的加速!

基于策略的深度强化学习

深度策略网络

策略梯度

Actor-Critic算法

异步优势Actor Critic 算法(A3C)

Labyrinth中的异步优势Actor Critic 算法(A3C)

  • 从输入的像素中进行 softmax 策略 π(a|st) 的端到端学习。对环境的观测量 ot 是当前帧的原始像素。状态 st= f(o1, …, ot) 是一个循环神经网络(LSTM)。网络在策略π(a|s) 下同时输出价值 V(s) 和激活函数 softmax 的结果值。任务是收集苹果(+1 分奖励)和逃跑(+10 分奖励)。

深度强化学习中采用异步方法的演示:Labyrinth,如下

我们如何处理高维连续动作空间?

与深度 Q 网络类似,我们在这里有 DPG 算法。希望你现在对深度 Q 网络有了较好的理解,这将有助于你理解下一部分内容。

确定策略梯度(DPG/DeterministicPolicy Gradient)算法

下面是 DavidSilver 关于 DPG 的论文的链接:

http://www.jmlr.org/proceedings/papers/v32/silver14.pdf_

深度确定策略梯度

模拟物理中的确定策略梯度算法:

  • 在 MuJoCo 上模拟物理域

  • 从原始输入的状态 s 中进行控制策略的端对端学习

  • 输入状态 s 是最近 4 个帧 (4 个状态) 的原始数据

  • 对价值 Q 和策略π使用两个分离的卷积神经网络

  • 策略π被朝着能够最大程度提成价值 Q 的方向调节

图为两个分离的卷积神经网络,分别对应 Q 价值函 Q(s,a)和策略π(s)。

然后我们来看一看其他的经典游戏,例如扑克。我们能够使用深度强化学习的方法在多代理的游戏中找到纳什均衡吗?纳什均衡就像多代理决策问题中的解决方案。在这个均衡下,每个代理都满足它们的策略,没人愿意偏离当前的策略。

因此,如果我们找到了纳什均衡,我们就解决了这个小问题。很多研究都在关注如何在更加庞大、有趣的博弈游戏中实现这种均衡。

这里的思想是,我们首先学习一个价值 Q 网络,然后学习一个策略网络,然后挑选一些最佳相应和平均最佳相应之间的动作。

代理在游戏中进行虚拟自我对抗 (FSP)。

下面的幻灯片阐述了在德州扑克进行 FSP 的结果:随着迭代次数的增加,不同的算法都收敛了。

基于模型的深度强化学习

学习环境的模型

  • Demo:Atari 的生成模型

  • 复杂的误差使规划富有挑战

  • 传递模型中的误差会在轨迹上复合

  • 规划的轨迹会与执行的轨迹有所不同

  • 在长时间的不正常轨迹结束时,奖励是完全错误的

学习一个模型,即如何用深度学习完成基于模型的强化学习,并不是这个问题的难点。我们知道了如何规定学习模型的问题。事实上这不过是一个监督学习的问题罢了「如果你想预测:假设我采取了这个动作之后,环境会变成什么样子」。在这次讲座中,他没有太多地谈论这个问题,他只是展示了一个来自密歇根大学的视频,演示你如何能够建立一个模型,以及建立这个模型有多困难。这是该视频的屏幕截图:左侧是预测,右侧是真实情况。但是,这是很难实现的。

然而,如果我们有一个完美的模型呢?也就是说,游戏规则是已知的。是的,我们知道,AlphaGo 就是这样的。

Nature 上关于 AlphaGo 的论文:

http://www.nature.com/articles/nature16961

AlphaGo 相关的资源: deepmind.com/research/alphago/

为什么下围棋对于计算机而言是很困难的?

暴力搜索是很难处理的。

1. 搜索空间是巨大的

2. 对计算机而言,评价哪一个玩家占据上风,「几乎是不可能的」。但是在一些诸如象棋的游戏中,就比较容易判断了。

过去很多人都认为找到一个解决这个问题的好方法是不可能的。

DeepMind 建立了一个卷积神经网络(CNN),这个网络将每一个状态(只要由棋子落下)看作一幅图像。然后用卷积神经网络去构造两个不同的神经网络。

一个代表价值网络

另一个代表策略网络:

为了训练它,我们结合了监督学习和强化学习,共有三个步骤,如下所示:

经过每一步之后的表现:

价值网络和策略网络的效果:

总结

  • 通用、稳定并且可拓展的强化学习现在是可能的

  • 用深度网络去代表价值、策略和模型

  • 在 Atari、Labyrinth、物理、扑克、围棋中取得了成功

  • 使用一系列深度强化学习的范例

强化学习是一个受行为心理学启发的机器学习领域。它正在变得越来越流行。在需要构建一个可以像人类一样甚至超越人类能力去做一些事的人工智能时,它是非常有用的,比如 AlphaGo。然而,在我看来,在开始学习强化学习之前,我们首先应该理解一些基本的机器学习相关的知识。良好的数学背景将会非常有助于你的学习,并且,这至关重要!

好运!我希望在下一届 ICML 会议上看到你的论文。

参考文献以及推荐的阅读材料:

1.http://videolectures.net/rldm2015_silver_reinforcement_learning/

2.Sutton, Richard S., and Andrew G. Barto. *Reinforcement learning: Anintroduction*. Vol. 1. No. 1. Cambridge: MIT press, 1998.

3.https://blogs.nvidia.com/blog/2016/07/29/whats-difference-artificial-intelligence-machine-learning-deep-learning-ai/

4.https://en.wikipedia.org/wiki/Reinforcement_learning

5.https://en.wikipedia.org/wiki/Bellman_equation

6.https://devblogs.nvidia.com/parallelforall/deep-learning-nutshell-reinforcement-learning/



工业互联网




产业智能官  AI-CPS


加入知识星球“产业智能研究院”:先进产业OT(工艺+自动化+机器人+新能源+精益)技术和新一代信息IT技术(云计算+大数据+物联网+区块链+人工智能)深度融合,在场景中构建状态感知-实时分析-自主决策-精准执行-学习提升的机器智能认知计算系统实现产业转型升级、DT驱动业务、价值创新创造的产业互联生态链



版权声明产业智能官(ID:AI-CPS推荐的文章,除非确实无法确认,我们都会注明作者和来源,涉权烦请联系协商解决,联系、投稿邮箱:erp_vip@hotmail.com。



登录查看更多
16

相关内容

SAC:Selected Areas in Cryptography。 Explanation:密码术的选择区。 Publisher:Springer。 SIT:http://dblp.uni-trier.de/db/conf/sacrypt/
【IJCAI2020-华为诺亚】面向深度强化学习的策略迁移框架
专知会员服务
25+阅读 · 2020年5月25日
多智能体深度强化学习的若干关键科学问题
专知会员服务
171+阅读 · 2020年5月24日
最新《智能交通系统的深度强化学习》综述论文,22页pdf
《强化学习》简介小册,24页pdf
专知会员服务
261+阅读 · 2020年4月19日
【综述】自动驾驶领域中的强化学习,附18页论文下载
专知会员服务
169+阅读 · 2020年2月8日
专知会员服务
232+阅读 · 2020年1月23日
【强化学习】深度强化学习初学者指南
专知会员服务
178+阅读 · 2019年12月14日
17种深度强化学习算法用Pytorch实现
新智元
30+阅读 · 2019年9月16日
最前沿:深度解读Soft Actor-Critic 算法
极市平台
53+阅读 · 2019年7月28日
DeepMind:用PopArt进行多任务深度强化学习
论智
26+阅读 · 2018年9月14日
【深度强化学习】深度强化学习揭秘
产业智能官
20+阅读 · 2017年11月13日
【强化学习】强化学习入门以及代码实现
产业智能官
18+阅读 · 2017年9月4日
技术 | 强化学习入门以及代码实现
AI100
51+阅读 · 2017年8月26日
Risk-Aware Active Inverse Reinforcement Learning
Arxiv
7+阅读 · 2019年1月8日
Deep Reinforcement Learning: An Overview
Arxiv
17+阅读 · 2018年11月26日
Hierarchical Deep Multiagent Reinforcement Learning
Arxiv
8+阅读 · 2018年9月25日
Multi-task Deep Reinforcement Learning with PopArt
Arxiv
4+阅读 · 2018年9月12日
Relational Deep Reinforcement Learning
Arxiv
10+阅读 · 2018年6月28日
Arxiv
11+阅读 · 2018年4月25日
Arxiv
19+阅读 · 2018年3月28日
Arxiv
4+阅读 · 2017年10月30日
VIP会员
相关VIP内容
相关资讯
17种深度强化学习算法用Pytorch实现
新智元
30+阅读 · 2019年9月16日
最前沿:深度解读Soft Actor-Critic 算法
极市平台
53+阅读 · 2019年7月28日
DeepMind:用PopArt进行多任务深度强化学习
论智
26+阅读 · 2018年9月14日
【深度强化学习】深度强化学习揭秘
产业智能官
20+阅读 · 2017年11月13日
【强化学习】强化学习入门以及代码实现
产业智能官
18+阅读 · 2017年9月4日
技术 | 强化学习入门以及代码实现
AI100
51+阅读 · 2017年8月26日
相关论文
Risk-Aware Active Inverse Reinforcement Learning
Arxiv
7+阅读 · 2019年1月8日
Deep Reinforcement Learning: An Overview
Arxiv
17+阅读 · 2018年11月26日
Hierarchical Deep Multiagent Reinforcement Learning
Arxiv
8+阅读 · 2018年9月25日
Multi-task Deep Reinforcement Learning with PopArt
Arxiv
4+阅读 · 2018年9月12日
Relational Deep Reinforcement Learning
Arxiv
10+阅读 · 2018年6月28日
Arxiv
11+阅读 · 2018年4月25日
Arxiv
19+阅读 · 2018年3月28日
Arxiv
4+阅读 · 2017年10月30日
Top
微信扫码咨询专知VIP会员