Facebook 田渊栋评 DeepMind 深度强化学习的异步算法

在ICML2016上,谷歌 DeepMind 有9篇论文被接收,新智元特邀Facebook 人工智能实验室研究员田渊栋对其中的《 深度增强学习的异步算法》进行了点评。

田渊栋,卡耐基梅隆大学机器人系博士,Facebook人工智能组研究员

作者介绍:田渊栋,卡耐基梅隆大学机器人系博士,Facebook人工智能组研究员,Facebook围棋项目组负责人,曾在Google自动驾驶研究小组任软件工程师。

【田渊栋】 这篇也是用Advantage Function去做增强学习的工作,但这次对付的是变量连续的行动空间,这样就直接和自动控制及机器人相关。连续空间上的一个大问题是,即使通过训练得到了用深度网络表达的Q(s, a),但因为a可以取无穷多个值,在通常情况下无法通过穷举a得到最优的行为。对此该文将Q(s, a)先分解成V(s)和A(s, a)的和,然后将A(s, a)建模成一个关于a的二次函数,而建模这个二次函数的方法是通过建模条件均值mu(a|s)和方差P(a|s)进行的,这样可以用解析方法直接得到给定s后a的最优解。注意该文中用x代表状态,u代表行动,而非s和a,这个是控制论中的通用做法。如果大家想一想可能马上发现mu(a|s)其实就是策略函数pi(a|s)(对计算机围棋而言就是走子网络),那为啥他要这么绕?因为这样的话可以用一个模型同时建模pi(a|s), V(s)和Q(s, a),这个是比较有意思的地方。

有了这个模型之后,该文另一个大的贡献在于用卡尔曼滤波器配以局部线性模型,来加快经验的获取。在增强学习中训练深度网络是比较慢的,因为一开始深度网络的策略很糟糕,在自我模拟中得到的经验完全没有意义,用这些经验训练得到的网络也就不会太好,如此循环往复,需要很久才能走出这个圈。一个办法是用好的经验去训练策略和估值函数,这可以通过专家已有的经验来获取(如围棋),也可以像该文那样,通过简单模型来获取。局部线性模型是用来预测行动后的下一个状态的,而在有了局部线性模型之后,卡尔曼滤波则告诉你为了达成某个状态(如让猎豹达到下一个跑步的姿势),目前需要采取什么样的控制策略,这两者都是经典控制论中常用的方法。最后的测试是在开源的模拟环境中进行的。效果要比以前他们自己的方法(使用actor-critic模型的DDPG)要好些,我很期望看到只用局部线性加卡尔曼滤波后的结果,可惜似乎文章中并未给出。

Facebook 田渊栋评 DeepMind 深度强化学习的异步算法

论文介绍

标题: 深度增强学习的异步算法 (Continuous Deep Q-Learning with Model-based Acceleration)

摘要:我们提出了一种在概念上非常简单并且轻量的深度增强学习框架,使用异步梯度下降优化深度神经网络控制器。我们展示了 4 种标准 RL 算法的异步模型变体,表明并行 actor-learner 在训练中能带来稳定化的影响,使所有 4 种方法都能顺利训练出神经网络控制器。相比目前最领先的方法,论文中表现最好的方法——actor-critic(AC)的异步变体——ATARI游戏表现更好,训练用时仅为一半,并且使用的是一个多核CPU而非GPU。不仅如此,我们展示了异步 AC 方法在各式连续运动控制问题,以及一个新任务(包含使用视觉输入在一个随机 3D 迷宫中寻找到奖励)同样表现出色。

1. 引言

深度神经网络提供了丰富的、能让增强学习(reinforcement learning,RL)算法高效运行的表征。但之前人们认为,将简单的在线RL算法与深度神经网络相结合从根本上来说是不稳定的。为了让算法能够稳定化,研究者提出了许多解决方案。这些方法的核心是相似的:一个在线RL代理(agent)取得的观测数据的顺序是非平稳的(non-stationary),在线RL的更新相互之间会有很高的相关性。通过将数据储存在经验回放记忆体(experience replay memory)之中,数据将可以根据不同的时间步长分批处理或是随机采样。用这种方法整合记忆体中的数据会降低非平稳性,降低更新互相之间的相关性,但同时也令这些方法的适用范围仅限于离策略(off-policy)RL算法。

ATARI 2600之类的充满挑战的领域中,基于经验回放的深度RL算法一鸣惊人。但是,经验回放有一些缺陷:每一次真实交互(real interaction),它都需要耗用更多的内存和计算力,并且它要求离策略学习算法能基于旧策略生成的数据进行更新。

这篇论文中,我们为深度RL提供了一种迥异的范式。与经验回放不同,对于环境中的多个实例,我们并行、异步地执行多个 agent。在任意时间步长,并行 agent 都将会历经许多不同的状态,这种并行性也能令 agent 的数据去相关,更接近平稳过程(stationary process)。这个简单的想法使得深度神经网络能被稳健且高效地应用于数量更为庞大的在策略(on-policy)RL算法——比如 Sarsa、n步方法——以及AC方法和Q学习之类的离策略(off-policy)RL算法。

异步RL范式也在实际操作上也有优点。原先的深度RL非常依赖硬件,比如GPU或是HPC,而我们的实验用机只是拥有一个标准多核CPU。学习各类ATARI 2600时,异步RL在许多游戏中都获得了更好的表现,训练耗时比原先基于GPU的算法短得多,消耗资源也比HPC少得多。不仅如此,我们提出的方法中表现最好的A3C方法(asynchronous advantage actor-critic),还能够良好适用于各类连续运动控制任务、也能仅仅从视觉输入中学会探索3D迷宫的通用策略。我们相信,A3C能在2D和3D游戏、离散和连续动作空间上同时获得成功,A3C能训练前馈和递归 agent,使它成为目前最通用、最成功的RL agent。

4. 异步无锁(lock-free)增强学习

我们现在展示的是一步Sarsa、一步Q学习、n步Q学习、优势AC(advantage actor-critic)的多线程异步变体。设计这些方法的目的,是寻找出能可靠训练深度神经网络策略、无需大量资源的RL算法。虽然这 4 个基础的RL方法相当不同,其中AC是一种在策略搜索方法、而Q学习是一种离策略基于价值(value-based)的方法,我们通过两个操作令这 4 种算法能够得以实现并进行比较。

首先,我们运用 Gorila 框架中提出的异步 actor-learner,不过是在一台机器上使用多线程,而非使用不同的机器和一个参数服务器。我们让学习器位于同一台机器,免除了在不同机器间传输梯度和参数的消耗,也使我们能使用 Hogwild! 式更新训练控制器。

其次,我们将观测做成了多个并行 actor-learner 有可能对环境的不同部分进行探索的形式。不仅如此,你可以在每个 actor-learner 中人为使用不同的探索策略实现最大化多样性的目的。通过在不同线程中运行不同的探索策略,多个并行在线更新的 actor-learner 对参数改变的总和,最终将有可能比一个单独进行在线更新的 agent 做的更新,互相之间相关性更低。因此,我们不使用回放记忆体,而是依赖于采用不同探索策略的并行行动者,替代DQN训练算法中经验回放提供的稳定化效果。

除了令学习得以稳定化,使用多个并行 actor-learner 也有一些实际的好处。第一,减少训练时间,减少幅度大致上与并行 actor-learner 的数量呈线性相关。第二,由于不再依赖经验回放让学习稳定化,我们能使用在策略增强学习方法——比如Sarsa和AC——以稳定的方式训练神经网络。

6. 结论和讨论

我们展示了 4 种标准RL算法的异步版本,并表明了它们能够以稳定的方式训练许多领域中的神经网络控制器。在我们提出的框架中,基于价值的算法和基于策略的算法、离策略和在策略算法,离散性任务和连续性任务,都有可能在RL中稳定训练神经网络。当我们用 16 核CPU训练ATARI任务时,我们提出的异步算法训练速度比Nvidia K40 GPU训练DQN的速度快,其中A3C算法的训练用时比目前最领先的方法少一半。

我们的一个主要发现是,使用并行 actor-learner 更新一个共享模型,对于我们研究的 3 种基于价值的算法的学习过程都具有稳定化影响。虽然这表明稳定的在线Q学习可能脱离经验回放,但是这不意味着经验回放是无用的。将经验回放整合入异步RL框架,有可能通过重复利用旧数据大幅提高这些方法的数据效率。这可能会进而在与环境交互的消耗比更新模型的消耗更大的领域(比如TORCS)带来更快的训练速度。

将其他现有的RL模型或是深度RL近期进展与我们的异步框架相结合,展现出了许多迅速优化我们在文中展示的算法的可能性。我们展示的n步模型是向前的(forward view),直接使用修正后的n步回报作为目标,但是使用向后的方法在资格迹(eligibility trace)中结合不同的回报已经变得更为常见。通过使用其他估计优势函数的方法——比如Schulman等人(2015b)的泛化优势估计——可能会切实改善A3C算法。所有我们研究的基于价值的方法,都有可能受益于用各种方式降低Q值的高估误差(over-estimation bias)。而另一个更值得揣摩的方向是,尝试结合近期真正的在线时间差分方法的研究与非线性函数逼近。

氧分子网(www.yangfenzi.com)是关注互联网生态圈的科技新媒体

·氧分子网(http://www.yangfenzi.com)延伸阅读:

Facebook围棋项目负责人田渊栋:DarkForest与AlphaGo仍有差距
除了AlphaGo,Google人工智能公司DeepMind要进军医疗保健领域
AlphaGo之父戴密斯·哈萨比斯:除了下围棋,AI还要塑造人类未来
Star VC投资商汤科技SenseTime,“明星+星探”双重落地人工智能
没有任何行业可以忽视人工智能——MIT EmTech Digital 峰会干货
《自然》论文详解:AlphaGo 背后的深度神经网络和树搜索
【nature】深度学习巨头看人工智能界人才迁徙
解读 Larry Page 的 Alphabet:想要的是从 A 到 Z 的一切

分享给您的好友:

您可能还喜欢…

  1. 一. 要解决什么问题,难度在哪里?

    Google DeepMind 团队在 NIPS 2015 发表了一篇题为 “Teaching Machines to Read and Comprehend” 的论文 。这篇论文想解决的问题是:如何让计算机回答提问。具体来说,输入一篇文章(d)和一句提问(q),输出文章中的一个词组,作为回答(a)。

    譬如输入以下这段文章,

    The BBC producer allegedly struck by Jeremy Clarkson will not press charges against the “Top Gear” host, his lawyer said Friday. Clarkson, who hosted one of the most-watched television shows in the world, was dropped by the BBC Wednesday after an internal investigation by the British broad-caster found he had subjected producer Oisin Tymon “to an unprovoked physical and verbal attack” .

    并且输入一句提问,
    Producer X will not press charges against Jeremy Clarkson

    期望输出的答案是,
    X = Oisin Tymon

    要正确理解文章,并推理答案,有若干难度。

    在上述例子中的难点包括:

    1. 同义词:struck、attack 是同义词。
    2. 多态指称:Jeremy Clarkson、“Top Gear” host,单纯从字面语义来理解,两者没有关联。但是在上下文中,都指称同一个人。
    3. 上下文关联,譬如 his、he 究竟指代谁?
    4. 句型复杂,从句很多。
    5. 整个文章中,掺杂着很多与提问无关的内容。
    6. 最难的是语义转承。文中提到 “Jeremy Clarkson 打了制片人 Oisin Tymon”,又提到 “被打的制片人不准备起诉”,所以,后一句中 “被打的制片人” 等于 “Oisin Tymon”。

    二. 语言模型

    解决方案有两个基本思路:如果没有训练语料,就分析句法结构。根据每个句子的主谓宾,及其句子与句子之间的语义关联,找到答案。如果有大量语料,就先用这些语料先训练模型,然后用模型分析文章中每个词及上下文,从而识别出目标词组。

    这篇论文用的是后一种办法,针对文章中每一个词,估算这个词是答案的概率,即,P( w(t) = a | [d, q] ) ,a 是答案,d 是文章,q 是提问,w(t) 是文中第 t 个词。

    众所周知,神经网络(NN)可以模拟任何函数,Y = f( X ) = NN( X ),所以,P( w(t) = a | [d, q] ) 也可以用神经网络来模拟 。

    具体来说,把文章 d 和提问 q 当成神经网络的输入 X,把神经网络 NN 当成分类器(Classifier),神经网络的输出是一个向量 Y,Y 的维度是英语里所有词汇的总数。Y(t) 是词汇表中第 t 个词,是答案 a 的概率。

    这个办法有两个问题:

    1. 神经网络的输入 X,必须是定长的向量。但是在我们的问题里,X = [d, q],文章 d 和提问 q 不定长。

    2. 神经网络的输出是一个向量 Y,Y 的维度是英语里所有词汇的总数,数量巨大,导致神经网络的规模巨大,参数众多,导致需要非常多的训练语料才能优化这些参数。

    解决这两个问题的思路分别是:

    1. 用循环神经网络 RNN,尤其是它的变种 LSTM,来取代常规的神经网络(Feed Forward NN)。 把整篇文章和整句提问的每一个词,先转换成定长的词向量,然后依次输入 RNN/LSTM。

    2. 把文章 d 和提问 q 中所有词的词向量,依次输入 RNN/LSTM 以后,这时 RNN/LSTM 的输出 Y,预测着紧随其后下一个词的词向量。下一个词的词向量,其实就是答案 a 的词向量的预测值。

    我们把答案 a 的词向量的预测值,与文章中每一个词的词向量比对,找到距离最短,也就是语义最接近的那个词,那个词极有可能就是我们寻找的答案。

    我们不需要计算英语里每一个词是答案的概率,只需要预测答案 a 的词向量。通过这个办法,我们可以保持 RNN/LSTM 的规模不大,参数不多。

    三. 基于 LSTM 的实现方式

    沿着前文的思路,我们接下去讨论如何具体实现。

    假如我们有足够多的训练语料,就可以预先用 的方法,把所有词都逐个转换为词向量。词向量蕴含着词的特征。同义词的特征相近,所以同义词的词向量,相互距离也比较接近。两个词向量之间的距离,可以用余弦距离来计算。

    把文章中所有词,都逐个转换为词向量,文章就被转变成 n * f 的矩阵 X。矩阵的行数 n,是文章包含的所有词的数量,矩阵的列数 f 是每个词向量的维度。f 是多少,没有定规,根据经验设定。

    X(t) 是指该矩阵的第 t 行,也就是文中第 t 个词的词向量。我们的任务,是根据 X(1) … X(t) ,来预测 X^(t+1)。

    不妨先构造一个神经网络 LSTM,它由若干常规神经网络构成(FeedForward NN)。先做一个预测神经网络 PredictNN,输入有两个向量,X(t) 和 Context(t-1)。Context(t-1) 是前文语义的记忆,而前文是指 X(1) … X(t-1)。输出是 H(t),它是下一个词向量的预测值 X^(t+1)。

    Context 的内容,由另外一个神经网络 ContextNN 来决定。ContextNN 的输入有三个向量:

    1. 当前词的词向量 X(t),
    2. PredictNN 在 (t-1) 时刻的输出 H(t-1),也就是上一个时刻,PredictNN 预测的 X^(t)。如果 PredictNN 预测得很准,那么 H(t-1) = X^(t) = X(t)。
    3. 在上一个时刻,Context 的内容 Context(t-1)。

    如果 PredictNN 预测得很准,即 H(t-1) = X^(t) = X(t),那么说明 X(t) 没有新鲜的内容。在这种情况下,不需要在 Context 里添加 X(t) 的内容。反之,H(t-1) 与 X(t) 的差距越大,Context 越需要添加 X(t) 的内容,同时淡忘 Context(t-1) 的内容。ContextNN 的输出是更新后的 Context 的内容,Context(t)。

    这两个神经网络 PredictNN 和 ContextNN,有若干参数需要设置。如果我们有足够的训练语料,就可以通过常规的机器学习算法,譬如 Stochastic Gradient Descent 来找到这些参数的最优值。

    LSTM 可以用两个神经模型来实现,也可以用其它方式来实现。细节或许不同,但是大致原理相似。

    四. LSTM 的缺陷

    LSTM 的缺陷在于,记住了后文,忘记了前文。论文 用 Attention 的办法 ,来弥补 LSTM 的缺陷。建议先读 再读 ,这样更容易理解

    Attention 的办法是,在 Context 中,不遗漏任何 X(t),而是把 Context 处理成 X(t) 的加权和,X(t) 的权重,取决于两个因子,
    1. X(t) 的上下文,
    2. X(t) 的上下文与答案 a 的相关度。

    沿着这个思路,论文提议了两个语义模型:作者把一个模型称为 Attentive Reader,把另一个模型称为 Impatient Reader。Impatient Reader 是 Attentive Reader 的变种,大同小异。我们只介绍 Attentive Reader。

    Attentive Reader 把文章 d,转换为矩阵 X。X(t) 是该矩阵的第 t 行,也就是文中第 t 个词的词向量。

    1. Attentive Reader 用 LSTM,依次输入从文章的第 1 个词 X(1),到第 t 个词 X(t),得到输出 Hf(t)。
    Hf(t) 概况了 X(1) .. X(t) 的重要内容,不妨称为上文语义向量。
    2. 接着计算从文章中最后一个词,第 n 个词,反向到第 t 个词的下文语义向量,Hb(t)。
    3. 然后把上文和下文这两个语义向量拼接在一起,就得到完整的上下文语义向量 Yd(t) = Hf(t) || Hb(t)。

    如果词向量的维度是 f,那么上下文语义向量的维度是 2f。

    同理,Attentive Reader 从提问语句的第一个词的词向量 Q(1) 到最后一个词的词向量 Q(m),做一个词向量。又从提问语句的最后一个词的词向量 Q(m),到第一个词的词向量 Q(1),反向再做一个词向量。把正向和反向两个词向量,拼接在一起,就得到提问语义向量 U,U 的维度也是 2f。

    有了文章第 t 个词的上下文语义向量 Yd(t) 和提问语义向量 U,就可以计算文章的第 t 个词与提问 a 之间的相关度。论文 提议,用一个常规的神经网络,来计算 Yd(t) 与 U 之间的相关度。为什么不能用余弦距离,来计算 Yd(t) 与 U 之间的相关度呢?因为 Yd(t) 是 U 的答案,而不等同于 U 本身。

    有了上下文语义向量 Yd(t),以及 Yd(t) 与 U 之间的相关度,我们就可以计算 Context(t)。
    有了 X(t) 和 Context(t-1),我们就可以用 PredictNN 来预测 X^(t+1)。

    有了 X^(t+1),我们就可以预测排在 X(1), … X(n), Q(1),… Q(m) 之后的下一个词向量,这个词向量,就是答案 a 的词向量。

    有了预测的答案 a 的词向量,我们就可以给文章中的每一个词,计算它与预测的答案 a 的词向量之间的余弦距离。距离最短的词,就是我们寻找的提问的答案。

    Attentive Reader 使用了多个神经网络,不仅计算上下文语义向量时,所用的 LSTM 需要两个或者更多神经网络,而且计算 Yd(t) 与 U 之间的相关度也需要一个神经网络,而且预测下一个词的词向量,也需要一个神经网络。

    我们需要有足够多的训练语料,才能训练这些神经网络。“Teaching Machines to Read and Comprehend” 这篇论文,不仅介绍了如何用 attention 弥补 LSTM 缺陷,而且也讨论了如何自动获得足够多的训练语料。

    五. 训练语料

    论文中提议的方法,有赖于用大量语料,训练 LSTM 去估算文章中每一个词的上下文语义向量,而且也需要大量语料去优化每一个词与提问的相关度。

    每一个训练语料都包含三部分,文章 d、提问 q、答案 a。

    论文提议,从新闻网站中,收集整理新闻稿,作为训练语料中的文章 d,把新闻稿附设的文章摘要(Story highlights),转换为训练语料中的提问 q 和答案 a。

    譬如 有这么一篇新闻,

    A U.S. Navy SEAL was killed in a parachute accident in Perris, California, near Riverside, a U.S. Navy official told CNN on Wednesday. He was identified Thursday as Special Warfare Operator 3rd Class Jason Kortz, 29, of Highlands Ranch, Colorado. "Jason distinguished himself consistently throughout his career. He was the epitome of the quiet professional in all facets of his life, and he leaves an inspiring legacy of natural tenacity and focused commitment for posterity," the Navy said in a news release. Kortz joined the SEALs in September after enlisting in the Navy two years earlier. He was married, the Navy said. Initial indications are the parachute failed to open during a jump as part of a training exercise. Kortz was part of a West Coast-based Navy SEAL team.

    该新闻附设两条文章摘要,Store highlights

    * Navy identifies deceased sailor as Jason Kortz, who leaves behind a wife
    * Statement says he was "epitome of a quiet professional"

    论文提议把这两条文章摘要转换为提问 q 和答案 a,譬如,

    提问 q: Navy identifies deceased sailor as X,回答 a: X = Jason Kortz
    提问 q: Statement says X was epitome of a quiet professional,回答 a: X = Jason Kortz

    六. Memory Networks

    如果文章不长,就把存放在内存里。如果文章很长,就需要把它存放在硬盘里,或者硬盘和内存混用。

    论文 中用 LSTM 给文章的每一个词,依次打分,分值是该词与提问的相关度。因为是依次打分,所以 LSTM 与内存和硬盘的交互方式很简单。

    但是如果需要做更复杂的处理,譬如把 “Top Gear host” 替换成 “Jeremy Clarkson”,把 “被打的制片人” 替换成 “Oisin Tymon”,LSTM 与内存和硬盘做交互时,需要更复杂的寻址机制。

    论文提议用 Memory Network 来实现 LSTM 与内存和硬盘的交互。其实也可以用 Differentiable Neural Computer 来完成这项工作,而且后者的能力更强大。

    七. 参考文献 ( 附下载链接)

    Teaching Machines to Read and Comprehend
    https://arxiv.org/abs/1506.03340

    A Neural Probabilistic Language Model
    https://www.researchgate.net/publication/2413241_A_Neural_Probabilistic_Language_Model

    Neural Machine Translation by Jointly Learning to Align and Translate
    https://arxiv.org/abs/1409.0473

    US Navy SEAL Jason Kortz dies in parachute accident
    http://edition.cnn.com/2015/03/18/politics/us-navy-seal-dies-in-training-accident/

    Memory Networks
    https://arxiv.org/abs/1410.3916

    Hybrid computing using a neural network with dynamic external memory
    http://www.nature.com/articles/nature20101.epdf?author_access_token=ImTXBI8aWbYxYQ51Plys8NRgN0jAjWel9jnR3ZoTv0MggmpDmwljGswxVdeocYSurJ3hxupzWuRNeGvvXnoO8o4jTJcnAyhGuZzXJ1GEaD-Z7E6X_a9R-xqJ9TfJWBqz