数据追加用什么函数_RL用算法发现算法:DeepMind 数据驱动「价值函数」自我更新,14款Atari游戏完虐人类!...

8f829e044e5e72d43011c43e12c5141a.png

【新智元导读】击败卡斯帕罗夫的「深蓝」并不是真正的人工智能,它过度依赖了人类设计的规则,而最近DeepMind的一项深度强化学习新研究表明,不用人工介入,完全数据驱动,算法自己就能发现算法。

  • 「深蓝」并非以智取胜,而是一个劳动密集型选手

当「深蓝」在1997年击败国际象棋世界冠军卡斯帕罗夫时,人工智能似乎要来了。一台电脑击败了有史以来最聪明的国际象棋选手之一,很多人惊呼,电脑要超越人类了。然而事实并非如此,虽然「深蓝」是一段精心编制的程序,但这种方法过于劳动密集,过于依赖清晰的规则和有限的可能性,无法迁移到更复杂的游戏中,更不用说现实世界了。

深度学习成功的关键在于算法基本上是自己编写的,给定数据集,他们从中学习到一些表征,所谓的算法就是这么出来的。而DeepMind 正在开发一种新的元学习算法来进一步实现自动化,这种算法能够从零开始发现自己的价值函数--深度强化学习中的一个关键编程规则。近日该论文发表在了arxiv上。

34b2a1ff2a600d659c7d588178ee911a.png
  • 发现强化学习算法的算法

DeepMind最近引入了一种新的元学习方法,可以自动生成强化学习算法,称为学习策略梯度(LPG)。研究人员认为,该算法可以从数据中自动发现更新规则,而且能更好地适应特定环境,它既包括预测什么(价值函数),又包括如何从中学习,如何与环境交互。该元学习方法的目标是从环境和初始代理参数的分布中寻找最优的更新规则。

acd1dbca6c051da9cfc7212338bcb975.png

我们来看下学习策略梯度(LPG)是如何进行元训练的。首先用θ参数化主体产生状态的动作概率π和预测向量y。其次由η设置的更新规则(LPG)将代理的输出作为输入,向后展开给LSTM以生成代理输出(πˆ,yˆ)的目标。最后,更新规则参数η是从多个生存期进行元学习的,在每个生存期中,不同的代理与采样的环境进行交互,并使用共享更新规则更新其参数θ。

在所有K <N个参数通过滑动窗口更新后(在所有并行生命周期内取平均值),计算出元梯度以使回报最大化。LPG进行元训练时,没有做任何试图发现更新规则的先验工作,取而代之的是,它们全都依赖于价值函数(可以说是RL的最基本构建块)进行引导。代理的更新(θ)代理通过下面这个公式引导梯度上升来更新参数:

ba56d31344fb812ac69bbac8f3039364.png

其中πˆ和yˆ是LPG的输出。

7525c7064461059e387354646fec98af.png

是Kullback-Leibler散度。αy是用于预测更新的系数,在更高的层面来看,πˆ指定应如何调整动作概率,并直接影响代理的行为。yˆ指定 代理在给定状态预测下的类别分布,并且在LPG发现其有用的语义(例如,价值函数)并使用y通过自举来间接更改策略之前,不会对策略产生影响。

505e89d40f9d42a34a1ea4e7871b5126.png

LPG的元训练过程这只是研究人员建议的框架,实际上并不限于这种特定形式的代理更新和架构(例如,具有KL散度的分类预测),你也可以采用其他方案。但是,有一点需要注意,不要对y强制执行任何语义,只能允许LPG从数据中发现y的语义。LPG的更新(η)对LPG进行元训练时,要考虑到它可以在多大程度上改善与不同类型环境交互的代理的性能。具体而言,通过对等式中的目标应用策略梯度来计算元梯度。

ca76e19f59604131b6613e12261192b2.png

直观地,我们使用从θ0到θN的更新规则η进行N次参数更新,直到生命周期结束,并估计更新参数θN的策略梯度,以找到使θN的预期收益(G)最大化的超梯度方向。

  • 从零开始自主学习,已经在14款游戏中超越人类

LPG生成的强化学习算法表现如何呢?研究人员在复杂的Atari游戏中对LPG进行了评估。与高级RL算法相比,LPG可以很好地推广到Atari游戏。令人惊讶的是,训练环境主要由表格形式的数据组成,其基本任务比Atari游戏要简单得多,而且LPG在元训练期间从未见过如此复杂的世界。不过,接受LPG训练的代理可以在许多Atari游戏中学习复杂的行为,从而在14款游戏中实现超越人类的表现,而无需依赖任何手工设计的RL组件(例如价值函数),而是使用从零开始发现的规则。

6c501584ef79486cb1a1aa8606380471.png

上图展示了LPG从玩具环境到Atari的泛化。X轴是用于元学习LPG的玩具环境的数量。Y轴是代理在训练结束时胜过人类的Atari游戏的数量。虚线对应每年的最新算法。可以看到LPG的表现非常喜人。更多的细节请参见:https://arxiv.org/pdf/2007.08794.pdf

  • LPG不是很完美,但我们离通用RL又近了一步

LPG仍然落后于人工设计的先进算法。但是它在训练甚至是某些Atari游戏中的表现都超过了人为设计的基准,但这只能表明它在某些环境下是出色的。本文首次尝试了结合「预测内容」和「如何进行引导」来元学习完整的RL的更新规则,从而取代了一些现有的RL概念。由于LPG完全是数据驱动的,得出的算法可能会捕获环境训练集中的意外偏差,而除了发现算法时的奖励,训练时并没有提供特定领域的信息,这使得算法很难在训练环境中捕获偏见。但是至少证明了,强化学习从玩具环境迁移到具有挑战性的基准是可能的。DeepMind的这一研究,让我们朝着通用 RL 算法又迈进了一步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334485.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 命令之 tail -- 在屏幕上显示指定文件的末尾若干行/显示文件尾部内容/查看文件尾部内容

文章目录一、命令介绍二、常用选项三、参考示例&#xff08;一&#xff09;显示文件 file 的最后 10 行&#xff08;二&#xff09;显示文件 file 的内容&#xff0c;从第 20 行至文件末尾&#xff08;三&#xff09;显示文件file的最后10个字符&#xff08;四&#xff09;显示…

python的循环语句机制_Python-for循环的内部机制

Python中&#xff0c;使用for循环可以迭代容器对象中的元素&#xff0c;这里容器对象包括是列表(list)、元组(tuple)、字典(dict)、集合(set)等。但是&#xff0c;为什么这些对象可以使用for循环进行操作呢&#xff1f;首先&#xff0c;定义一个简单的类尝试一下&#xff1a;cl…

迈克尔 杰克逊mv_用杰克逊流式传输大型JSON文件– RxJava常见问题解答

迈克尔 杰克逊mv在上一篇文章中&#xff0c;我们学习了如何解析过大的XML文件并将其转换为RxJava流。 这次让我们看一个大的JSON文件。 我们的示例将基于微小的colors.json&#xff0c;其中包含将近150种这种格式的记录&#xff1a; {"aliceblue": [240, 248, 255, …

@cacheable 是否缓存成功_缓存策略:如何使用缓存来减少磁盘IO?

现代的消息队列&#xff0c;都使用磁盘文件来存储消息。因为磁盘是一个持久化的存储&#xff0c;即使服务器掉电也不会丢失数据。绝大多数用于生产系统的服务器&#xff0c;都会使用多块儿磁盘组成磁盘阵列&#xff0c;这样不仅服务器掉电不会丢失数据&#xff0c;即使其中的一…

Linux 启动/停止/重启 SSH 进程,以及查看 SSH 进程状态的命令

请参考文章《Linux 启动/重启/关闭 MySQL 数据库的命令》

g++ 安装python_以后再也不用“教程”:让人举一反三的python配置环境过程 + 超简单原理概括!...

前言&#xff1a; 前一阵子至少指导了5位学弟学妹小伙伴配置 python 环境。两年前我入门 python 时&#xff0c;也得照着互联网上的资料&#xff0c;一步一步“照猫画虎”&#xff1b;为什么现在自己可以“凭感觉”一气呵成了呢&#xff1f;我想&#xff0c;原因必然是自己对于…

MacBook/MacOS/Mac OS 关于启动/停止/重启服务(进程/程序)的命令

文章目录使用命令 launchctl 停止某个进程使用命令 launchctl 启动某个进程使用命令 launchctl 查看某个进程是否启动使用命令 launchctl 停止某个进程 liaowenongdeair:bin root# sudo launchctl unload -w /System/Library/LaunchDaemons/ssh.plist说明&#xff1a; .plist …

通过Java和Spring Boot应用程序将Gmail用作SMTP服务器

Gmail用户可以使用Gmail的SMTP服务器smtp.gmail.com从其Spring Boot应用程序发送电子邮件。 为此&#xff0c;让我们在应用程序中进行一些设置&#xff1a; 在application.properties文件中提供SMTP连接属性&#xff1a; spring.mail.hostsmtp.gmail.com spring.mail.username…

java面向对象类似atm的题_Java面向对象练习题之银行存取款

编写Java应用程序。首先定义一个描述银行账户的Blank类&#xff0c;包括成员变量“账号”和“存款余额”&#xff0c;成员方法有“存款”、“取款”和“余额查询”。其次&#xff0c;编写一个主类&#xff0c;在主类中测试Blank类的功能。String ZhangHao;double YuE;Blank(Str…

mongodb如何写入图片_CTO之瞳-数据库-MongoDB

MongoDB&#xff0c;常用的NoSql数据库&#xff0c;在https://db-engines.com/en/ranking 里被分类为文档型数据库。​本文从以下五个方面来了解MongoDB (和上一篇一样&#xff0c;基础操作请查询官方文档或者菜鸟教程&#xff09;使用场景存储引擎性能测试索引-B树分片与复制1…

技术停滞_检测和测试停滞的流– RxJava常见问题解答

技术停滞假设您有一个流以不可预测的频率发布事件。 有时您可以预期每秒会有数十条消息&#xff0c;但是偶尔几秒钟都看不到任何事件。 如果您的流是通过Web套接字&#xff0c;SSE或任何其他网络协议传输的&#xff0c;则可能会出现问题。 静默时间过长&#xff08;停顿&#x…

小波滤波器与其他滤波器的区别_滤波器国产 VS 国外

一、滤波器技术及产品类型详细分析几次技术应用的潮流引领了声波射频滤波器技术的发展&#xff0c;而SAW滤波器可以说是军用转民用的技术典范。早期国内的SAW滤波器仅用于国防如雷达、通信等方面需求&#xff1b;而该技术的第一次民用&#xff0c;即用于彩电产业&#xff0c;带…

java stopself_然后,即使我停止了服务,Context.startForegroundService()也没有调用Service.startForeground()...

所以我的应用程序有一些触发服务和通知的远程操作 . 在调用 startForegroundService 和服务尝试启动通知的时间之间&#xff0c;事情可能会发生变化&#xff0c;因此服务会再次检查事物的状态&#xff0c;然后决定要做什么 .因此&#xff0c;如果我的服务决定它不需要运行&…

Unix/Linux/BSD 它们之间的关系以及各自派系的介绍

文章目录一、Unix 是什么二、Unix 派系&#xff08;一&#xff09;BSD 分支1.BSD 是什么2.由 BSD 衍生的闭源 Unix 版本3.由 BSD 衍生的开源 Unix 版本&#xff08;二&#xff09;System V 分支1.System V 是什么2.System V 与 BSD 的版权纠纷&#xff0c;以及 UnixWare 的由来…

arraylist获取前多少位_Java 面试题 :百度前 200 页都在这里

作者&#xff1a;唐尤华&#xff0c;基本概念操作系统中 heap 和 stack 的区别什么是基于注解的切面实现什么是 对象/关系 映射集成模块什么是 Java 的反射机制什么是 ACIDBS与CS的联系与区别Cookie 和 Session的区别fail-fast 与 fail-safe 机制有什么区别get 和 post请求的区…

航空订票系统界面java_Java命令行界面(第21部分):航空公司2

航空订票系统界面java本系列文章的第21篇关于Java中解析命令行参数的文章的重点是Airline 2库。 Airline 2的GitHub项目页面描述了该库&#xff0c;“ Airline是一个Java库&#xff0c;提供了基于注释的框架来解析命令行界面。” 该页面进入状态&#xff1a;航空公司“同时支持…

js map遍历 修改对象里面的值_js中那些方法不改变原来的数组对象

一、map方法 [javascript] view plain copy function fuzzyPlural(single) {var result = single.replace(/o/g, e); //replace也不会修改原来数组的值,这里打印[foot,goose,moose,kangaroo] //alert(single); //下面为新的数组添加了一个元素,但是我们看到在map的时候没有对…

QPW 公告表(tf_notice)

公告表 CREATE TABLE tf_notice (notice_id int(11) NOT NULL AUTO_INCREMENT COMMENT 公告ID,title varchar(300) DEFAULT NULL COMMENT 标题,content varchar(2000) DEFAULT NULL COMMENT 内容,company_id bigint(20) DEFAULT NULL COMMENT 企业ID, # 删掉appraise_id bigin…

python爬虫数据_python爬取数据分析

一.python爬虫使用的模块 1.import requests 2.from bs4 import BeautifulSoup 3.pandas 数据分析高级接口模块 二. 爬取数据在第一个请求中时, 使用BeautifulSoupimport requests # 引用requests库 from bs4 import BeautifulSoup # 引用BeautifulSoup库 res_movies requests…

java 迁移数据_Java 9迁移指南:七个最常见的挑战

java 迁移数据我敢肯定&#xff0c;您已经听说过更新到Java 9并不是一件容易的事&#xff0c;甚至可能是不兼容的更新&#xff0c;而且对于大型代码库而言&#xff0c;迁移毫无意义。 这样做之后&#xff0c;我迁移了一个相当大的旧代码库&#xff0c;我可以告诉你&#xff0c;…