Deepmind“好奇心”强化学习新突破!改变奖励机制,让智能体不再“兜圈子”...

本文主要是介绍Deepmind“好奇心”强化学习新突破!改变奖励机制,让智能体不再“兜圈子”...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

640?wx_fmt=gif

640?wx_fmt=gif






  新智元报道  

来源:Google AI 

作者:Nikolay Savinov,  Timothy Lillicrap,

编译:大明

【导读】Google、Deepmind和苏黎世联邦理工学院的研究人员提出“好奇心学习”新方法,改变了智能体“好奇心”的生成方式和奖励机制,奖励机制不再基于智能体的“意外”,而是其记忆和所在情景。研究人员称,新方法可以有效降低智能体“原地兜圈子”、“拖延”等不良行为,有效提升模型性能。

强化学习是机器学习中最活跃的研究领域之一,在该领域的研究环境下,人工智能体(agent)做到正确的事情时会获得积极的奖励,否则获得负面的奖励。


这种“胡萝卜加大棒”的方法简单而通用,DeepMind教授利用DQN算法来玩Atari游戏和AlphaGoZero下围棋,都是利用强化学习模型。OpenAI团队利用OpenAI-Five算法来打Dota,Google如何教机器人手臂来握住新目标,也是利用强化学习实现的。不过,尽管强化学习取得了如此大的成功,但想使其成为一种有效的技术,仍然存在许多挑战。


标准的强化学习算法在对智能体反馈信息很少的环境中表现不佳。至关重要的是,这类环境在现实世界中是很常见的。举个例子,如何在一个大型的迷宫式超市中学习如何找到自己喜欢的奶酪。你找了又找,但找不到卖奶酪的货架。


如果做完了某一步动作,既没有“胡萝卜”,也没有“大棒”,那智能体便无法判断是否正朝着正确的方向前进。在没有奖励的情况下,怎样才能避免原地兜圈子?也只有好奇心了,好奇心会激励目标进入一个似乎不熟悉的区域,到那里去找奶酪。


在Google Brain团队、DeepMind和苏黎世联邦理工学院的合作研究中,提出了一种新的基于情景记忆的模型,它可以提供与好奇心类似的奖励,可以用于探索周围环境。


研究团队希望,智能体不仅要能探索环境,而且还要解决原始任务,因此将模型提供的奖励加入原始的反馈信息稀疏的任务的奖励中。合并后的奖励不再稀疏,使用标准强化学习算法就可以从中学习。因此,该团队提出的好奇心方法扩展了可用强化学习解决的任务集。研究论文题为《Episodic Curiosity through Reachability》


640?wx_fmt=png

基于情景的好奇心模型:观察结果被添加到智能体的记忆中,奖励基于智能体当前的观察结果与记忆中最相似的结果的差异来计算的。智能体会因为看到记忆中尚不存在的观察结果而获得更多奖励。


这一方法的关键是,将智能体对环境的观察结果存储在情景记忆中,同时对智能体观察到的“记忆中尚不存在”的结果也进行奖励。“记忆中不存在”是这一方法中新的定义,智能体去寻求这种观察结果,意味着去寻求不熟悉的东西。寻求陌生事物的驱动力会让智能体到达新的位置,防止其在原地兜圈子,并最终帮助其找到目标。下文还将谈到,这种方法不会像其他一些方法那样,让智能体出现一些不希望出现的行为,比如类似人类的“拖延”行为。


过去的好奇心学习机制:基于“意外”的好奇心


尽管在过去有许多尝试来形成好奇心,但本文关注的是一种自然且非常流行的方法:基于“意外”的好奇心机制。最近一篇题为“Curiosity-driven Exploration bySelf-supervised Prediction”的论文中探讨了这个问题。此方法一般称为ICM方法。为了说明意外是如何引发好奇心的,这里再次以超市中寻找奶酪的比喻为例。


640?wx_fmt=png


想象一下当你在逛市场时,其实会尝试着预测未来(“现在我在卖肉摊位处,所以我认为拐角处应该是卖鱼的,超市连锁店中这两个部分一般是相邻的”)。如果你的预测错了,你会感到意外(“啊,原来是卖菜的。我没想到!”)因而得到一个回报。这使你更有动力将来更加关注拐角处,探索新的地方,看看自己对它们的预测是否符合现实(也是希望能够找到奶酪)。


与此类似,ICM方法也建立了关于世界动态的预测模型,并在模型未能做出良好预测时对智能体给予奖励,这种奖励标志着“意外”或“新东西”。注意,探索没去过的地方,并不是ICM好奇心机制的直接组成部分。


对于ICM方法而言,这只是获得更多“意外”的一种方式,目的是让获得的总体奖励最大化。事实证明,在某些环境中可能存在其他方式造成“自我意外”,从而导致无法预料的结果。


640?wx_fmt=gif

基于“意外”好奇心的智能体会一直卡在电视前,不去执行任务


基于“意外好奇心“的智能体易产生“拖延行为”


在 《Large-Scale Study of Curiosity-Driven Learning》一文中,ICM方法的作者和OpenAI的研究人员表明,基于“意外最大化”的强化学习方法可能存在潜在的风险:智能体可以学会放纵和拖延的行为,不去做任何有用的事情来完成当前任务。


为了了解其中的原因,请看一个常见的思想实验,实验名为“嘈杂的电视问题”,在实验中,智能体被置于一个迷宫中,任务是寻找一个非常有价值的项目(与本文之前的超市例子中的“奶酪”类似)。


测试环境中还放了一台电视,智能体有电视的遥控器。电视频道数量有限(每个频道放映不同的节目),每次按键都会切换到随机频道。智能体在这样的环境中会如何表现?


对基于意外的好奇心的方法而言,改变频道会产生巨大的回报,因为每次频道变化都是不可预测和意外的。重要的是,即使在所有可用频道的节目都循环出现一次之后,由于频道放映的内容是随机的,所以每一个新变化仍然属于意外,因为智能体一直预测改变频道后会放什么节目,这个预测很可能会出错,导致意外的产生。


即使智能体已经看过每个频道的每个节目,这种随机变化仍然是不可预测的。因此,不断收获意外的好奇心智能体,最终将永远留在电视机前,不会去寻找那个非常有价值的物品,这类似于一种“拖延”行为。那么,如何定义“好奇心”才能避免产生这种拖延行为呢?


基于“情境”的好奇心模型


在《Episodic Curiositythrough Reachability》一文中,我们探索了一种基于记忆的“情境好奇心”模型,结果证明,这种模型不太容易产生“自我放纵”的即时满足感。为什么呢?


这里仍以上文的实验为例,智能体在不断变换电视频道一段时间后,所有的节目最终都会出现在记忆中。因此,电视将不再具有吸引力:即使屏幕上出现的节目顺序是随机且不可预测的,但所有这些节目已经在记忆中了。


这是本方法与前文的“基于意外”的方法的主要区别:我们的方法甚至没有去预测未来。与此相反,智能体会检查过去的信息,了解自己是否已经看到过与当前的观察结果。因此,我们的智能体不会被嘈杂的电视所提供的“即时满足感”所吸引。它必须去电视之外世界进行探索,才能获得更多奖励。


如何判断智能体是否看到与现有记忆中相同的东西?检查二者是否完全匹配可能是毫无意义的:因为在现实环境中,很少出现完全相同的场景。比如,即使智能体返回了一间完全相同的房间内,其观察角度也会与之前的记忆场景不同。


我们不会检查智能体记忆中的是否存在精确匹配,而是用训练后的深度神经网络来衡量两种体验的相似度。为了训练该网络,我们会猜测前后两个观察结果在时间上是否相距很近。如果二者在时间上很接近,很可能就应该被视为智能体同一段体验中的不同部分。


640?wx_fmt=png

是新是旧可由“可达性”图决定。在实际应用中,此图无法获取,我们通过训练神经网络估计器,在观察结果之间估计一系列步骤。


实验结果与未来展望


为了比较不同方法的表现,我们在两个视觉元素丰富的3D环境中进行了测试:分别为ViZDoom和DMLab。在这些环境中,智能体的任务是处理各种问题,比如在迷宫中搜索目标,或者收集“好目标”,同时避开“坏目标”。


 DMLab环境恰好能为智能体提供很炫酷的工具。此前的研究中,关于DMLab的标准设置就是为智能体配备适用所有任务的小工具,如果代理不需要特定任务的小工具,那么也可以不用。


有趣的是,在类似于上文的嘈杂的电视实验中,基于意外的ICM方法实际上使用了这个小工具,即使它对于当前任务并无用处!智能体的任务是在迷宫中搜寻高回报的目标,但它却更喜欢花时间对墙壁进行标记,因为这会产生很多“意外”奖励。


从理论上讲,预测标记的结果是可能的,但实际上太难实现了,因为智能体显然不具备预测这些结果所需的更深入的物理知识。 


640?wx_fmt=gif

基于“意外”的ICM方法,智能体一直在标记墙壁,而不是探索迷宫


而我们的方法则在相同的条件下学习合理的探索行为。智能体没有试图预测其行为的结果,而是寻求从已在情景记忆中存在的那些“更难”实现目标的观察结果。换句话说,智能体会根据记忆,去寻求更难实现的目标,而不仅仅进行标记操作。


640?wx_fmt=gif

在我们的“情景记忆”方法中,智能体会进行合理的探索


有趣的是,我们的方法所实施的奖励机制,会惩罚在原地兜圈子的智能体。这是因为在完成一次内容循环后,智能体之后的观察结果都已存在于记忆中了,因此不会得到任何奖励:


640?wx_fmt=gif

对我们的方法奖励机制的可视化:红色表示负面奖励,绿色表示正面奖励。从左到右分别为:使用奖励的映射,使用当前记忆位置的映射,第一人称视图


我们希望我们的研究有助于引领对新的探索方法的讨论。有关我们方法的深入分析,请查看我们的研究论文的预印本。


(论文链接:https://arxiv.org/abs/1810.02274)


参考文献:


https://ai.googleblog.com/2018/10/curiosity-and-procrastination-in.html


"Count-Based Exploration with Neural DensityModels", Georg Ostrovski, Marc G. Bellemare, Aaron van den Oord,Remi Munos


"#Exploration: A Study of Count-BasedExploration for Deep Reinforcement Learning", Haoran Tang, ReinHouthooft, Davis Foote, Adam Stooke, Xi Chen, Yan Duan, John Schulman, Filip DeTurck, Pieter Abbeel


"Unsupervised Learning of Goal Spaces forIntrinsically Motivated Goal Exploration", Alexandre Péré,Sébastien Forestier, Olivier Sigaud, Pierre-Yves Oudeyer


"VIME: Variational Information MaximizingExploration", Rein Houthooft, Xi Chen, Yan Duan, JohnSchulman, Filip De Turck, Pieter Abbeel


640?wx_fmt=gif

640?wx_fmt=jpeg


点击下方“阅读原文”了解【人工智能服务器】 ↓↓↓

这篇关于Deepmind“好奇心”强化学习新突破!改变奖励机制,让智能体不再“兜圈子”...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

Redis缓存问题与缓存更新机制详解

《Redis缓存问题与缓存更新机制详解》本文主要介绍了缓存问题及其解决方案,包括缓存穿透、缓存击穿、缓存雪崩等问题的成因以及相应的预防和解决方法,同时,还详细探讨了缓存更新机制,包括不同情况下的缓存更... 目录一、缓存问题1.1 缓存穿透1.1.1 问题来源1.1.2 解决方案1.2 缓存击穿1.2.1

Java如何通过反射机制获取数据类对象的属性及方法

《Java如何通过反射机制获取数据类对象的属性及方法》文章介绍了如何使用Java反射机制获取类对象的所有属性及其对应的get、set方法,以及如何通过反射机制实现类对象的实例化,感兴趣的朋友跟随小编一... 目录一、通过反射机制获取类对象的所有属性以及相应的get、set方法1.遍历类对象的所有属性2.获取

MySQL中的锁和MVCC机制解读

《MySQL中的锁和MVCC机制解读》MySQL事务、锁和MVCC机制是确保数据库操作原子性、一致性和隔离性的关键,事务必须遵循ACID原则,锁的类型包括表级锁、行级锁和意向锁,MVCC通过非锁定读和... 目录mysql的锁和MVCC机制事务的概念与ACID特性锁的类型及其工作机制锁的粒度与性能影响多版本

Spring使用@Retryable实现自动重试机制

《Spring使用@Retryable实现自动重试机制》在微服务架构中,服务之间的调用可能会因为一些暂时性的错误而失败,例如网络波动、数据库连接超时或第三方服务不可用等,在本文中,我们将介绍如何在Sp... 目录引言1. 什么是 @Retryable?2. 如何在 Spring 中使用 @Retryable

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06