前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >最强UNREAL(UNsupervised REinforcement and Auxiliary Learning)简介及代码

最强UNREAL(UNsupervised REinforcement and Auxiliary Learning)简介及代码

作者头像
用户1908973
发布2018-07-24 18:03:33
1.3K0
发布2018-07-24 18:03:33
举报
文章被收录于专栏:CreateAMindCreateAMind

UNREAL(UNsupervised REinforcement and Auxiliary Learning)算法

UNREAL算法是2016年11月DeepMind提出的最新深度增强学习算法,在A3C算法的基础上对性能和速度进行进一步提升,在Atari游戏上取得了人类水平8.8倍的成绩,并且在第一视角的3D迷宫环境Labyrinth上也达到了87%的人类水平,成为当前最好的深度增强学习算法。

A3C算法充分使用了Actor-Critic框架,是一套完善的算法,因此,我们很难通过改变算法框架的方式来对算法做出改进。UNREAL算法在A3C算法的基础上,另辟蹊径,通过在训练A3C的同时,训练多个辅助任务来改进算法。UNREAL算法的基本思想来源于我们人类的学习方式。人要完成一个任务,往往通过完成其他多种辅助任务来实现。比如说我们要收集邮票,可以自己去买,也可以让朋友帮忙获取,或者和其他人交换的方式得到。UNREAL算法通过设置多个辅助任务,同时训练同一个A3C网络,从而加快学习的速度,并进一步提升性能。

在UNREAL算法中,包含了两类辅助任务:第一种是控制任务,包括像素控制和隐藏层激活控制。像素控制是指控制输入图像的变化,使得图像的变化最大。因为图像变化大往往说明智能体在执行重要的环节,通过控制图像的变化能够改善动作的选择。隐藏层激活控制则是控制隐藏层神经元的激活数量,目的是使其激活量越多越好。这类似于人类大脑细胞的开发,神经元使用得越多,可能越聪明,也因此能够做出更好的选择。另一种辅助任务是回馈预测任务。因为在很多场景下,回馈r并不是每时每刻都能获取的(比如在Labyrinth中吃到苹果才能得1分),所以让神经网络能够预测回馈值会使其具有更好的表达能力。在UNREAL算法中,使用历史连续多帧的图像输入来预测下一步的回馈值作为训练目标。除了以上两种回馈预测任务外,UNREAL算法还使用历史信息额外增加了价值迭代任务,即DQN的更新方法,进一步提升算法的训练速度。

UNREAL算法本质上是通过训练多个面向同一个最终目标的任务来提升行动网络的表达能力和水平,符合人类的学习方式。值得注意的是,UNREAL虽然增加了训练任务,但并没有通过其他途径获取别的样本,是在保持原有样本数据不变的情况下对算法进行提升,这使得UNREAL算法被认为是一种无监督学习的方法。基于UNREAL算法的思想,可以根据不同任务的特点针对性地设计辅助任务,来改进算法。

以上内容摘自原文:http://geek.csdn.net/news/detail/138103

代码:

https://github.com/miyosuda/unreal

UNREAL

About

Replicating UNREAL algorithm described in Google Deep Mind's paper "Reinforcement learning with unsupervised auxiliary tasks."

https://arxiv.org/pdf/1611.05397.pdf

Implemented with TensorFlow and DeepMind Lab environment.

Preview

seekavoid_arena_01

stairway_to_melon

Network

All weights of convolution layers and LSTM layer are shared.

Requirements

  • TensorFlow (Tested with r0.12)
  • DeepMind Lab
  • numpy
  • cv2
  • pygame
  • matplotlib

Result

Score plot of DeepMind Lab "seekavoid_arena_01" environment.

How to run

First, dowload and install DeepMind Lab

$ git clone https://github.com/deepmind/lab.git

Then build it following the build instruction. https://github.com/deepmind/lab/blob/master/docs/build.md

Clone this repo in lab directory.

$ cd lab
$ git clone https://github.com/miyosuda/unreal.git

Add this bazel instrution at the end of lab/BUILD file

package(default_visibility = ["//visibility:public"])

Then run bazel command to run training.

bazel run //unreal:train --define headless=osmesa

To show result after training, run this command.

bazel run //unreal:display --define headless=osmes
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-02-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CreateAMind 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • UNREAL
    • About
      • Preview
        • Network
          • Requirements
            • Result
              • How to run
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档