论文趣读:人工智能里程碑?回顾2015年登上Nature的DQN(全文翻译+批注)

本文介绍了2013年DeepMind的深度强化学习论文,首次展示CNN+Q-learning(DQN)如何使神经网络学会玩雅达利小游戏,超过人类表现。DQN通过卷积神经网络处理未经处理的像素输入,使用Q-learning变体进行训练,成功操控多个雅达利游戏。虽然2020年的强化学习初学者可能觉得这只是入门级任务,但2013年时这一成果被视为强化学习和深度学习的里程碑。
摘要由CSDN通过智能技术生成

简介: 你有多久没读过学术论文了?高水平论文多为英文,笔者翻译了一篇 2013 年 Google 的 DeepMind 的深度强化学习论文,这篇文章被视为 强化学习+深度学习 的里程碑之作,其成果于 2015 年发表在了顶级学术期刊 Nature 上。这篇文章的内容是,CNN(卷积神经网络) + Q-learning(一种离轨-时序差分-强化学习迭代方法)= DQN ,让神经网络自己学习玩雅达利小游戏(上个世纪70/80年代的电子游戏,控制规则很简单直接)。

整个思路特别简单,对于2020年的强化学习初学者来讲,这真的只是一个入门级的小作业(也许只需要几行代码),因为现在已经有了很多成熟的深度学习框架+强化学习框架+测试环境封装

今天,我们抛开代码,尝试感受论文的魅力;并且设身处地地想一想:如果你现在是处于 2013 年的科技爱好者,看到这个成果,该有多震惊、多喜悦?

文章:Mnih V , Kavukcuoglu K , Silver D , et al. Playing Atari with Deep Reinforcement Learning[J]. Computer Science, 2013. DeepMind链接:(https://deepmind.com/research/publications/playing-atari-deep-reinforcement-learning)

使用深度强化学习操控雅达利游戏

前置知识

很多程序猿朋友可能不太了解强化学习算法,实际上,这就是一种自动控制技术。我们可以将强化学习视为一个黑箱: 我们向黑箱中输入环境的信息(如你在游戏中的位置以及敌人的位置、周边的地理条件等),黑箱立即输出此可你应该做什么(如射击、向左移动1米、向右移动1米等) 。强化学习就是基于这个框架进行拓展,这其中有很多内容值得研究:如何通过少量的数据对黑箱中的函数进行高效训练(强化学习的数据都是基于与环境交互得来,数量很少)?多个黑箱间如何通讯协作

我将强化学习的参数迭代简单抽象为下面的框架。

for ep in range(epoch):
    # 环境初始化后
    # 我们得到当前环境的信息:obs
    # 以及现在这个环境是否结束
    # (比如这句游戏是否结束):done
    obs, done = env.reset()
    # 强化学习与环境交互 n_step 次后
    # 用获得的数据更新一次参数
    # 因此要有 step_ 计数
    step_ = 0
    while not done:
        if step_ == n_step:
            # buffer 中存储着历史数据
            # 只与如何 learn() 是数学问题
            # 有很多研究成果,如 TRPO PPO
            agent.learn(buffer)
            step_ = 0
        step_ += 1
        # agent 根据当前环境,做出动作 action
        action = agent.act(obs)
        # 环境根据 agent 如何动作,进入下一帧
        obs, reward, done, _ = env.step(action)
        # 将获得的数据存入 buffer
        buffer.add(obs, reward, done)
        """
        这里再解释一下 reward
        reward 是根据当前情况给强化学习的奖励值
        比如,强化学习操作很烂,玩射击游戏死了
        reward 就是负数
        强化学习就会通过算法迭代知道:
        “之前我的操作很烂,这么做 action 不行”
        相反,强化学习操作很好,射死了好多玩家
        最终的 reward 可能就是正数
        强化学习就会通过算法迭代知道
        “这局我的操作很好,这么做 action 值得巩固”
        """

这篇文章中,我们将看到几乎第一个“有用的”、“超越人类”的通用强化学习算法DQN文章是我人工翻译的,欢迎指正! 下面我们开始!

摘要

我们提出了首个能够直接从高维场景成功中学习到控制策略的深度强化学习模型。(Piper蛋窝批注:注意直接二字,直接将图形输入神经网络,就好像人类用眼睛直接看到图像一样,完全模仿人操作游戏的情景)模型由卷积神经网络组成,基于Q-learning的变体进行训练, 输入是未经处理的像素,而输出是评价未来奖励的值函数。 (Piper蛋窝批注:即输出是各个动作的价值,如果想进行最优控制,则选择价值最高的动作进行执行即可)我们在Arcade学习平台中,将我们的方法应用到了7个雅达利2600游戏上,且不需要对算法结构做任何调整。(Piper蛋窝批注:现在已经不需要这么麻烦,直接再 python 中 pip 雅达利即可)我们发现有6个游戏的表现超过了已有方法,并且它们中有三个超过了人类高手的控制水平。

1 介绍

从类似视觉或语言的高纬度场景输出中,直接学习智能体控制方法是强化学习中存在已久的难题之一。这个领域大部分成功的强化学习应用都依赖人工构造的特征值与线性价值函数或策略设计。简言之,这类系统的表现高度依赖特征设计的质量。 (Piper蛋窝批注:人工提取特征,就是根据不同问题进行不同设计,这不“智能”)

深度学习的近期发展让从场景信息中直接提取高阶特征成为可能,代表性的突破有计算机视觉以及语音识别。 这些方法利用了大量的神经网络模型,包括卷积神经网络、多层感知机、受限玻尔兹曼机和循环神经网络,在监督学习与非监督学习领域都发挥了作用。顺着这个思路,我们很自然地考虑是否能基于类似的技术,将强化学习与场景数据结合。

然而,强化学习与深度学习结合面临几个挑战。首先,当下大部分成功的深度学习应用需要大量的手动标记的训练数据。另一方面,强化学习算法必须以一个标量的奖励信息为学习对象。然而,该奖励信息往往是稀疏的、有噪声的、有延迟的。在动作与其造成的结果之间的延迟,往往长达几千步长的时间。在延迟的情况下,对于监督学习,在输入与目标间建立联系是十分艰难的。另一个问题是,大部分深度强化学习假设了数据样本是独立的, 而在强化学习中,需要处理的序列往往是高度相关的状态。此外,在强化学习中,数据分布随着算法学习到新的行为会发生改变,这与基于稳定分布的深度学习方法产生了冲突。

本文证实了卷积神经网络能够克服这些问题,从复杂的强化学习环境的视频数据中成功学习到控制策略。 这个网络结构通过Q-learning的变体进行训练,与此同时使用梯度下降策略来更新权重。 为了缓解相关数据与不稳定的分布问题,我们使用了一个经验池机制,经验池可以随机采样以前的状态转换,进而在大量旧行为的基础上达到平滑训练分布的效果。 (Piper蛋窝批注:现在几乎所有的深度强化学习方法,都会使用经验池,否则,对于数据是一种浪费 / 利用不充分)

图1:五个雅达利2600游戏的截屏:(从左至右)Pong,Breakout,Space Invaders,Seaquest,Beam Rider

我们在The Arcade学习环境中对大量雅达利2600游戏测试了我们的方法。雅达利2600对于强化学习测试来讲富有挑战性, 它为智能体提供了高维的图形输入( 210 × 160 210\times160 210×160 RGB 60Hz的视频)以及为人类玩家设置的有难度的丰富多样的有趣任务。我们的目的是创建一个单一的神经网络智能体能够成功学会控制尽可能多的游戏。 我们没有为网络提供任何其他有关游戏的特殊信息或人工构建的特征值,网络也不会知道模拟器内部的状态。用于网络学习的 只有视频输入、奖励值、终止信号与可能的动作集合——即人类玩家能获取的信息。 此外,网络结构与训练得出的所有超参数在游戏间都是不改变的。目前该网络模型的表现在测试的七个游戏中的六个超过了所有以往的强化学习算法,并且在三个游戏中超过了人类高手的水平。图1展示了五个用于训练的游戏截屏。

2 背景

我们将任务考虑为智能体与环境 ξ \xi ξ、雅达利模拟器、序列化的动作、观测值与奖励值进行交互。在每一步中,智能体从动作集合 A = { 1 , … , K } A=\{1,\ldots,K\} A={ 1,,K}中选择一个动作 a t a_t at。动作被传递给模拟器,模拟器内在的状态与游戏分数发生改变。通常环境 ξ \xi ξ是可能是随机的。模拟器的内部状态并不被智能体所观测;取而代之的是一张来自模拟器的图片 x t ∈ R d x_t\in R^d xtRd,这张图片是由代表当前屏幕信息的像素向量组成。 值得注意的是,通常来讲,游戏的分数取决于整个之前发生的动作与观测值序列;关于某一个动作的反馈只会在几千步发展后显现。

既然智能体只能观测到当前屏幕的图片,这个任务就只能被部分得观测而许多模拟器的状态在感知上是有偏的。比如,只从当前屏幕状态 x t x_t xt完全理解当前的情况是不可能的。 因此,我们考虑将动作与观测值序列化, s t = x 1 , a 1 , x 2 , … , a t − 1 , x t s_t=x_1,a_1,x_2,\ldots,a_{t-1},x_t st=x1,a1,x2,,at1,xt,并且从这些序列中学习游戏策略。 模拟器中的所有策略都被假设为在有限的步骤内终止。这个形式构建了一个极大的并且有限的马尔科夫决策过程,其中每个序列都是一个确定的状态。 由此,我们可以将标准的强化学习方法应用于这个马尔科夫决策过程,只需简单地将完整的序列 s t s_t st作为 t t t时刻的状态。

智能体与环境交互并进行决策的目的是最大化远期奖励值。我们做出了基本的假设:未来的奖励由参数 γ \gamma γ递减,并且定义了t时刻的折扣回报 R t = ∑ t ′ = t T γ t ′ − t r t ′ R_t=\sum_{t^\prime=t}^{T}\gamma^{t^\prime-t}r_{t^\prime} Rt=t=tTγttrt,其中T是终止时间。我们定义了最优动作价值函数 Q ∗ ( s , a ) Q^\ast\left(s,a\right) Q(s,a),作为任何策略下的最大期望可行动作回报。具体来讲,就是在观测到状态序列 s s s后,选择某个动作 a a a,依据 Q ∗ ( s , a ) =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值