社会焦点

OpenAI详解进化策略方法:可替代强化学习

字号+ 作者: 来源: 2017-03-26

OpenAI详解进化策略方法:可替代强化学习,进化 稳定策略,饥饿鲨进化抹香鲸,幼儿园探究式学习指导策略,普通话学习策略与方法

让机器具备生物一样的进化能力一直是计算机科学的一个热门研究领域,OpenAI 前几天发表了一篇相关研究的论文《用作强化学习的可扩展替代的进化策略(Evolution Strategies as a Scalable Alternative to Reinforcement Learning)》,机器之心当时也对那篇论文和另一篇来自谷歌的相关论文进行了介绍,参阅《》。今天,OpenAI 的博客深度解析了该研究机构的这项新研究,机器之心对该解读进行了编译介绍,论文可点击文末「阅读原文」查看。

进化策略(ES:evolution strategy)是一种已存在了数十年的优化技术,其在现代强化学习基准(如 Atari/MuJoCo)上的表现可以比肩标准的强化学习技术,同时还能克服强化学习的许多不便。

特别的几点包括:进化策略的实现更加简单(不需要反向传播),更容易在分布式环境中扩展,不会受到奖励稀疏的影响,有更少的超参数。这个结果令人吃惊,因为进化策略就好像是在一个高维空间中简单地爬山,每一步都沿着一些随机的方向实现一些有限的差异。

我们的发现是这种已有数十年之久思想强大结果的现代延续。比如说,在 2012 年,AlexNet 论文表明可以如何设计、扩展和训练卷积神经网络(CNN)以在图像识别任务上实现极其优秀的结果,而那时候大多数研究者还认为 CNN 并不是一种有希望的计算机视觉技术。类似地,在 2013 年,深度 Q 学习(Deep Q-Learning)论文表明可以将 Q 学习与 CNN 结合起来以成功地解决 Atari 游戏,从而使强化学习(RL)发展成为了一个有激动人心的实验结果的研究领域,而不再只是理论构想了。同样,我们的研究也表明进化策略可以在强化学习基准上实现优秀的表现,从而消除了人们之前普遍认为的进化策略方法不能用于高维问题的观点。

进化策略易于实现和扩展。我们的实现运行在一个包含了 80 台机器和 1440 个 CPU 内核的计算集群上,其可以仅在 10 分钟内就训练出一个 3D MuJoCo 人形步行者(在 32 核上,A3C 需要大约 10 小时)。使用 720 核,我们也能在 Atari 上实现可与 A3C 媲美的表现,同时还能将训练时间从 1 天降低至 1 小时。

下面,我们将首次简要描述传统的强化学习方法与我们的进化策略方法的对比,还会讨论进化策略和强化学习之间的权衡,最后还会突出介绍我们的一些实验。

强化学习

首先让我们简单看看强化学习的工作方式。假设我们有一些环境(比如游戏),我们想要在其中训练一个代理。为了描述该代理的行为,我们要定义一个策略函数(policy function),这是该代理的大脑,用于计算该代理如何在一个给定的情形中采取行动。在实践中,这个策略通常是一个神经网络,其输入是该游戏的当前状态,然后计算可用的所有允许动作的概率。一个典型的策略函数可能有大约 1,000,000 个参数,所以我们的任务就是找到这些参数的确切配置,以使得该策略能够实现良好的表现(即在很多游戏中获胜)。

OpenAI详解进化策略方法:可替代强化学习

  上图:在 Pong 游戏中,策略根据输入的屏幕像素来计算移动玩家拍子的概率(右边绿色的拍子):上、下或不动。

该策略的训练过程如下所示。首先是一个随机初始化,我们让该代理与环境进行一阵交互,然后收集交互的「剧情(episode)」(比如,每个 episode 就是一局 Pong 游戏)。由此我们就能得到情况的完整记录:遇到了什么样的状态序列、在每个状态采取了什么动作、每一步的奖励如何。下图给出了一个例子,这三个 episode 每个都表示在一个假想环境中的 10 个时间步骤。其中每个矩形都是一个状态,如果奖励是正面的(比如把球击回给了对方),那么矩形就是绿色;如果奖励是负面的(比如没有接到球),那么矩形则为红色:

OpenAI详解进化策略方法:可替代强化学习

这幅图给出了改善策略的一个方法;导致绿色状态的行为是好的行为,导致红色的行为则很糟糕。然后我们可以使用反向传播来计算该网络参数的一次小的更新,该更新将使得未来的状态更有可能是绿色、更少可能是红色。我们预计更新后的策略会更好一点。然后我们迭代这一过程:收集另一批 episode,进行另一次更新……

通过在这些动作中注入噪声来进行探索。我们在强化学习中通常使用的策略是随机的,它们仅计算采取任何动作的概率。通过这种方法,代理可能会在训练过程中发现自己在不同时间处在同一个特定状态,而且由于采样的情况,它也将在不同的时间采取不同的动作。这能提供学习所需的信号:这些动作中有一些会导致好的结果,这些动作就会得到鼓励;另一些则不会奏效,就会被抑制。因此我们可以说,我们通过向代理的动作注入噪声而为其学习过程引入了探索(exploration)——我们可以通过在每个时间步骤从动作分布中采样来做到这一点。这与进化策略不同。

进化策略

关于「进化(Evolution)」。在我们探讨进化策略(ES)之前,有必要强调一下尽管这种方法名字中有「进化」这个词,但进化策略和生物进化关系不大。也许这项技术的早期版本从生物进化上获得了一些启发——在一定的抽象程度上,这种方法可被视为这样一个过程:从个体构成的群体中采样并让其中成功的个体引导未来后代的分布。但是,其数学细节在生物进化方法的基础上实现了很大的抽象,我们最好将进化策略看作是一类黑箱的随机优化技术。

黑箱优化。在进化策略中,让我们完全忘记代理、环境、涉及的神经网络和其中的交互吧。进化策略的整个设置就是一大堆数字输入(假设和前面提到的策略网络的参数数量一样,有 1,000,000 个数字),然后输出 1 个数字(对应总奖励),我们需要找到这 1,000,000 个数字的最好配置。在数学上,我们可以说是根据输入向量 w(该网络的参数/权重)来优化一个函数 f(w),但我们不对 f 的结构做出任何假设,我们只能对其进行评估(因此被称为「黑箱」)。

进化策略算法。直观上来讲,这种优化就是一种「猜测然后检测」的过程,即我们从一些随机参数开始,然后重复执行以下过程:1)随机对该猜测进行一点调整,2)让我们的猜测向效果更好的方向移动一点。具体而言,就是在每个步骤输入一个参数向量 w,然后通过高斯噪声对 w 进行抖动来生成一群(比如 100 个)有稍微改变的参数向量 w1, w2……w100。然后我们在环境中分别运行这 100 个候选项所对应的策略网络,从而独立地对这 100 候选项分别进行评估,然后将每个案例中的奖励加起来。然后其更新后的参数就变成了这 100 个向量的加权和,其中每个权重都正比于其总奖励。(即,我们想让更成功的候选项有更高的权重。)在数学上,你也会注意到这就相当于使用有限差分法(finite difference)来估计参数空间中预期奖励的梯度,只是我们是沿着 100 个随机方向来做的。

我们要看的另一种方法是仍然使用强化学习(策略梯度,具体来说是 REINFORCE),其中的代理的动作是使用高斯策略得出整个参数向量。

OpenAI详解进化策略方法:可替代强化学习

转载请注明出处。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章