AI好奇心,不只害死猫!MIT强化学习新算法,智能体这回「难易通吃」
人人都遇见过一个古老的难题。
周五晚上,你正试图挑选一家餐厅吃饭,但没有预定。你应该去你最爱的那家人满为患的餐厅排队等位,还是尝试一家新餐厅,希望能发现一些更好吃的惊喜?
后者确实有可能带来惊喜,但这种好奇心驱动的行为是有风险的:你去尝试的那家新餐厅的东西可能会更难吃。
好奇心作为AI探索世界的驱动力,实例已经不胜枚举了——自主导航、机器人决策、优化检测结果等等。
在某些情况下,机器使用「强化学习」来完成一个目标,在这一过程中,AI智能体从被奖励的好行为和被惩罚的坏行为中反复学习。
就像人类在选择餐厅时面临的困境一样,这些智能体也在努力平衡发现更好的行动(探索)的时间和采取过去导致高回报的行动(利用)的时间。
太强的好奇心会分散智能体的注意力,无法做出有利的决定,而好奇心太弱,则意味着智能体永远无法发现有利的决定。
为了追求使AI智能体具有「恰到好处」的好奇心,来自麻省理工学院计算机科学与AI实验室(CSAIL)的研究人员创造了一种算法,克服了AI过于「好奇」和被手头的任务分散注意力的问题。
他们研究出的算法会在需要时自动增加好奇心,如果智能体从环境中得到足够的监督,已经知道该怎么做,则降低好奇心。
论文链接:https://williamd4112.github.io/pubs/neurips22_eipo.pdf
经过60多个视频游戏的测试,该算法能够在不同难度的探索任务中取得成功,而以前的算法只能单独解决简单或困难难度。这意味着AI智能体可以使用更少的数据来学习决策规则,达到激励最大化。
「如果你很好地掌握了探索-开发之间权衡,就能更快地学习正确的决策规则,而任何不足之处都需要大量的数据,这可能意味着产生的结果是非最优的医疗方案,网站的利润下降,以及机器人没有学会做正确的事情。」
该研究带头人之一、麻省理工学院教授兼Improbable AI实验室主任Pulkit Agrawal说。
好奇心,不只害死猫!
我们似乎很难从心理学角度解释好奇心的心理基础,对于这种寻求挑战的行为的潜在神经学原理,我们一直没有深入理解。
有了强化学习,这个过程在情感上被「修剪」了,将这个问题剥离至最基本的层面,但在技术实现上却相当复杂。
从本质上讲,智能体只应该在没有足够的监督来尝试不同的事情时才会有好奇心,如果有监督,它必须调整好奇心,降低好奇心。
在测试游戏任务中,很大一部分是小智能体在环境中跑来跑去寻找奖励,并执行一长串的行动来实现一些目标,这似乎是研究人员算法的逻辑测试平台。
在《马里奥赛车》和《蒙特祖玛的复仇》等游戏实验中,研究人员将上述游戏分为两个不同类别:
一种监督稀疏的环境,智能体获得的指导较少,也就是「困难」的探索游戏;另一种是监督更密集的环境,即「简单」的探索游戏。
假设在《马里奥赛车》中,只删除所有的奖励,你不知道什么时候敌人杀了你。当你收集一个硬币或跳过管道时,不会得到任何奖励。智能体只有在最后才被告知其表现如何。这就属于稀疏监督环境,也就是困难任务。在这种任务中,激励好奇心的算法表现非常好。
而如果智能体处于密集监督环境,也就是说,跳过管道、收集硬币和杀死敌人都有奖励,那么,表现最好的就是完全没有好奇心的算法,因为经常得到奖励,只要照着走流程就行了,不需要额外探索就能收获颇丰。
这里如果使用激励好奇心的算法,学习速度会很慢。
因为好奇心强的智能体,可能会试图以不同的方式快速奔跑,到处乱逛,走遍游戏的每一个角落。这些事情都很有趣,但并不能帮助智能体在游戏中取得成功,获得奖励。
如前文所言,在强化学习中,一般用激励好奇心和抑制好奇心的算法,来分别对应监督稀疏(困难)和监督密集(简单)任务,不能混用。
这一次,MIT团队的新算法始终表现良好,无论是在什么环境中。
未来的工作可能涉及回到多年来令心理学家高兴和困扰的探索:好奇心的适当衡量标准--没有人真正知道从数学上定义好奇心的正确方法。
MIT CSAIL博士生Zhang Weihong说:
通过改进探索算法,为你感兴趣的问题调整算法。我们需要好奇心来解决极具挑战性的问题,但在某些问题上,好奇心会降低性能。我们的算法消除了调整「探索和利用」的平衡负担问题。
以前要花一个星期来解决的问题,新算法可以在几个小时内就得到满意的结果。
他与麻省理工学院CSAIL工程硕士、22岁的Eric Chen是关于这项工作的新论文的共同作者。
卡内基梅隆大学的教师Deepak Pathak说:
「像好奇心这样的内在奖励机制,是引导智能体发现有用的多样化行为的基础,但这不应该以在给定的任务中做得好为代价。这是AI中的一个重要问题,这篇论文提供了一种平衡这种权衡的方法。看看这种方法如何从游戏扩展到现实世界的机器人智能体上,将是很有趣的一件事。」
加州大学伯克利分校心理学特聘教授和哲学副教授Alison Gopnik指出,当前AI和认知科学的最大挑战之一,就是如何平衡「探索和利用」,前者是对信息的搜索,后者是对奖励的搜索。
「这篇论文使用了令人印象深刻的新技术来自动完成这一工作,设计了一个能够系统地平衡对世界的好奇心和对奖励的渴望的智能体,让AI智能体朝着像真正的儿童一样聪明的方向,迈出了重要一步。」他说。
参考资料:
https://techxplore.com/news/2022-11-bad-ai-curious.html
https://www.csail.mit.edu/news/ensuring-ai-works-right-dose-curiosity
以上是AI好奇心,不只害死猫!MIT强化学习新算法,智能体这回「难易通吃」的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

C语言函数返回值类型包括int、float、double、char、void以及指针类型。int用于返回整数,float和double用于返回浮点数,char返回字符。void表示函数不返回任何值。指针类型返回内存地址,注意避免内存泄漏。结构体或联合体可返回多个相关数据。

C语言学习起步可能略显困难,但掌握正确方法后,您将快速掌握基础并逐步精通。本指南将引导您循序渐进地学习C语言核心概念,从基础知识到高级主题。目录C语言基础与数据类型用户输入条件表达式简写switch语句C语言数组嵌套循环C语言函数结构体指针C语言基础与数据类型C程序遵循标准结构,并使用多种数据类型定义变量。基本程序结构如下:#includeintmain(){printf("hello,world!");ret

C语言函数是可重复利用的代码块,它接收输入,执行操作,返回结果,可将代码模块化提高可复用性,降低复杂度。函数内部机制包含参数传递、函数执行、返回值,整个过程涉及优化如函数内联。编写好的函数遵循单一职责原则、参数数量少、命名规范、错误处理。指针与函数结合能实现更强大的功能,如修改外部变量值。函数指针将函数作为参数传递或存储地址,用于实现动态调用函数。理解函数特性和技巧是编写高效、可维护、易理解的C语言程序的关键。

探索C语言编程的未定义行为:一本详尽指南本文介绍一本关于C语言编程中未定义行为的电子书,共12章,涵盖了C语言编程中一些最棘手和鲜为人知的方面。本书并非C语言入门教材,而是面向熟悉C语言编程的读者,深入探讨未定义行为的各种情况及其潜在后果。作者DmitrySviridkin,编辑AndreyKarpov。历经六个月的精心准备,这本电子书终于与读者见面。未来还将推出印刷版。本书最初计划包含11章,但在创作过程中,内容不断丰富,最终扩展到12章——这本身就是一个经典的数组越界案例,可谓是每个C程序员

C35 的计算本质上是组合数学,代表从 5 个元素中选择 3 个的组合数,其计算公式为 C53 = 5! / (3! * 2!),可通过循环避免直接计算阶乘以提高效率和避免溢出。另外,理解组合的本质和掌握高效的计算方法对于解决概率统计、密码学、算法设计等领域的许多问题至关重要。

问题描述最近尝试链接一个自行构建的C语言共享库到本地项目时,遇到链接错误,提示“未定义的引用”。错误信息如下:/bin/ld:/tmp/cchb7mj8.o:infunction`sdl_main':main.c:(.text 0x3c):undefinedreferenceto`sdl_enterappmaincallbacks'...(其他类似的未定义引用)...collect2:error:ldreturned1exitstatusmake:***[

学习C语言编程的最佳途径之一就是动手实践。本文将带您逐步完成一个我最近完成的项目:一个简单的电话簿应用程序。此应用演示了C语言中的文件处理和基本数据管理,允许您添加、查看和删除联系人。代码详解以下是完整代码:#include#include//函数声明voidaddcontact(charname[],charnumber[]);voidviewcontacts();voiddeletecontact(c

本文探讨如何在C语言中模拟面向对象编程中的接口概念。我们将以计算车辆价格为例,分别用Java和C语言实现,对比两种语言的差异,并展示如何在C中实现接口的基本功能。Java实现:Java中,接口使用interface关键字定义,类通过implements关键字实现接口。示例代码如下:interfaceVehicle{intprice();}classCarimplementsVehicle{privatefinalintspeed;publi
