AutoML入侵强化学习!Google用「元学习」来强化学习,ICLR2021已接收

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 元学习是一种让机器去学习如何灵活学习解决问题的一种技术。谷歌的新工作使用符号图来表示并应用AutoML的优化技术来学习新的、可解释和可推广的强化学习算法。目前已被ICLR 2021接收。

近年来,AutoML在自动化机器学习的设计方面已经取得了巨大的成功,例如设计神经网络体系结构和模型更新规则

 

神经架构搜索(NAS)是其中一个重要的研究方向,可以用来搜索更好的神经网络架构以用于图像分类等任务,并且可以帮助设计人员在硬件设计上找到速度更快、能耗更低的架构方案。

 

除NAS之外,谷歌之前的研究AutoML-Zero甚至还可以从零开始使用基本数学运算设计一个完整的算法。

 

但这些方法是为监督学习而设计的,总体算法更加简单明了,拿到标签,然后训练。

 

但对于强化学习来说,目标可能没有那么明确,例如采样策略的设计、整体的损失函数等,模型的更新过程并不是很明确,组件搜索的空间也更大。

 

自动化清华学习算法之前的工作主要集中在模型更新规则上。这些方法学习更好的优化器、更新本身的策略,通常用神经网络(RNN或CNN)表示更新规则,使用基于梯度的方法进行优化。

 

但是,这些学习的规则无法解释,也不具有泛化性,因为模型权重的获得过程是不透明的,并且数据也是来源于特定领域的。

 

强化学习算法和计算图


NAS在神经网络体系结构的图的空间中进行搜索,受NAS的想法启发,本文通过将RL算法的损失函数表示为计算图来元学习强化学习算法。

 

在这种情况下,将有向无环图用于损失函数,节点代表输入、运算符、参数和输出,将增强AutoML的可解释性。

 

例如,在DQN的计算图中,输入节点包括来自缓冲区的数据,运算符节点包括神经网络运算符和基本数学运算符,而输出节点表示损失,通过梯度下降法来优化模型。

 

这种表示有一些好处,既能表示现有的算法,也可以定义新的未被发现的算法,并且也是可解释的。

 

如果研究人员可以理解为什么学习的算法更好,那么他们既可以修改算法的内部组成部分来改进它,又可以将有益的组成部分转移到其他问题上。

30.jpg

这种表示形式很容易通过PyGlove库实现,它可以将图形方便地转换为正则化优化的搜索空间。


会进化的RL算法

 

本文提出的强化学习算法是基于进化的方式。

 

首先,我们用随机图初始化一群训练的agent,在一组训练环境中并行训练。agent首先在类似CartPole这样的简单环境上进行训练,目的是快速清除性能不佳的程序。如果agent无法解决简单环境,就会以0分的分数提前停止,否则训练将会进入更难的环境,例如Lunar Lander等,评估算法的性能并将其用于更新整体的权重,在这些训练器中,更有前途的算法会进一步发生变异。

 

为了减少搜索空间,论文中使用功能等效检查器,如果它们在功能上与先前检查过的算法相同,则会跳过实验直到提出新的算法。

 

随着新的变异候选算法的训练和评估,该循环继续进行。在训练结束时,我们选择最佳算法并在一系列看不见的测试环境中评估其性能。

 

实验中的数据规模大概是300个训练器,我们观察到205000个突变后良好的候选进化,需要大约三天的训练时间。我们之所以能够在CPU上进行培训,是因为训练环境非常简单,可以控制训练的计算和能源成本。为了进一步控制训练成本,我们使用人工设计的RL算法(例如DQN)为初始种群播种。

 



31.jpg

我们重点介绍两种发现的算法,它们表现出良好的泛化性能。第一个是DQNReg,它基于DQN,在Q值上额外增加正则平方的Bellman误差。第二个学习的损失函数DQNClipped,Q值的最大值和Bellman误差平方(以常数为模)。两种算法都可以看作是归一化Q值的一种。虽然DQNReg添加了软约束,但DQNClipped可以解释为一种约束优化,如果Q值太大,它将最小化Q值。在训练的早期阶段,高估Q值是一个潜在的问题时,一旦满足此约束条件,损失函数将最小化原始的平方Bellman误差。

 

尽管DQN等基准通常高估了Q值,但我们学到的算法以不同的方式解决了这一问题。DQNReg低估了Q值,而DQNClipped具有与double dqn类似的行为,因为它会缓慢地接近真实值。

 

值得指出的是,当使用DQN进行演化时,这两种算法会不断迭代出现。

 


32.jpg

通常在RL中,泛化是指经过训练的策略,可以跨任务进行泛化。在一组经典控制环境上,学习到的算法可以匹配密集奖励任务(CartPole,Acrobot,LunarLander)上的基线,而在稀疏奖励任务MountainCar上优于DQN 。



33.jpg

在测试各种不同任务的一组稀疏奖励MiniGrid环境中,我们发现DQNReg在样本效率和最终性能方面都大大优于训练和测试环境的基线。实际上,在尺寸、配置和熔岩等新障碍物存在变化的测试环境中,效果甚至更为明显。

34.jpg35.jpg

这些环境的起始位置,墙面配置和对象配置在每次重置时都是随机的,这需要agent进行概括而不是简单地记住环境,尽管DDQN经常努力学习任何有意义的行为,但DQNReg可以更有效地学习最佳行为。

                   36.jpg

无论是在非图像的环境上进行训练,还是在基于图像的Atari环境上,这种表示方法都能带来性能上的提升。这表明,这种元学习算法的通用性。

37.jpg

这篇论文讨论了如何将新的强化学习算法的损失函数表示为计算图,并在此表示形式上扩展多个agent训练来学习新的可解释RL算法。

 

计算图使研究人员既可以建立在人为设计的算法上,又可以使用与现有算法相同的数学工具集来学习算法。这些算法的性能超过之前的baseline系统,并且可以用于非视觉类的任务。

 

文章的作者希望这项工作可以促进机器辅助算法的开发,未来计算元学习可以帮助研究人员找到新的研究方向

相关实践学习
函数计算部署PuLID for FLUX人像写真实现智能换颜效果
只需一张图片,生成程序员专属写真!本次实验在函数计算中内置PuLID for FLUX,您可以通过函数计算+Serverless应用中心一键部署Flux模型,快速体验超写实图像生成的魅力。
相关文章
|
机器学习/深度学习 XML 监控
使用A10单卡24G复现DeepSeek R1强化学习过程
本文描述DeepSeek的三个模型的学习过程,其中DeepSeek-R1-Zero模型所涉及的强化学习算法,是DeepSeek最核心的部分之一会重点展示。
1737 183
使用A10单卡24G复现DeepSeek R1强化学习过程
|
JavaScript Linux 网络安全
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
5468 77
|
监控 数据可视化 项目管理
高效时间管理工具如何帮助优化日常任务管理?2024年6款最优秀软件
在快节奏的现代工作环境中,高效的时间管理和任务协作工具成为提升生产力的关键。2024年,随着工作模式的变化,企业及个人愈发依赖这些工具来优化时间管理、任务分配和团队协作。本文精选了几款高效工具,如板栗看板、ClickUp、Notion、Wrike、Todoist和Evernote,它们各自具备独特优势,适用于不同行业和规模的团队,帮助用户在繁忙的工作中保持高效和有序。
2340 6
高效时间管理工具如何帮助优化日常任务管理?2024年6款最优秀软件
|
PHP 计算机视觉
罗德里格斯公式推导,以及如何使用cv2.Rodrigues进行旋转矩阵和旋转向量之间的相互转化
罗德里格斯公式推导,以及如何使用cv2.Rodrigues进行旋转矩阵和旋转向量之间的相互转化
1203 0
|
12月前
|
机器学习/深度学习 人工智能 算法
面向工业4.0的AI Agent多任务协作与调度系统设计
随着人工智能(AI)技术的飞速发展,智能制造成为现代工业的核心驱动力。传统制造系统在面对多任务、高频次和动态变化的调度需求时,往往效率低下。而基于AI Agent的多任务协作与调度机制为解决这一问题提供了全新思路。本文聚焦于面向智能制造场景中,如何通过AI Agent实现多任务协作调度,并引入强化学习方法进行算法优化。
|
Cloud Native 关系型数据库 Serverless
基于阿里云函数计算(FC)x 云原生 API 网关构建生产级别 LLM Chat 应用方案最佳实践
本文带大家了解一下如何使用阿里云Serverless计算产品函数计算构建生产级别的LLM Chat应用。该最佳实践会指导大家基于开源WebChat组件LobeChat和阿里云函数计算(FC)构建企业生产级别LLM Chat应用。实现同一个WebChat中既可以支持自定义的Agent,也支持基于Ollama部署的开源模型场景。
2182 131
|
数据采集 机器学习/深度学习 PyTorch
Pytorch学习笔记(5):torch.nn---网络层介绍(卷积层、池化层、线性层、激活函数层)
Pytorch学习笔记(5):torch.nn---网络层介绍(卷积层、池化层、线性层、激活函数层)
2147 0
Pytorch学习笔记(5):torch.nn---网络层介绍(卷积层、池化层、线性层、激活函数层)
|
机器学习/深度学习 决策智能 网络架构
C-3PO:多智能体强化学习赋能检索增强生成
C-3PO:多智能体强化学习赋能检索增强生成
706 2
|
机器学习/深度学习 运维 算法
K-Means(K-均值)聚类算法理论和实战
K-Means(K-均值)聚类算法理论和实战
1414 1
|
存储 Java
【数据结构】优先级队列(堆)从实现到应用详解
本文介绍了优先级队列的概念及其底层数据结构——堆。优先级队列根据元素的优先级而非插入顺序进行出队操作。JDK1.8中的`PriorityQueue`使用堆实现,堆分为大根堆和小根堆。大根堆中每个节点的值都不小于其子节点的值,小根堆则相反。文章详细讲解了如何通过数组模拟实现堆,并提供了创建、插入、删除以及获取堆顶元素的具体步骤。此外,还介绍了堆排序及解决Top K问题的应用,并展示了Java中`PriorityQueue`的基本用法和注意事项。
546 5
【数据结构】优先级队列(堆)从实现到应用详解