zoukankan      html  css  js  c++  java
  • Paper Reading 1

    来源:NIPS 2013

    作者:DeepMind

    理解基础:

    • 增强学习基本知识
    • 深度学习 特别是卷积神经网络的基本知识

    创新点:第一个将深度学习模型与增强学习结合在一起从而成功地直接从高维的输入学习控制策略

    详细是将卷积神经网络和Q Learning结合在一起。卷积神经网络的输入是原始图像数据(作为状态)输出则为每一个动作相应的价值Value Function来预计未来的反馈Reward

    实验成果:使用同一个网络学习玩Atari 2600 游戏。在測试的7个游戏中6个超过了以往的方法而且好几个超过人类的水平。

    在这篇文章中。还仅仅是測试7个游戏。到了Nature的文章则測试了很多其它的游戏。而且取得了更好的效果

    长处:

    • 算法具备通用性。一样的网络能够学习不同的游戏(当然,游戏具有类似性)
    • 採用End-to-End的训练方式。无需人工提取Feature(比方游戏中敌人的位置等等)
    • 通过不断的測试训练,能够实时生成无尽的样本用于有监督训练(Supervised Learning)

    缺点:

    • 由于输入的状态是短时的,所以仅仅适用于处理仅仅需短时记忆的问题,无法处理须要长时间经验的问题。

      (比方玩超级玛丽)

    • 使用CNN来训练不一定能够收敛,须要对网络的參数进行精良的设置才行。

    改进办法:

    • 使用LSTM 来增强记忆性?
    • 改进Q-Learning的算法提高网络收敛能力。

    详细分析

    1 前言介绍 Introduction

    提出问题:

    直接从高维的输入(比方视觉或听觉)来学习一个控制策略 是 RL增强学习的长期挑战。个人理解:这个问题是人工智能抽象出来的极其重要的子问题。由于人类都是通过视觉听觉触觉等感觉然后来学习一项技能,比方玩游戏,打篮球,洗碗等等。 解决问题的意义在于机器人不一定能够具有自我意识,可是却能够实现 机器人彻底取代反复性劳动 的愿景。

    以往的解决的方法:

    • 人工提取特征(比方物体的位置)
    • 使用线性的value function或者policy策略来表征

    性能的好坏主要取决于特征提取的好坏

    Deep Learning 带来的机会

    当前。深度学习已经在视觉,语音等领域取得突破性进展。根本的方法就是通过神经网络自己主动提取复杂特征。所以,非常自然的我们会考虑一个问题:
    增强学习是否能收益于深度学习

    答案当然是YES

    从RL看结合Deep Learning的困难之处

    • 深度学习的成功依赖于大量的有标签的样本。从而进行有监督学习。

      而增强学习仅仅有一个reward返回值,而且这个值还经常带有噪声,延迟,而且是稀少的(sparse)。理解是不可能每一个state给个reward。特别是延迟Delay,经常是几千毫秒之后再返回。

    • 深度学习的样本都是独立的。而RL中的state状态却是相关的,前后的状态是有影响的。这显而易见。

    • 深度学习的目标分布是固定的。一个图片是车就是车,不会变。但增强学习,分布却是一直变化的,比方超级玛丽,前面的场景和后面的场景不一样。可能前面的训练好了。后面又不行了,或者后面的训练好了前面又用不了了。

    从上面分析出增强学习要结合深度学习存在的三个问题:

    1. 没有标签怎么办?
    2. 样本相关性太高怎么办?
    3. 目标分布不固定怎么办?

    确实。假设没有这篇文章的突破性创新,我们怎样知道怎么解决这三个问题。

    这篇文章至少攻克了前两个问题及部分攻克了第三个问题。

    解决之道 CNN + Q-Learning = Deep Q Network

    1. 通过Q-Learning使用reward来构造标签
    2. 通过experience replay的方法来解决相关性及非静态分布问题

    实验环境

    使用Arcade Learning Environment 来训练Atari 2600 游戏。


    - 目标:使用一个基于神经网络的agent来学习玩各种游戏。玩的越多越好。
    - 输入:要求仅仅输入图像数据和得分。和人类基本一样
    - 输出: 控制动作
    - 要求:对于不同游戏。网络的结构及顶层參数设定一样

    背景知识 Background

    要理解这篇文章,没有背景知识是非常难的,尽管作者在这里介绍了一下RL的基本知识及Q-learning算法以及採用神经网络来取代Q矩阵的方法。但篇幅太短。没有基础非常难理解。

    核心就是几个公式:Q-learning ,用neural network的loss function,梯度公式。

    有了这几个公式支撑,整个算法也就理解一半了。


    关于背景知识这一块这里不进行分析了,之后专门进行介绍。

    TD-gammon

    看到这里才知道实际上并非Deepmind第一次将神经网络用于RL,TD-gammon使用了MLP(Multi-layer percetron)也就是一般的神经网络,一个隐藏层(hidden layer)来训练。

    而且将其应用到了玩backgammon游戏上取得了人类水平。

    可是非常可惜的是,当时人们把算法用到其它游戏象棋围棋并不成功,导致人们觉得TD-gammon算法仅仅适用于backgammon这个特殊的样例,不具备通用性。

    本质上,使用神经网络是为了模拟一个非线性的函数(value或者policy都行,比方flappy bird,设定它上升到一个高度下降这就是一个分段函数)。人们发现。将model-free的算法比方Q-learning与非线性函数拟合的方法(神经网络是一种)非常easy导致Q-network发散。因此。大部分的工作就使用线性的函数拟合(linear function approximation),收敛性好。

    其它人

    显然不是Deepmind第一个想到把深度学习和增强学习结合在一起的。之前也有人尝试用深度神经网络来预计环境environment,估值函数value function或者policy策略。

    这实际上是三个Deep Learning与Reinforcement Learning结合的思路
    而且结合Q-learning发散的问题也被Gradient temporal-difference 方法部分解决。(这种方法详细是神马还有待学习)
    这些方法用在使用非线性来预计固定策略或者使用线性来预计一个控制策略还是证明能够收敛的。

    可是这些方法还没有拓展到非线性控制nonlinear control。

    这就是研究点!。!!

    最相近的工作 NFQ

    採用相同的loss function,可是使用RPROP(不懂)来更新參数,问题是採用batch update而不是sgd 须要很多其它的计算开销而且取决于数据集的大小。

    採用deep autoencoder,也是使用visual input。可是不同的是。NFQ是把特征提取和增强学习分开进行的。

    先提取特征。再应用NFQ训练。


    而Deepmind是End-to-End。

    学习的特征和最后的动作价值是直接关联的。也就是学习什么特征也是网络决定

    关于Atari 2600 模拟器

    使用它做增强学习研究之前就有。但採用的是线性函数预计和获取的视觉特征(linear function approximation and generic visual features) 总之之前是人工提取特征,降维。


    HyperNEAT使用神经网络来取代一个策略。但不同游戏用不同的网络。

    Deep reinforcement learning

    目标

    当前深度学习的方式核心在于採用大量的数据集。然后使用SGD进行权值的更新。所以,这里的目标就是将增强学习的算法连接到深度神经网络中。然后能直接输入RGB的原始图像。并使用SGD进行处理。

    对照TD-gammon的改进之处

    实际上TD-gammon的思路就是上面的思路。仅仅是训练是直接获取experience样本进行训练。也就是on-policy。而关键是这个算法是20年前的了。所以。经过20年的硬件发展以及深度学习的发展,没有理由说无法在这上面取得突破。

    相比于TD-gammon的在线学习方式。Deepmind使用了experience replay的技巧。

    简单的说就是建立一个经验池。把每次的经验都存起来。要训练的时候就 随机 的拿出一个样本来训练。这样就能够解决状态state相关的问题。

    以此同一时候。动作的选择採用常规的ϵ-greedy policy。

    就是小概率选择随机动作,大概率选择最优动作。

    然后呢输入的历史数据不可能是随机长度,这里就採用固定长度的历史数据,比方deepmind使用的4帧图像作为一个状态输入。

    整个算法就叫做Deep-Q-Learning

    Deep-Q-Learning

    算法就是例如以下了:
    这里写图片描写叙述

    算法分析:
    1. 训练分成M个episode,每一个episode训练T次。我的理解就是比方玩游戏,一局是一个episode,一局里面有非常多时间片,就训练多少次,次数不固定。重新启动新的episode主要是初始化state 作为新的第一个,而不是用上一局的最后的状态作为state输入。
    2. 实际上每一个循环分成两部分:一部分是输出动作并存储。

    一部分是随机从经验池里取出minibatch个transitions,然后计算target。依据loss function通过RMSProp更新參数。(minibatch是什么意思?)
    3. 这里的算法我们能够看到,參数是一直更新的。而Nature的算法改进了,计算target用的是之前的參数。详细算法的变化等之后分析Nature的文章再说。

    算法长处对照standard online Q-learning

    • 每一步的经验都能带来非常多权值的更新,拥有更高的数据效率(个人不是非常理解这作为一个长处,曾经的算法就没有吗?)
    • 就是experience replay的优势。打破数据的相关性,减少数据更新的不确定性variance。
    • experience replay的还有一个长处就是不easy陷入局部最优解或者更糟糕的不收敛。 假设是on-policy learning。也就是来一个新的经验就学一个。那么下一个动作就会受当前的影响。假设最大的动作是向左,那么就会一直向左。使用experience replay 获取的行为的分布就比較平均。就能防止大的波动和发散。也因此。这是一个off-policy的学习。

    实际应用中。仅仅存储N个经验在经验池里(毕竟空间有限嘛)这种方法的局限性就是这个经验池并没有区分重要的转移transition,总是覆盖最新的transition。
    所以,採用有优先级的使用memory是一个更好的方式。

    这也就是阿蒙说的引导的经验池

    预处理与网络模型架构

    由于输入是RGB,像素也高,因此,对图像进行初步的图像处理,变成灰度矩形84*84的图像作为输入,有利于卷积。
    接下来就是模型的构建问题,毕竟Q(s,a)包括s和a。一种方法就是输入s和a。输出q值。这样并不方便,每一个a都须要forward一遍网络。

    Deepmind的做法是神经网络仅仅输入s,输出则是每一个a相应的q。这样的做法的长处就是仅仅要输入s。forward前向传播一遍就能够获取全部a的q值,毕竟a的数量有限。

    详细的模型架构例如以下:
    这里写图片描写叙述

    实验

    • 測试7个游戏
    • 统一不同游戏的reward,正的为1。负的为-1。其它为0。这样做a,R的长处是限制误差的比例而且能够使用统一的训练速度来训练不同的游戏
    • 使用RMSProp算法。就是minibatch gradient descent方法中的一种。Divide the gradient by a running average of its recent magnitude. 梯度下降有非常多种方法包括(SGD,Momenturn,NAG,Adagrad,Adadelta,Rmsprop) 相关问题以后再分析。

    • ϵ-greedy 前1百万次从1 下降到0.1。然后保持不变。

      这样一開始的时候就很多其它的是随机搜索,之后慢慢使用最优的方法。

    • 使用frame-skipping technique,意思就是每k frame才运行一次动作,而不是每帧都运行。在实际的研究中,假设每帧都输出一个动作。那么频率就太高,基本上会导致失败。在这里,中间跳过的帧使用的动作为之前最后的动作。这和人类的行为是一致的,人类的反应时间仅仅有0.1,也是採用相同的做法。而且这样做能够提速明显的。那么这里Deepmind大部分是选择k=4。也就是每4帧输出一个动作。

    训练

    怎样在训练的过程中预计训练的效果在RL上是个Challenge。毕竟不像监督学习。能够有training 和validation set。那么仅仅能使用reward,或者说平均的reward来判定。也就是玩的好就是训练的好。

    可是存在问题就是reward的噪声非常大,由于非常小的权值改变都将导致策略输出的巨大变化。从文章的途中能够看出:
    这里写图片描写叙述

    以此同一时候。平均Q值的变化却是稳定的,这是必定的,由于每次的Target计算都是使用Q的最大值。


    这里写图片描写叙述

    而且非常关键的是全部的实验都收敛了!!!

    尽管没有理论支持为什么保证收敛。可是就是实现了。Deepmind的方法能够在一个稳定的状态下使用大规模的深度神经网络结合增强学习。

    显示Value Function

    就是看一下每一帧的Q值变化,看了之后答案是惊人的:
    这里写图片描写叙述

    在敌人出现时,Q值上升。快消灭敌人时,Q值到顶峰。敌人消失,Q值回到正常水平。这说明Q值确实代表了整个复杂的状态。实际上到后面发现,整个神经网络能够同一时候跟踪多个图上的目标:

    这里写图片描写叙述

    算法评估

    算法对照了。
    - Sarsa算法。使用Sarsa算法学习一个线性的policy,採用手工获取的特征。
    - Contingency算法。 採用和Sarsa相同的方法。可是通过学习部分屏幕的表达增强了特征。


    上面的方法的特征提取都採用传统的图像处理方法比方背景减除。
    总之就是特征提取方式落后。Deepmind的算法是原始输入计算机须要自己去detect物体。(直接攻克了detection和tracking的问题)

    以此同一时候。当然是对照人类的水平了。人类的得分是人类玩两小时的结果,反正是蛮高的。

    但deepmind的方法有几个超过人类
    对照的列表就不复制了,总而言之就是方法好,原始输入。而且在使用ϵ 为0.05的得分还比其它方法强。

    总结Conclusion

    这篇文章採用了一个全新的方法结合深度学习和增强学习,能够说是deep reinforcement learning的开山之作。

    採用stochastic minibatch updates以及experience replay的技巧。 效果非常强,具有通用性。

  • 相关阅读:
    Java B/S开发模式漫谈 (转)
    struts 使用多个配置文件 strutsconfig.xml
    java 验证邮箱格式正确性、验证字符串是否为数字
    Java获取各种常用时间方法
    创建HttpServlet的基本步骤
    struts1.x 配置文件之——web.xml详解
    最常用的JAVA包
    字符串转换为日期时间格式
    struts1.x 配置文件详解
    看看别人的博客,经验总结,很宝贵
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/7260099.html
Copyright © 2011-2022 走看看