OpenAI十七岁高中实习生提交论文,提出分层强化学习新算法

本文主要是介绍OpenAI十七岁高中实习生提交论文,提出分层强化学习新算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

虽然只有 17 岁,但是 Gunn High School 学生 Kevin Frans 已经有 7 年多的编程开发经历了。他最近在 OpenAI 实习期间作为第一作者发表的论文《Meta Learning Shared Hierarchies》已经提交到了 ICLR 2018 大会。




OpenAI 成立近两年,发表了大量研究论文,而这周四的一篇论文却与众不同:其第一作者是名高中生。这位少年英才叫 Kevin Frans,就读于 Henry M. Gunn 高中,现为 OpenAI 实习生。两年前,他 15 岁,首次训练神经网络,一个语音或人脸识别系统。受到 Atari 游戏和 AlphaGo 有关报道的启发,他阅读了大量论文,并部分地复现了它们。「我喜欢让计算机去实现看起来不可能的事。」Frans 说,脸上泛着笑容。他创作过一个交互式网页,可以用漫画风格为线条素描自动上色。


Frans 通过新想法解决了 OpenAI 实验室的一个问题。他取得进步,又卡住,便写信给 OpenAI 研究员 John Schulman 寻求建议。他们共同讨论了 Schulman 的论文《Trust Region Policy Optimization》,Schulman 查看了 Frans 的个人博客,大为吃惊:「从邮件中完全看不出他是一名高中生。」




后来 Frans 申请 OpenAI 实习生职位,面试官是 Schulman。接着他开始了工作,没有任何学位,仅仅是一名高中生。Frans 致力于解决一个机器人和强化学习领域的关键问题:机器如何利用先前已学知识解决新问题?


这对人类来讲易如反掌。即使你是第一次做食谱,也无需重新学习如何做焦糖洋葱和筛面粉。相反,机器学习软件通常不得不重复漫长的训练过程才能解决新问题——甚至面对包含相同元素的问题也不例外。


Frans 的新论文《META LEARNING SHARED HIERARCHIES》在解决这一问题上取得了新进展。「如果它真的成功了,就真正攻破了一个大问题。」Frans 说。他开发了一个算法帮助腿式虚拟机器人学习哪些肢体运动可应用于多个任务,例如步行和爬行。在测试中,它帮助两腿和四腿虚拟机器人完成新任务,包括更快的迷宫导航。OpenAI 的一个视频展示了一个测试中的「蚂蚁」机器人。该论文已被提交至机器学习顶会 ICLR。Schulman 说:「Frans 的论文为这一问题提供了全新思路,并且一些结果超越了前人所有成果。」


作为跆拳道黑带级选手,Frans 面对的挑战不仅仅来自计算机。他对 AI 的部分热情可能源于对 Gunn 高中(加州帕洛阿尔托,硅谷中心)的向往。Frans 说他的研究没有得到父母的帮助,但他并不是家里唯一的计算机高手,他父亲在上市的 FPGA 生产商赛灵思做硅芯片设计。


你可能已经猜到 Frans 是业余的。普林斯顿大学的机器视觉教授 Olga Russakovsky 说道,以这么小的年纪就能在机器学习做出研究贡献是很罕见的。她还说,通常而言,比起拥有悠久传统的以数学或科学等为主题的且有导师指导的课外活动竞赛,尝试机器学习和 AI 对于学生来说要更困难。而要获取计算资源也是一个障碍。Frans 的笔记本电脑的计算力不足以测试他的一个想法,因此他用借记卡申请了一个谷歌云计算服务的账号,将代码放在上面运行。他还鼓励其他对机器学习感兴趣的同学也尝试一下。「最好的(研究机器学习)方式就是走出去,自己动手去尝试。」他说。


Russakovsky 是那些尝试带动更多的高中生一起改进 AI 系统的研究者之一。她的一个动机是她认为目前这个领域中男性、富有人群、白人的比重太大。「AI 是一个将给社会方方面面带来革新的领域,我们不能让某些同质群体单独建立 AI 系统,因为他们不能代表社会的整体。」Russakovsky 说。她联合创建了 AI4ALL,这是一个基金会,用于组织露营活动,为不同背景的高中生提供和 AI 研究者一起工作和学习的机会。


在帕洛阿尔托,Frans 还考虑过帮助下一代的 AI 专家。他有一个 7 岁大的弟弟,「我觉得他对写代码感兴趣,」Frans 说,「也许他再长大一点,我就可以帮助他。」


下面,让我们看看 OpenAI 博客是如何解读 Frans 这篇论文的。


OpenAI 开发了一个分层强化学习算法,它通过学习高级动作以完成一系列任务,比如快速完成需要数千时间步的任务。OpenAI 把算法应用到导航问题时,发现了一组向不同方向步行和爬行的高级动作,这能帮助智能体快速掌握导航任务。


人类通过把复杂的挑战分解为小的、可掌控的部分来解决问题。烤松饼包括一系列高级动作,如称面粉、搅拌鸡蛋、将面粉和鸡蛋的混合物放到平底锅中、打开炉子等等。人类通过把这些已经学会的动作排序来快速学习新任务,即使这个任务可能需要数百万个低级动作,即个人肌肉收缩。


另一方面,现在的强化学习方法通过对低级动作执行粗暴的搜索来运行,需要大量实践才能完成新的任务。这些方法在解决需要大量时间步的任务时非常低效。


OpenAI 的解决方案基于分层强化学习,智能体将复杂的行为表示为一个短序列的高级动作。这使得智能体可以解决更有难度的任务:如果解决方案需要 2000 个低级动作,分层策略可以将其转化为 10 个高级动作的序列,在 10 步序列中搜索比在 2000 步序列中搜索要高效得多。

元学习共享分层(Meta-Learning Shared Hierarchies/MLSH)




OpenAI 新算法 MLSH 学习一个分层策略,其中主策略在多个子策略之间切换。主策略在每 N 个时间步选择一个动作,假设 N=200。N 个时间步执行的子策略构成一个高级动作,对于导航任务而言,子策略对应于朝不同方向行走或爬行。


之前的大部分研究中,分层策略是手动控制的。但是,OpenAI 的目的是通过环境互动发现自动的分层结构。从元学习的角度来看,好的分层可在未知任务的训练过程中快速达到高奖励。因此,MLSH 算法旨在学习能够在未知任务上快速学习的子策略。


OpenAI 在多个任务的分布上进行训练,在每个样本任务中学习新的主策略,同时共享子策略。通过重复训练新的主策略,该过程可以自动找到适合主策略学习动态的子策略。


实验


MLSH 运行一整晚之后,训练出的智能体可以解决 9 个不同的迷宫任务,子策略对应向上、向下、向右移动,然后该智能体可以自行导航通过迷宫。


在 AntMaze 环境中,Mujoco 蚂蚁机器人被放置在 9 个不同的迷宫中,任务是必须从起点到达目的地。MLSH 算法成功地找到多个子策略,这些子策略排序之后可以完成迷宫任务,而这仅需要环境互动。之后,该子策略集可用于完成更大的任务。


代码


MLSH 智能体训练代码和评估这些算法的 MuJoCo 环境:https://github.com/openai/mlsh。


论文:META LEARNING SHARED HIERARCHIES




论文链接:https://s3-us-west-2.amazonaws.com/openai-assets/MLSH/mlsh_paper.pdf


摘要:我们开发了一种学习分层结构策略的元学习方法,通过使用在大量时间步上执行的共享基元策略(primitives-policy)来提高未知任务上的样本效率。具体来说,基元策略集可以在多个任务中共享,也可以在任务特定的策略之间切换。我们提供了一个具体的指标,用来度量此类分层策略的能力,这就导致在未知任务上快速达到高奖励的优化问题。然后,我们展示了一种算法,通过使用现有的强化学习方法,对新任务重复采样并重复设置任务特定的策略,从而端到端地解决该问题。我们成功地发现了一种有意义的行动基元(motor primitive),仅需要与迷宫环境进行互动,就可以使四腿智能体在不同方向上移动。我们还展示了基元的迁移性,以解决长时间尺度的稀疏奖励障碍训练,我们使 3D 仿真机器人使用同样的策略实现鲁棒地步行和爬行。

这篇关于OpenAI十七岁高中实习生提交论文,提出分层强化学习新算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/423900

相关文章

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

如何通过Golang的container/list实现LRU缓存算法

《如何通过Golang的container/list实现LRU缓存算法》文章介绍了Go语言中container/list包实现的双向链表,并探讨了如何使用链表实现LRU缓存,LRU缓存通过维护一个双向... 目录力扣:146. LRU 缓存主要结构 List 和 Element常用方法1. 初始化链表2.

Git如何修改已提交人的用户名和邮箱

《Git如何修改已提交人的用户名和邮箱》文章介绍了如何修改Git已提交人的用户名和邮箱,包括注意事项和具体步骤,确保操作正确无误... 目录git修改已提交人的用户名和邮箱前言第一步第二步总结git修改已提交人的用户名和邮箱前言需注意以下两点内容:需要在顶层目录下(php就是 .git 文件夹所在的目

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

javaScript在表单提交时获取表单数据的示例代码

《javaScript在表单提交时获取表单数据的示例代码》本文介绍了五种在JavaScript中获取表单数据的方法:使用FormData对象、手动提取表单数据、使用querySelector获取单个字... 方法 1:使用 FormData 对象FormData 是一个方便的内置对象,用于获取表单中的键值

golang字符串匹配算法解读

《golang字符串匹配算法解读》文章介绍了字符串匹配算法的原理,特别是Knuth-Morris-Pratt(KMP)算法,该算法通过构建模式串的前缀表来减少匹配时的不必要的字符比较,从而提高效率,在... 目录简介KMP实现代码总结简介字符串匹配算法主要用于在一个较长的文本串中查找一个较短的字符串(称为

通俗易懂的Java常见限流算法具体实现

《通俗易懂的Java常见限流算法具体实现》:本文主要介绍Java常见限流算法具体实现的相关资料,包括漏桶算法、令牌桶算法、Nginx限流和Redis+Lua限流的实现原理和具体步骤,并比较了它们的... 目录一、漏桶算法1.漏桶算法的思想和原理2.具体实现二、令牌桶算法1.令牌桶算法流程:2.具体实现2.1

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操